)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c192e01f67f5af9ddc071a51b3bcb26190dac912","unresolved":false,"context_lines":[{"line_number":14,"context_line":"is_mirrored_vol and specify the pool in which mirrored copy is"},{"line_number":15,"context_line":"stored by mirrored_pool"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":"Implements: blueprint stretch-cluster-svc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I4870bfc1789a57b9083dc8551949943334a20a05"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f044301_aab9bae9","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2017-05-09 17:13:46.000000000","message":"Don\u0027t think you need that","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"volume support is also added for IBM SVC."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"One new property is added in volume type config. User can"},{"line_number":13,"context_line":"specify specify the pool in which mirrored copy is"},{"line_number":14,"context_line":"stored by mirror_pool."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint stretch-cluster-svc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1f013ff3_e7c0522d","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":7},"updated":"2017-05-16 16:22:51.000000000","message":"remove \"specify\"","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"volume support is also added for IBM SVC."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"One new property is added in volume type config. User can"},{"line_number":13,"context_line":"specify specify the pool in which mirrored copy is"},{"line_number":14,"context_line":"stored by mirror_pool."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint stretch-cluster-svc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1f013ff3_84ecd529","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":7},"in_reply_to":"1f013ff3_e7c0522d","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":5280,"context_line":"    # mirror/strtch cluster volume test cases"},{"line_number":5281,"context_line":"    def test_storwize_svc_create_mirror_volume(self):"},{"line_number":5282,"context_line":"        # create mirror volume in invalid pool"},{"line_number":5283,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":5284,"context_line":"                \u0027mirrored_pool\u0027: \u0027invalid_pool\u0027}"},{"line_number":5285,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027invalid_mirror_type\u0027, spec)"},{"line_number":5286,"context_line":"        mirror_vol_type \u003d objects.VolumeType.get_by_id(self.ctxt,"},{"line_number":5287,"context_line":"                                                       type_ref[\u0027id\u0027])"},{"line_number":5288,"context_line":"        vol \u003d self._generate_vol_info(mirror_vol_type)"},{"line_number":5289,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5290,"context_line":"                          self.driver.create_volume, vol)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_9543b613","line":5287,"range":{"start_line":5283,"start_character":8,"end_line":5287,"end_character":70},"updated":"2017-05-10 06:11:39.000000000","message":"you have defined a method for it? why not use the method?","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d1423753b488a7794142bbcc2c7db3bc91ab66c1","unresolved":false,"context_lines":[{"line_number":5280,"context_line":"    # mirror/strtch cluster volume test cases"},{"line_number":5281,"context_line":"    def test_storwize_svc_create_mirror_volume(self):"},{"line_number":5282,"context_line":"        # create mirror volume in invalid pool"},{"line_number":5283,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":5284,"context_line":"                \u0027mirrored_pool\u0027: \u0027invalid_pool\u0027}"},{"line_number":5285,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027invalid_mirror_type\u0027, spec)"},{"line_number":5286,"context_line":"        mirror_vol_type \u003d objects.VolumeType.get_by_id(self.ctxt,"},{"line_number":5287,"context_line":"                                                       type_ref[\u0027id\u0027])"},{"line_number":5288,"context_line":"        vol \u003d self._generate_vol_info(mirror_vol_type)"},{"line_number":5289,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5290,"context_line":"                          self.driver.create_volume, vol)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_a60b2a22","line":5287,"range":{"start_line":5283,"start_character":8,"end_line":5287,"end_character":70},"in_reply_to":"3f044301_9543b613","updated":"2017-05-10 10:53:08.000000000","message":"Thanks. It\u0027s addressed in new patch.","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":5289,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5290,"context_line":"                          self.driver.create_volume, vol)"},{"line_number":5291,"context_line":""},{"line_number":5292,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":5293,"context_line":"                \u0027mirrored_pool\u0027: \u0027openstack1\u0027}"},{"line_number":5294,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027test_mirror_type\u0027, spec)"},{"line_number":5295,"context_line":"        mirror_vol_type \u003d objects.VolumeType.get_by_id(self.ctxt,"},{"line_number":5296,"context_line":"                                                       type_ref[\u0027id\u0027])"},{"line_number":5297,"context_line":"        vol \u003d self._generate_vol_info(mirror_vol_type)"},{"line_number":5298,"context_line":"        self.driver.create_volume(vol)"},{"line_number":5299,"context_line":"        self._assert_vol_exists(vol.name, True)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_3552a2df","line":5296,"range":{"start_line":5292,"start_character":8,"end_line":5296,"end_character":70},"updated":"2017-05-10 06:11:39.000000000","message":"ditto","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d1423753b488a7794142bbcc2c7db3bc91ab66c1","unresolved":false,"context_lines":[{"line_number":5289,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5290,"context_line":"                          self.driver.create_volume, vol)"},{"line_number":5291,"context_line":""},{"line_number":5292,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":5293,"context_line":"                \u0027mirrored_pool\u0027: \u0027openstack1\u0027}"},{"line_number":5294,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027test_mirror_type\u0027, spec)"},{"line_number":5295,"context_line":"        mirror_vol_type \u003d objects.VolumeType.get_by_id(self.ctxt,"},{"line_number":5296,"context_line":"                                                       type_ref[\u0027id\u0027])"},{"line_number":5297,"context_line":"        vol \u003d self._generate_vol_info(mirror_vol_type)"},{"line_number":5298,"context_line":"        self.driver.create_volume(vol)"},{"line_number":5299,"context_line":"        self._assert_vol_exists(vol.name, True)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_c654f600","line":5296,"range":{"start_line":5292,"start_character":8,"end_line":5296,"end_character":70},"in_reply_to":"3f044301_3552a2df","updated":"2017-05-10 10:53:08.000000000","message":"Done","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":5470,"context_line":""},{"line_number":5471,"context_line":"        self.driver.delete_volume(vol1)"},{"line_number":5472,"context_line":""},{"line_number":5473,"context_line":"    def test_storwize_manage_existing_mismatch_with_mirror_volume(self):"},{"line_number":5474,"context_line":"        self.driver.do_setup(self.ctxt)"},{"line_number":5475,"context_line":"        opts1 \u003d {\u0027is_mirrored_vol\u0027: False}"},{"line_number":5476,"context_line":"        opts2 \u003d {\u0027is_mirrored_vol\u0027: True, \u0027mirrored_pool\u0027: \u0027openstack1\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_f5855a5b","line":5473,"range":{"start_line":5473,"start_character":8,"end_line":5473,"end_character":65},"updated":"2017-05-10 06:11:39.000000000","message":"is it possible to use ddt for this test case?","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":6327,"context_line":"                       \u0027create_vdisk\u0027)"},{"line_number":6328,"context_line":"    def test_storwize_svc_create_stretch_volume_with_replication(self,"},{"line_number":6329,"context_line":"                                                                 create_vdisk):"},{"line_number":6330,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":6331,"context_line":"                \u0027mirrored_pool\u0027: \u0027openstack1\u0027,"},{"line_number":6332,"context_line":"                \u0027replication_enabled\u0027: \u0027\u003cis\u003e True\u0027,"},{"line_number":6333,"context_line":"                \u0027replication_type\u0027: \u0027\u003cin\u003e global\u0027"},{"line_number":6334,"context_line":"                }"},{"line_number":6335,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027test_type\u0027, spec)"},{"line_number":6336,"context_line":"        vol_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6337,"context_line":"        vol \u003d self._generate_vol_info(vol_type)"},{"line_number":6338,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":6339,"context_line":"                          self.driver.create_volume, vol)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_75994ac2","line":6336,"range":{"start_line":6330,"start_character":8,"end_line":6336,"end_character":74},"updated":"2017-05-10 06:11:39.000000000","message":"ditto","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d1423753b488a7794142bbcc2c7db3bc91ab66c1","unresolved":false,"context_lines":[{"line_number":6327,"context_line":"                       \u0027create_vdisk\u0027)"},{"line_number":6328,"context_line":"    def test_storwize_svc_create_stretch_volume_with_replication(self,"},{"line_number":6329,"context_line":"                                                                 create_vdisk):"},{"line_number":6330,"context_line":"        spec \u003d {\u0027is_mirrored_vol\u0027: True,"},{"line_number":6331,"context_line":"                \u0027mirrored_pool\u0027: \u0027openstack1\u0027,"},{"line_number":6332,"context_line":"                \u0027replication_enabled\u0027: \u0027\u003cis\u003e True\u0027,"},{"line_number":6333,"context_line":"                \u0027replication_type\u0027: \u0027\u003cin\u003e global\u0027"},{"line_number":6334,"context_line":"                }"},{"line_number":6335,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027test_type\u0027, spec)"},{"line_number":6336,"context_line":"        vol_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6337,"context_line":"        vol \u003d self._generate_vol_info(vol_type)"},{"line_number":6338,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":6339,"context_line":"                          self.driver.create_volume, vol)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_a6e9eab7","line":6336,"range":{"start_line":6330,"start_character":8,"end_line":6336,"end_character":74},"in_reply_to":"3f044301_75994ac2","updated":"2017-05-10 10:53:08.000000000","message":"Done","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":6447,"context_line":"                          self.driver.retype, self.ctxt,"},{"line_number":6448,"context_line":"                          volume, self.gm_type, diff, host)"},{"line_number":6449,"context_line":""},{"line_number":6450,"context_line":"        stretch_spec \u003d {\u0027is_mirrored_vol\u0027: True, \u0027mirrored_pool\u0027: \u0027openstack1\u0027}"},{"line_number":6451,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027stretch_type\u0027, stretch_spec)"},{"line_number":6452,"context_line":"        stretch_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6453,"context_line":"        diff, _equal \u003d volume_types.volume_types_diff("},{"line_number":6454,"context_line":"            self.ctxt, stretch_type[\u0027id\u0027], self.mm_type[\u0027id\u0027])"},{"line_number":6455,"context_line":"        self.assertRaises(exception.VolumeDriverException, self.driver.retype,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_55964e95","line":6452,"range":{"start_line":6450,"start_character":8,"end_line":6452,"end_character":78},"updated":"2017-05-10 06:11:39.000000000","message":"ditto","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d1423753b488a7794142bbcc2c7db3bc91ab66c1","unresolved":false,"context_lines":[{"line_number":6447,"context_line":"                          self.driver.retype, self.ctxt,"},{"line_number":6448,"context_line":"                          volume, self.gm_type, diff, host)"},{"line_number":6449,"context_line":""},{"line_number":6450,"context_line":"        stretch_spec \u003d {\u0027is_mirrored_vol\u0027: True, \u0027mirrored_pool\u0027: \u0027openstack1\u0027}"},{"line_number":6451,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027stretch_type\u0027, stretch_spec)"},{"line_number":6452,"context_line":"        stretch_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6453,"context_line":"        diff, _equal \u003d volume_types.volume_types_diff("},{"line_number":6454,"context_line":"            self.ctxt, stretch_type[\u0027id\u0027], self.mm_type[\u0027id\u0027])"},{"line_number":6455,"context_line":"        self.assertRaises(exception.VolumeDriverException, self.driver.retype,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_0691be47","line":6452,"range":{"start_line":6450,"start_character":8,"end_line":6452,"end_character":78},"in_reply_to":"3f044301_55964e95","updated":"2017-05-10 10:53:08.000000000","message":"Done","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"44f73f2f190c8706689bbfef4c058a02581e3f87","unresolved":false,"context_lines":[{"line_number":6482,"context_line":"        volume, model_update \u003d self._create_test_volume(self.non_replica_type)"},{"line_number":6483,"context_line":"        self.assertIsNone(model_update)"},{"line_number":6484,"context_line":""},{"line_number":6485,"context_line":"        stretch_spec \u003d {\u0027is_mirrored_vol\u0027: True, \u0027mirrored_pool\u0027: \u0027openstack1\u0027,"},{"line_number":6486,"context_line":"                        \u0027replication_enabled\u0027: \u0027\u003cis\u003e True\u0027,"},{"line_number":6487,"context_line":"                        \u0027replication_type\u0027: \u0027\u003cin\u003e metro\u0027}"},{"line_number":6488,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027stretch_type\u0027, stretch_spec)"},{"line_number":6489,"context_line":"        stretch_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6490,"context_line":"        diff, _equal \u003d volume_types.volume_types_diff("},{"line_number":6491,"context_line":"            self.ctxt, stretch_type[\u0027id\u0027], self.non_replica_type[\u0027id\u0027])"},{"line_number":6492,"context_line":"        self.assertRaises(exception.VolumeDriverException, self.driver.retype,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_158c467d","line":6489,"range":{"start_line":6485,"start_character":8,"end_line":6489,"end_character":78},"updated":"2017-05-10 06:11:39.000000000","message":"ditto","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d1423753b488a7794142bbcc2c7db3bc91ab66c1","unresolved":false,"context_lines":[{"line_number":6482,"context_line":"        volume, model_update \u003d self._create_test_volume(self.non_replica_type)"},{"line_number":6483,"context_line":"        self.assertIsNone(model_update)"},{"line_number":6484,"context_line":""},{"line_number":6485,"context_line":"        stretch_spec \u003d {\u0027is_mirrored_vol\u0027: True, \u0027mirrored_pool\u0027: \u0027openstack1\u0027,"},{"line_number":6486,"context_line":"                        \u0027replication_enabled\u0027: \u0027\u003cis\u003e True\u0027,"},{"line_number":6487,"context_line":"                        \u0027replication_type\u0027: \u0027\u003cin\u003e metro\u0027}"},{"line_number":6488,"context_line":"        type_ref \u003d volume_types.create(self.ctxt, \u0027stretch_type\u0027, stretch_spec)"},{"line_number":6489,"context_line":"        stretch_type \u003d objects.VolumeType.get_by_id(self.ctxt, type_ref[\u0027id\u0027])"},{"line_number":6490,"context_line":"        diff, _equal \u003d volume_types.volume_types_diff("},{"line_number":6491,"context_line":"            self.ctxt, stretch_type[\u0027id\u0027], self.non_replica_type[\u0027id\u0027])"},{"line_number":6492,"context_line":"        self.assertRaises(exception.VolumeDriverException, self.driver.retype,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_e668121e","line":6489,"range":{"start_line":6485,"start_character":8,"end_line":6489,"end_character":78},"in_reply_to":"3f044301_158c467d","updated":"2017-05-10 10:53:08.000000000","message":"Done","commit_id":"8cf706859d37a375c324f5f415e986ff21d37419"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c192e01f67f5af9ddc071a51b3bcb26190dac912","unresolved":false,"context_lines":[{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_is_mirrored_vol\u0027,"},{"line_number":124,"context_line":"                default\u003dFalse,"},{"line_number":125,"context_line":"                help\u003d\u0027Specifies whether this volume is a mirror/stretch\u0027"},{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"},{"line_number":127,"context_line":"                     \u0027storwize_svc_mirrored_pool must be set to \u0027"},{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_0aa2eeae","line":125,"updated":"2017-05-09 17:13:46.000000000","message":"add space","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_is_mirrored_vol\u0027,"},{"line_number":124,"context_line":"                default\u003dFalse,"},{"line_number":125,"context_line":"                help\u003d\u0027Specifies whether this volume is a mirror/stretch\u0027"},{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"},{"line_number":127,"context_line":"                     \u0027storwize_svc_mirrored_pool must be set to \u0027"},{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_6f997dc2","line":125,"in_reply_to":"3f044301_0aa2eeae","updated":"2017-05-10 04:31:04.000000000","message":"Hi Alon, thanks for all your comments. It is addressed in new patch.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c192e01f67f5af9ddc071a51b3bcb26190dac912","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"},{"line_number":129,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirrored_pool\u0027,"},{"line_number":130,"context_line":"               default\u003dNone,"},{"line_number":131,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy\u0027"},{"line_number":132,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"},{"line_number":133,"context_line":"]"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_aaae5a95","line":131,"updated":"2017-05-09 17:13:46.000000000","message":"space","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"},{"line_number":129,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirrored_pool\u0027,"},{"line_number":130,"context_line":"               default\u003dNone,"},{"line_number":131,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy\u0027"},{"line_number":132,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"},{"line_number":133,"context_line":"]"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_4f96c195","line":131,"in_reply_to":"3f044301_aaae5a95","updated":"2017-05-10 04:31:04.000000000","message":"Done","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        ssh_cmd \u003d [\u0027svcinfo\u0027, \u0027lsmdiskgrp\u0027, \u0027-bytes\u0027, \u0027-delim\u0027, \u0027!\u0027,"},{"line_number":208,"context_line":"                   \u0027\"%s\"\u0027 % pool]"},{"line_number":209,"context_line":"        try:"},{"line_number":210,"context_line":"            return self.run_ssh_info(ssh_cmd)[0]"},{"line_number":211,"context_line":"        except exception.VolumeBackendAPIException as ex:"},{"line_number":212,"context_line":"            LOG.warning(\"Failed to get pool %(pool)s info. \""},{"line_number":213,"context_line":"                        \"Exception: %(ex)s.\", {\u0027pool\u0027: pool,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_ecb91bcc","line":210,"range":{"start_line":210,"start_character":19,"end_line":210,"end_character":45},"updated":"2017-05-10 01:51:13.000000000","message":"is it possible that self.run_ssh_info(ssh_cmd) returns empty list?","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        ssh_cmd \u003d [\u0027svcinfo\u0027, \u0027lsmdiskgrp\u0027, \u0027-bytes\u0027, \u0027-delim\u0027, \u0027!\u0027,"},{"line_number":208,"context_line":"                   \u0027\"%s\"\u0027 % pool]"},{"line_number":209,"context_line":"        try:"},{"line_number":210,"context_line":"            return self.run_ssh_info(ssh_cmd)[0]"},{"line_number":211,"context_line":"        except exception.VolumeBackendAPIException as ex:"},{"line_number":212,"context_line":"            LOG.warning(\"Failed to get pool %(pool)s info. \""},{"line_number":213,"context_line":"                        \"Exception: %(ex)s.\", {\u0027pool\u0027: pool,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_af0c25ec","line":210,"range":{"start_line":210,"start_character":19,"end_line":210,"end_character":45},"in_reply_to":"3f044301_ecb91bcc","updated":"2017-05-10 04:31:04.000000000","message":"Hi jiamin, thanks for your comments. Good question. No, it should be a VolumeBackendAPIException or a list.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"                reason\u003d_(\u0027If nofmtdisk is set to True, rsize must \u0027"},{"line_number":1099,"context_line":"                         \u0027also be set to -1.\u0027))"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        if opts[\u0027is_mirrored_vol\u0027] and not opts[\u0027mirrored_pool\u0027]:"},{"line_number":1102,"context_line":"            raise exception.InvalidInput("},{"line_number":1103,"context_line":"                reason\u003d_(\u0027If is_mirrored_vol is set to True, \u0027"},{"line_number":1104,"context_line":"                         \u0027storwize_svc_mirrored_pool must be \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_ec07db81","line":1101,"range":{"start_line":1101,"start_character":49,"end_line":1101,"end_character":62},"updated":"2017-05-10 01:51:13.000000000","message":"is it better to verify the mirrored_pool user set is valid or not here?","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":1098,"context_line":"                reason\u003d_(\u0027If nofmtdisk is set to True, rsize must \u0027"},{"line_number":1099,"context_line":"                         \u0027also be set to -1.\u0027))"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        if opts[\u0027is_mirrored_vol\u0027] and not opts[\u0027mirrored_pool\u0027]:"},{"line_number":1102,"context_line":"            raise exception.InvalidInput("},{"line_number":1103,"context_line":"                reason\u003d_(\u0027If is_mirrored_vol is set to True, \u0027"},{"line_number":1104,"context_line":"                         \u0027storwize_svc_mirrored_pool must be \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_0feb19dc","line":1101,"range":{"start_line":1101,"start_character":49,"end_line":1101,"end_character":62},"in_reply_to":"3f044301_ec07db81","updated":"2017-05-10 04:31:04.000000000","message":"Hi jiamin, the check_vdisk_opts is a static method and only verifies the related configure input is illegal or not. It does not verify the storage related info.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":1934,"context_line":"    def change_vdisk_primary_copy(self, vdisk, copy_id):"},{"line_number":1935,"context_line":"        self.ssh.chvdisk(vdisk, [\u0027-primary\u0027, copy_id])"},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"    def migratevdisk(self, vdisk, dest_pool, copy_id\u003d0):"},{"line_number":1938,"context_line":"        self.ssh.migratevdisk(vdisk, dest_pool, copy_id)"},{"line_number":1939,"context_line":""},{"line_number":1940,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_ac0b137b","line":1937,"range":{"start_line":1937,"start_character":45,"end_line":1937,"end_character":52},"updated":"2017-05-10 01:51:13.000000000","message":"there are a lot of places use copy_id, and their default value can be 0, or \u00270\u0027 or None. why?","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":1934,"context_line":"    def change_vdisk_primary_copy(self, vdisk, copy_id):"},{"line_number":1935,"context_line":"        self.ssh.chvdisk(vdisk, [\u0027-primary\u0027, copy_id])"},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"    def migratevdisk(self, vdisk, dest_pool, copy_id\u003d0):"},{"line_number":1938,"context_line":"        self.ssh.migratevdisk(vdisk, dest_pool, copy_id)"},{"line_number":1939,"context_line":""},{"line_number":1940,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_cff65164","line":1937,"range":{"start_line":1937,"start_character":45,"end_line":1937,"end_character":52},"in_reply_to":"3f044301_ac0b137b","updated":"2017-05-10 04:31:04.000000000","message":"Hi jiamin, thanks for your comments. Update 0 to \u00270\u0027. The default value None in lsvdiskcopy means to return both copies.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":2206,"context_line":"        pools \u003d self._get_backend_pools()"},{"line_number":2207,"context_line":"        for pool in pools:"},{"line_number":2208,"context_line":"            if not self._helpers.is_pool_defined(pool):"},{"line_number":2209,"context_line":"                msg \u003d _(\u0027Failed getting details for pool %s.\u0027) % pool"},{"line_number":2210,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":2211,"context_line":""},{"line_number":2212,"context_line":"    def check_for_setup_error(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_2c1f03b8","line":2209,"range":{"start_line":2209,"start_character":16,"end_line":2209,"end_character":19},"updated":"2017-05-10 01:51:13.000000000","message":"don\u0027t need to define msg here, move it to exception.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":2206,"context_line":"        pools \u003d self._get_backend_pools()"},{"line_number":2207,"context_line":"        for pool in pools:"},{"line_number":2208,"context_line":"            if not self._helpers.is_pool_defined(pool):"},{"line_number":2209,"context_line":"                msg \u003d _(\u0027Failed getting details for pool %s.\u0027) % pool"},{"line_number":2210,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":2211,"context_line":""},{"line_number":2212,"context_line":"    def check_for_setup_error(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_8fa16949","line":2209,"range":{"start_line":2209,"start_character":16,"end_line":2209,"end_character":19},"in_reply_to":"3f044301_2c1f03b8","updated":"2017-05-10 04:31:04.000000000","message":"Done","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":3230,"context_line":"            self._helpers.migratevdisk(volume.name, dest_pool,"},{"line_number":3231,"context_line":"                                       copies[\u0027primary\u0027][\u0027copy_id\u0027])"},{"line_number":3232,"context_line":"        else:"},{"line_number":3233,"context_line":"            self.add_vdisk_copy(volume[\u0027name\u0027], dest_pool, vol_type,"},{"line_number":3234,"context_line":"                                auto_delete\u003dTrue)"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        LOG.debug(\u0027leave: migrate_volume: id\u003d%(id)s, host\u003d%(host)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_2c74a3fd","line":3233,"range":{"start_line":3233,"start_character":40,"end_line":3233,"end_character":44},"updated":"2017-05-10 01:51:13.000000000","message":"volume.name?","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":3230,"context_line":"            self._helpers.migratevdisk(volume.name, dest_pool,"},{"line_number":3231,"context_line":"                                       copies[\u0027primary\u0027][\u0027copy_id\u0027])"},{"line_number":3232,"context_line":"        else:"},{"line_number":3233,"context_line":"            self.add_vdisk_copy(volume[\u0027name\u0027], dest_pool, vol_type,"},{"line_number":3234,"context_line":"                                auto_delete\u003dTrue)"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        LOG.debug(\u0027leave: migrate_volume: id\u003d%(id)s, host\u003d%(host)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_6f8a9dbf","line":3233,"range":{"start_line":3233,"start_character":40,"end_line":3233,"end_character":44},"in_reply_to":"3f044301_2c74a3fd","updated":"2017-05-10 04:31:04.000000000","message":"Done","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":3234,"context_line":"                                auto_delete\u003dTrue)"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        LOG.debug(\u0027leave: migrate_volume: id\u003d%(id)s, host\u003d%(host)s\u0027,"},{"line_number":3237,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":3238,"context_line":"        return (True, None)"},{"line_number":3239,"context_line":""},{"line_number":3240,"context_line":"    def _verify_retype_params(self, volume, new_opts, old_opts, need_copy,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_ac59d38e","line":3237,"range":{"start_line":3237,"start_character":33,"end_line":3237,"end_character":35},"updated":"2017-05-10 01:51:13.000000000","message":"volume.id?","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":3234,"context_line":"                                auto_delete\u003dTrue)"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        LOG.debug(\u0027leave: migrate_volume: id\u003d%(id)s, host\u003d%(host)s\u0027,"},{"line_number":3237,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":3238,"context_line":"        return (True, None)"},{"line_number":3239,"context_line":""},{"line_number":3240,"context_line":"    def _verify_retype_params(self, volume, new_opts, old_opts, need_copy,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_4f87e1b6","line":3237,"range":{"start_line":3237,"start_character":33,"end_line":3237,"end_character":35},"in_reply_to":"3f044301_ac59d38e","updated":"2017-05-10 04:31:04.000000000","message":"Done","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":3241,"context_line":"                              change_mirror, new_rep_type, old_rep_type):"},{"line_number":3242,"context_line":"        resp \u003d self._helpers.lsvdiskcopy(volume.name)"},{"line_number":3243,"context_line":"        if old_opts[\u0027is_mirrored_vol\u0027] and len(resp) \u003d\u003d 1:"},{"line_number":3244,"context_line":"            msg \u003d (_(\u0027Unable to retype: volume %s is a mirrorred vol. But it \u0027"},{"line_number":3245,"context_line":"                     \u0027has only one copy in storage.\u0027) % volume.name)"},{"line_number":3246,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3247,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_8c5e1774","line":3244,"range":{"start_line":3244,"start_character":12,"end_line":3244,"end_character":15},"updated":"2017-05-10 01:51:13.000000000","message":"move msg into exception.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c192e01f67f5af9ddc071a51b3bcb26190dac912","unresolved":false,"context_lines":[{"line_number":3247,"context_line":""},{"line_number":3248,"context_line":"        if need_copy:"},{"line_number":3249,"context_line":"            if len(resp) \u003e 1:"},{"line_number":3250,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy.\u0027"},{"line_number":3251,"context_line":"                         \u0027A copy of volume %s exists. Adding another copy \u0027"},{"line_number":3252,"context_line":"                         \u0027would exceed the limit of 2 copies.\u0027) % volume.name)"},{"line_number":3253,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_0a8b0e1f","line":3250,"updated":"2017-05-09 17:13:46.000000000","message":"spaces","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":3247,"context_line":""},{"line_number":3248,"context_line":"        if need_copy:"},{"line_number":3249,"context_line":"            if len(resp) \u003e 1:"},{"line_number":3250,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy.\u0027"},{"line_number":3251,"context_line":"                         \u0027A copy of volume %s exists. Adding another copy \u0027"},{"line_number":3252,"context_line":"                         \u0027would exceed the limit of 2 copies.\u0027) % volume.name)"},{"line_number":3253,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_4fb0018b","line":3250,"in_reply_to":"3f044301_0a8b0e1f","updated":"2017-05-10 04:31:04.000000000","message":"Done","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"cc3dc58e05a4c366bc62bee1c9ad583ddae6ac11","unresolved":false,"context_lines":[{"line_number":3283,"context_line":"            if need_copy or change_mirror:"},{"line_number":3284,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3285,"context_line":"                         \u0027 it is not allowed for replication type. \u0027"},{"line_number":3286,"context_line":"                         \u0027Volume \u003d %s\u0027) % volume[\u0027id\u0027])"},{"line_number":3287,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3288,"context_line":""},{"line_number":3289,"context_line":"        if new_rep_type !\u003d old_rep_type:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_cccd3f32","line":3286,"range":{"start_line":3286,"start_character":50,"end_line":3286,"end_character":52},"updated":"2017-05-10 01:51:13.000000000","message":"volume.id? so many places, please check it by yourself.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"97d93ec5ad307a3ae6e0e27353ce32853ce8ed4e","unresolved":false,"context_lines":[{"line_number":3283,"context_line":"            if need_copy or change_mirror:"},{"line_number":3284,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3285,"context_line":"                         \u0027 it is not allowed for replication type. \u0027"},{"line_number":3286,"context_line":"                         \u0027Volume \u003d %s\u0027) % volume[\u0027id\u0027])"},{"line_number":3287,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3288,"context_line":""},{"line_number":3289,"context_line":"        if new_rep_type !\u003d old_rep_type:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_8f484987","line":3286,"range":{"start_line":3286,"start_character":50,"end_line":3286,"end_character":52},"in_reply_to":"3f044301_cccd3f32","updated":"2017-05-10 04:31:04.000000000","message":"Hi jiamin, thanks for all your comments. It is addressed in new patch.","commit_id":"b61cbcee29ffb8ba8b639c61ce1a527206bbaa96"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"               help\u003d\u0027Specifies the Storwize FlashCopy copy rate to be used \u0027"},{"line_number":121,"context_line":"               \u0027when creating a full volume copy. The default is rate \u0027"},{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_is_mirrored_vol\u0027,"},{"line_number":124,"context_line":"                default\u003dFalse,"},{"line_number":125,"context_line":"                help\u003d\u0027Specifies whether this volume is a mirror/stretch \u0027"},{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_49aa3671","line":123,"updated":"2017-05-10 12:57:37.000000000","message":"Do you really need two properties? Isn\u0027t the mirrored_pool property sufficient to key off of?","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":120,"context_line":"               help\u003d\u0027Specifies the Storwize FlashCopy copy rate to be used \u0027"},{"line_number":121,"context_line":"               \u0027when creating a full volume copy. The default is rate \u0027"},{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_is_mirrored_vol\u0027,"},{"line_number":124,"context_line":"                default\u003dFalse,"},{"line_number":125,"context_line":"                help\u003d\u0027Specifies whether this volume is a mirror/stretch \u0027"},{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_0fcf7c29","line":123,"in_reply_to":"3f044301_49aa3671","updated":"2017-05-11 09:45:32.000000000","message":"In order to simply some functions, such as retype, we add is_mirrored_vol. Actually one property mirror_pool is enough. So update to one property.","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"},{"line_number":127,"context_line":"                     \u0027storwize_svc_mirrored_pool must be set to \u0027"},{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"},{"line_number":129,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirrored_pool\u0027,"},{"line_number":130,"context_line":"               default\u003dNone,"},{"line_number":131,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":132,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_c943e66b","line":129,"updated":"2017-05-10 12:57:37.000000000","message":"nit: mirrored_pool sounds odd when I hear it. What you think of \"mirror_pool\"?","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                     \u0027volume or not. When this option is set to true, \u0027"},{"line_number":127,"context_line":"                     \u0027storwize_svc_mirrored_pool must be set to \u0027"},{"line_number":128,"context_line":"                     \u0027specify the pool where the mirrored copy is stored.\u0027),"},{"line_number":129,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirrored_pool\u0027,"},{"line_number":130,"context_line":"               default\u003dNone,"},{"line_number":131,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":132,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_a89086ee","line":129,"in_reply_to":"3f044301_c943e66b","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"               \u0027stretched_cluster\u0027: cluster_partner,"},{"line_number":1061,"context_line":"               \u0027replication\u0027: False,"},{"line_number":1062,"context_line":"               \u0027nofmtdisk\u0027: config.storwize_svc_vol_nofmtdisk,"},{"line_number":1063,"context_line":"               \u0027mirrored_pool\u0027: config.storwize_svc_mirrored_pool,"},{"line_number":1064,"context_line":"               \u0027is_mirrored_vol\u0027: config.storwize_svc_is_mirrored_vol}"},{"line_number":1065,"context_line":"        return opt"},{"line_number":1066,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_29548a20","line":1063,"updated":"2017-05-10 12:57:37.000000000","message":"nit: same comment on mirrored_pool","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"               \u0027stretched_cluster\u0027: cluster_partner,"},{"line_number":1061,"context_line":"               \u0027replication\u0027: False,"},{"line_number":1062,"context_line":"               \u0027nofmtdisk\u0027: config.storwize_svc_vol_nofmtdisk,"},{"line_number":1063,"context_line":"               \u0027mirrored_pool\u0027: config.storwize_svc_mirrored_pool,"},{"line_number":1064,"context_line":"               \u0027is_mirrored_vol\u0027: config.storwize_svc_is_mirrored_vol}"},{"line_number":1065,"context_line":"        return opt"},{"line_number":1066,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_888dcad4","line":1063,"in_reply_to":"3f044301_29548a20","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"               \u0027nofmtdisk\u0027: config.storwize_svc_vol_nofmtdisk,"},{"line_number":1063,"context_line":"               \u0027mirrored_pool\u0027: config.storwize_svc_mirrored_pool,"},{"line_number":1064,"context_line":"               \u0027is_mirrored_vol\u0027: config.storwize_svc_is_mirrored_vol}"},{"line_number":1065,"context_line":"        return opt"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @staticmethod"},{"line_number":1068,"context_line":"    def check_vdisk_opts(state, opts):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_a9e9bab7","line":1065,"updated":"2017-05-10 12:57:37.000000000","message":"Do we really need to properties? Isn\u0027t mirrored_pool enough?","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"               \u0027nofmtdisk\u0027: config.storwize_svc_vol_nofmtdisk,"},{"line_number":1063,"context_line":"               \u0027mirrored_pool\u0027: config.storwize_svc_mirrored_pool,"},{"line_number":1064,"context_line":"               \u0027is_mirrored_vol\u0027: config.storwize_svc_is_mirrored_vol}"},{"line_number":1065,"context_line":"        return opt"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @staticmethod"},{"line_number":1068,"context_line":"    def check_vdisk_opts(state, opts):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_68c03ee2","line":1065,"in_reply_to":"3f044301_a9e9bab7","updated":"2017-05-11 09:45:32.000000000","message":"See the answer above. And it is removed now.","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"            else:"},{"line_number":1282,"context_line":"                params.extend([\u0027-grainsize\u0027, str(opts[\u0027grainsize\u0027])])"},{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        if add_copies and opts[\u0027is_mirrored_vol\u0027]:"},{"line_number":1285,"context_line":"            params.extend([\u0027-copies\u0027, \u00272\u0027])"},{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"        params.extend([\u0027-easytier\u0027, easytier])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_491fd6b6","line":1284,"updated":"2017-05-10 12:57:37.000000000","message":"Could key off of mirrored_pool","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"            else:"},{"line_number":1282,"context_line":"                params.extend([\u0027-grainsize\u0027, str(opts[\u0027grainsize\u0027])])"},{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        if add_copies and opts[\u0027is_mirrored_vol\u0027]:"},{"line_number":1285,"context_line":"            params.extend([\u0027-copies\u0027, \u00272\u0027])"},{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":"        params.extend([\u0027-easytier\u0027, easytier])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_48c582f0","line":1284,"in_reply_to":"3f044301_491fd6b6","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"        name \u003d \u0027\"%s\"\u0027 % name"},{"line_number":1292,"context_line":"        LOG.debug(\u0027Enter: create_vdisk: vdisk %s.\u0027, name)"},{"line_number":1293,"context_line":"        mdiskgrp \u003d pool"},{"line_number":1294,"context_line":"        if opts[\u0027is_mirrored_vol\u0027]:"},{"line_number":1295,"context_line":"            if not self.is_pool_defined(opts[\u0027mirrored_pool\u0027]):"},{"line_number":1296,"context_line":"                raise exception.InvalidInput("},{"line_number":1297,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_a9377a4d","line":1294,"updated":"2017-05-10 12:57:37.000000000","message":"Seems like you could just remove the is_mirror_vol check completely and use mirrored_pool","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"        name \u003d \u0027\"%s\"\u0027 % name"},{"line_number":1292,"context_line":"        LOG.debug(\u0027Enter: create_vdisk: vdisk %s.\u0027, name)"},{"line_number":1293,"context_line":"        mdiskgrp \u003d pool"},{"line_number":1294,"context_line":"        if opts[\u0027is_mirrored_vol\u0027]:"},{"line_number":1295,"context_line":"            if not self.is_pool_defined(opts[\u0027mirrored_pool\u0027]):"},{"line_number":1296,"context_line":"                raise exception.InvalidInput("},{"line_number":1297,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_28b6b68b","line":1294,"in_reply_to":"3f044301_a9377a4d","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"                raise exception.InvalidInput("},{"line_number":1297,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"},{"line_number":1298,"context_line":"                             \u0027is not valid\u0027) % opts[\u0027mirrored_pool\u0027])"},{"line_number":1299,"context_line":"            mdiskgrp \u003d \u0027%s:%s\u0027 % (pool, opts[\u0027mirrored_pool\u0027])"},{"line_number":1300,"context_line":"        params \u003d self._get_vdisk_create_params("},{"line_number":1301,"context_line":"            opts, add_copies\u003dTrue if opts[\u0027is_mirrored_vol\u0027] else False)"},{"line_number":1302,"context_line":"        self.ssh.mkvdisk(name, size, units, mdiskgrp, opts, params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_6923b2be","line":1299,"updated":"2017-05-10 12:57:37.000000000","message":"Please add a comment on what this line will represent to the SVC. The syntax of the SVC expects pool:mirrored_pool in mdiskgrp.","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"                raise exception.InvalidInput("},{"line_number":1297,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"},{"line_number":1298,"context_line":"                             \u0027is not valid\u0027) % opts[\u0027mirrored_pool\u0027])"},{"line_number":1299,"context_line":"            mdiskgrp \u003d \u0027%s:%s\u0027 % (pool, opts[\u0027mirrored_pool\u0027])"},{"line_number":1300,"context_line":"        params \u003d self._get_vdisk_create_params("},{"line_number":1301,"context_line":"            opts, add_copies\u003dTrue if opts[\u0027is_mirrored_vol\u0027] else False)"},{"line_number":1302,"context_line":"        self.ssh.mkvdisk(name, size, units, mdiskgrp, opts, params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_08bbfa71","line":1299,"in_reply_to":"3f044301_6923b2be","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":2399,"context_line":"        if opts[\u0027is_mirrored_vol\u0027] and rep_type:"},{"line_number":2400,"context_line":"            raise exception.InvalidInput("},{"line_number":2401,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is\u0027"},{"line_number":2402,"context_line":"                         \u0027is not supported now.\u0027))"},{"line_number":2403,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2404,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2405,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_c959a68e","line":2402,"updated":"2017-05-10 12:57:37.000000000","message":"Nit: I would drop the \"now\"","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe83dd04a7a76156c191271ab13a4ab5b15978ca","unresolved":false,"context_lines":[{"line_number":2399,"context_line":"        if opts[\u0027is_mirrored_vol\u0027] and rep_type:"},{"line_number":2400,"context_line":"            raise exception.InvalidInput("},{"line_number":2401,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is\u0027"},{"line_number":2402,"context_line":"                         \u0027is not supported now.\u0027))"},{"line_number":2403,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2404,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2405,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_e8b32e97","line":2402,"in_reply_to":"3f044301_c959a68e","updated":"2017-05-11 09:45:32.000000000","message":"Done","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"            if not self.is_pool_defined(opts[\u0027mirror_pool\u0027]):"},{"line_number":1282,"context_line":"                raise exception.InvalidInput("},{"line_number":1283,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"},{"line_number":1284,"context_line":"                             \u0027is not valid\u0027) % opts[\u0027mirror_pool\u0027])"},{"line_number":1285,"context_line":"            # The syntax of pool SVC expects is pool:mirror_pool in"},{"line_number":1286,"context_line":"            # mdiskgrp for mirror volume"},{"line_number":1287,"context_line":"            mdiskgrp \u003d \u0027%s:%s\u0027 % (pool, opts[\u0027mirror_pool\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_e8c49f61","line":1284,"range":{"start_line":1284,"start_character":33,"end_line":1284,"end_character":42},"updated":"2017-05-16 16:22:51.000000000","message":"invalid","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"            if not self.is_pool_defined(opts[\u0027mirror_pool\u0027]):"},{"line_number":1282,"context_line":"                raise exception.InvalidInput("},{"line_number":1283,"context_line":"                    reason\u003d_(\u0027The pool %s in which mirrored copy is stored \u0027"},{"line_number":1284,"context_line":"                             \u0027is not valid\u0027) % opts[\u0027mirror_pool\u0027])"},{"line_number":1285,"context_line":"            # The syntax of pool SVC expects is pool:mirror_pool in"},{"line_number":1286,"context_line":"            # mdiskgrp for mirror volume"},{"line_number":1287,"context_line":"            mdiskgrp \u003d \u0027%s:%s\u0027 % (pool, opts[\u0027mirror_pool\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_d464d0e7","line":1284,"range":{"start_line":1284,"start_character":33,"end_line":1284,"end_character":42},"in_reply_to":"1f013ff3_e8c49f61","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"            opts \u003d self.get_vdisk_params(config, state, volume_type[\u0027id\u0027],"},{"line_number":1805,"context_line":"                                         volume_type\u003dvolume_type)"},{"line_number":1806,"context_line":"        params \u003d self._get_vdisk_create_params(opts)"},{"line_number":1807,"context_line":"        new_copy_id \u003d self.ssh.addvdiskcopy(vdisk, dest_pool, params,"},{"line_number":1808,"context_line":"                                            auto_delete)"},{"line_number":1809,"context_line":"        return (orig_copy_id, new_copy_id)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    def is_vdisk_copy_synced(self, vdisk, copy_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_2884c7b0","line":1808,"range":{"start_line":1807,"start_character":0,"end_line":1808,"end_character":56},"updated":"2017-05-16 16:22:51.000000000","message":"Don\u0027t you need try...except around this call?","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"            opts \u003d self.get_vdisk_params(config, state, volume_type[\u0027id\u0027],"},{"line_number":1805,"context_line":"                                         volume_type\u003dvolume_type)"},{"line_number":1806,"context_line":"        params \u003d self._get_vdisk_create_params(opts)"},{"line_number":1807,"context_line":"        new_copy_id \u003d self.ssh.addvdiskcopy(vdisk, dest_pool, params,"},{"line_number":1808,"context_line":"                                            auto_delete)"},{"line_number":1809,"context_line":"        return (orig_copy_id, new_copy_id)"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    def is_vdisk_copy_synced(self, vdisk, copy_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_3f706da5","line":1808,"range":{"start_line":1807,"start_character":0,"end_line":1808,"end_character":56},"in_reply_to":"1f013ff3_2884c7b0","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":2387,"context_line":"        if opts[\u0027mirror_pool\u0027] and rep_type:"},{"line_number":2388,"context_line":"            raise exception.InvalidInput("},{"line_number":2389,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is\u0027"},{"line_number":2390,"context_line":"                         \u0027is not supported.\u0027))"},{"line_number":2391,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2392,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2393,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_28ff2735","line":2390,"range":{"start_line":2390,"start_character":26,"end_line":2390,"end_character":28},"updated":"2017-05-16 16:22:51.000000000","message":"remove \"is\"","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":2387,"context_line":"        if opts[\u0027mirror_pool\u0027] and rep_type:"},{"line_number":2388,"context_line":"            raise exception.InvalidInput("},{"line_number":2389,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is\u0027"},{"line_number":2390,"context_line":"                         \u0027is not supported.\u0027))"},{"line_number":2391,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2392,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2393,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_3fa50d05","line":2390,"range":{"start_line":2390,"start_character":26,"end_line":2390,"end_character":28},"in_reply_to":"1f013ff3_28ff2735","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"a1314f2d020fb7860298b01268f5524b19623fcf","unresolved":false,"context_lines":[{"line_number":120,"context_line":"               help\u003d\u0027Specifies the Storwize FlashCopy copy rate to be used \u0027"},{"line_number":121,"context_line":"               \u0027when creating a full volume copy. The default is rate \u0027"},{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_pool\u0027,"},{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_ef882e20","line":123,"updated":"2017-05-30 18:14:42.000000000","message":"we can add this later but it would be useful to have a mirror sync rate option similar to the flash copy rate","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"5a38395ac60855525b1253b5ff882e2a76a803f6","unresolved":false,"context_lines":[{"line_number":120,"context_line":"               help\u003d\u0027Specifies the Storwize FlashCopy copy rate to be used \u0027"},{"line_number":121,"context_line":"               \u0027when creating a full volume copy. The default is rate \u0027"},{"line_number":122,"context_line":"               \u0027is 50, and the valid rates are 1-100.\u0027),"},{"line_number":123,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_pool\u0027,"},{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_be281834","line":123,"in_reply_to":"df140735_ef882e20","updated":"2017-05-31 09:46:00.000000000","message":"Hi Gerald, thanks for your comments. Good suggestion，we can add this later.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_pool\u0027,"},{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_d9cac618","line":126,"range":{"start_line":126,"start_character":21,"end_line":126,"end_character":22},"updated":"2017-05-31 10:50:26.000000000","message":"Extra space here.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_pool\u0027,"},{"line_number":124,"context_line":"               default\u003dNone,"},{"line_number":125,"context_line":"               help\u003d\u0027Specifies the name of the pool in which mirrored copy \u0027"},{"line_number":126,"context_line":"                    \u0027 is stored. Example: \"pool2\"\u0027),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_e6ea6baa","line":126,"range":{"start_line":126,"start_character":21,"end_line":126,"end_character":22},"in_reply_to":"df140735_d9cac618","updated":"2017-06-01 06:56:11.000000000","message":"Done","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                             snapshot[\u0027volume_type_id\u0027])"},{"line_number":1389,"context_line":"                volume \u003d snapshot.volume"},{"line_number":1390,"context_line":"                if not volume:"},{"line_number":1391,"context_line":"                    msg \u003d (_(\"Can\u0027t get volume from snapshot %(id)s\")"},{"line_number":1392,"context_line":"                           % {\"id\": snapshot.id})"},{"line_number":1393,"context_line":"                    LOG.error(msg)"},{"line_number":1394,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_d4028d09","line":1391,"range":{"start_line":1391,"start_character":52,"end_line":1391,"end_character":60},"updated":"2017-05-31 10:50:26.000000000","message":"snapshot:","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                             snapshot[\u0027volume_type_id\u0027])"},{"line_number":1389,"context_line":"                volume \u003d snapshot.volume"},{"line_number":1390,"context_line":"                if not volume:"},{"line_number":1391,"context_line":"                    msg \u003d (_(\"Can\u0027t get volume from snapshot %(id)s\")"},{"line_number":1392,"context_line":"                           % {\"id\": snapshot.id})"},{"line_number":1393,"context_line":"                    LOG.error(msg)"},{"line_number":1394,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_260aa389","line":1391,"range":{"start_line":1391,"start_character":52,"end_line":1391,"end_character":60},"in_reply_to":"df140735_d4028d09","updated":"2017-06-01 06:56:11.000000000","message":"Done","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"        for pool in pools:"},{"line_number":2210,"context_line":"            if not self._helpers.is_pool_defined(pool):"},{"line_number":2211,"context_line":"                raise exception.InvalidInput("},{"line_number":2212,"context_line":"                    reason\u003d_(\u0027Failed getting details for pool %s.\u0027) % pool)"},{"line_number":2213,"context_line":""},{"line_number":2214,"context_line":"    def check_for_setup_error(self):"},{"line_number":2215,"context_line":"        \"\"\"Ensure that the flags are set properly.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_d4504d0d","line":2212,"range":{"start_line":2212,"start_character":20,"end_line":2212,"end_character":75},"updated":"2017-05-31 10:50:26.000000000","message":"This is inconsistent with how you are doing your other errors.  Could you move your reason out of the exception and then just have exception.InvalidINput(reason) .","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"        for pool in pools:"},{"line_number":2210,"context_line":"            if not self._helpers.is_pool_defined(pool):"},{"line_number":2211,"context_line":"                raise exception.InvalidInput("},{"line_number":2212,"context_line":"                    reason\u003d_(\u0027Failed getting details for pool %s.\u0027) % pool)"},{"line_number":2213,"context_line":""},{"line_number":2214,"context_line":"    def check_for_setup_error(self):"},{"line_number":2215,"context_line":"        \"\"\"Ensure that the flags are set properly.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_6603fb10","line":2212,"range":{"start_line":2212,"start_character":20,"end_line":2212,"end_character":75},"in_reply_to":"df140735_d4504d0d","updated":"2017-06-01 06:56:11.000000000","message":"Hi, Jay, thanks a lot for your comments. It\u0027s addressed in new patch.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":2399,"context_line":""},{"line_number":2400,"context_line":"        pool \u003d utils.extract_host(volume[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":2401,"context_line":"        if opts[\u0027mirror_pool\u0027] and rep_type:"},{"line_number":2402,"context_line":"            raise exception.InvalidInput("},{"line_number":2403,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is \u0027"},{"line_number":2404,"context_line":"                         \u0027not supported.\u0027))"},{"line_number":2405,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2406,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2407,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_1446c550","line":2404,"range":{"start_line":2402,"start_character":1,"end_line":2404,"end_character":43},"updated":"2017-05-31 10:50:26.000000000","message":"Same comment here.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":2399,"context_line":""},{"line_number":2400,"context_line":"        pool \u003d utils.extract_host(volume[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":2401,"context_line":"        if opts[\u0027mirror_pool\u0027] and rep_type:"},{"line_number":2402,"context_line":"            raise exception.InvalidInput("},{"line_number":2403,"context_line":"                reason\u003d_(\u0027Create mirror volume with replication enabled is \u0027"},{"line_number":2404,"context_line":"                         \u0027not supported.\u0027))"},{"line_number":2405,"context_line":"        opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state, opts)"},{"line_number":2406,"context_line":"        self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":2407,"context_line":"                                   \u0027gb\u0027, pool, opts)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_7c038cb9","line":2404,"range":{"start_line":2402,"start_character":1,"end_line":2404,"end_character":43},"in_reply_to":"df140735_1446c550","updated":"2017-06-01 06:56:11.000000000","message":"Done","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                  {\u0027id\u0027: volume.id, \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":3241,"context_line":"        return (True, None)"},{"line_number":3242,"context_line":""},{"line_number":3243,"context_line":"    def _verify_retype_params(self, volume, new_opts, old_opts, need_copy,"},{"line_number":3244,"context_line":"                              change_mirror, new_rep_type, old_rep_type):"},{"line_number":3245,"context_line":"        resp \u003d self._helpers.lsvdiskcopy(volume.name)"},{"line_number":3246,"context_line":"        if old_opts[\u0027mirror_pool\u0027] and len(resp) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_9481b54d","line":3243,"range":{"start_line":3243,"start_character":7,"end_line":3243,"end_character":30},"updated":"2017-05-31 10:50:26.000000000","message":"This is kind of complicated.  I think it would be helpful to have a comment here explaining the checks happening and why.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":3240,"context_line":"                  {\u0027id\u0027: volume.id, \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":3241,"context_line":"        return (True, None)"},{"line_number":3242,"context_line":""},{"line_number":3243,"context_line":"    def _verify_retype_params(self, volume, new_opts, old_opts, need_copy,"},{"line_number":3244,"context_line":"                              change_mirror, new_rep_type, old_rep_type):"},{"line_number":3245,"context_line":"        resp \u003d self._helpers.lsvdiskcopy(volume.name)"},{"line_number":3246,"context_line":"        if old_opts[\u0027mirror_pool\u0027] and len(resp) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_7f36dee8","line":3243,"range":{"start_line":3243,"start_character":7,"end_line":3243,"end_character":30},"in_reply_to":"df140735_9481b54d","updated":"2017-06-01 06:56:11.000000000","message":"Some volume parameters can not be changed or changed at the same time. So this function is to verify the retype parameters. Comments will be added here.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3257,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":3258,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3259,"context_line":"                         \u0027 it is not allowed for mirror volume \u0027"},{"line_number":3260,"context_line":"                         \u0027%s.\u0027) % volume.name)"},{"line_number":3261,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_54655de0","line":3259,"range":{"start_line":3259,"start_character":26,"end_line":3259,"end_character":27},"updated":"2017-05-31 10:50:26.000000000","message":"move space to EOL above for consistency.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3257,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":3258,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3259,"context_line":"                         \u0027 it is not allowed for mirror volume \u0027"},{"line_number":3260,"context_line":"                         \u0027%s.\u0027) % volume.name)"},{"line_number":3261,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_5c1d68bb","line":3259,"range":{"start_line":3259,"start_character":26,"end_line":3259,"end_character":27},"in_reply_to":"df140735_54655de0","updated":"2017-06-01 06:56:11.000000000","message":"Done","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2ac3f0d4e536c17ca03d09c8daaa7bf3ebe068aa","unresolved":false,"context_lines":[{"line_number":3273,"context_line":"            # If volume is replicated, can\u0027t copy"},{"line_number":3274,"context_line":"            if need_copy or new_opts[\u0027mirror_pool\u0027] or old_opts[\u0027mirror_pool\u0027]:"},{"line_number":3275,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3276,"context_line":"                         \u0027 it is not allowed for replication type. \u0027"},{"line_number":3277,"context_line":"                         \u0027Volume \u003d %s\u0027) % volume.id)"},{"line_number":3278,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_d49e0db7","line":3276,"range":{"start_line":3276,"start_character":25,"end_line":3276,"end_character":27},"updated":"2017-05-31 10:50:26.000000000","message":"Same comment as above.","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"cb665d4a73106c65c47babcb397ec34c91470855","unresolved":false,"context_lines":[{"line_number":3273,"context_line":"            # If volume is replicated, can\u0027t copy"},{"line_number":3274,"context_line":"            if need_copy or new_opts[\u0027mirror_pool\u0027] or old_opts[\u0027mirror_pool\u0027]:"},{"line_number":3275,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy,\u0027"},{"line_number":3276,"context_line":"                         \u0027 it is not allowed for replication type. \u0027"},{"line_number":3277,"context_line":"                         \u0027Volume \u003d %s\u0027) % volume.id)"},{"line_number":3278,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_3c7ab4f0","line":3276,"range":{"start_line":3276,"start_character":25,"end_line":3276,"end_character":27},"in_reply_to":"df140735_d49e0db7","updated":"2017-06-01 06:56:11.000000000","message":"Done","commit_id":"a9c64330ec2917a02e5700e1552c9d7e2c948b7b"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        2.2.1 - Add vdisk mirror/stretch cluster support"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    VERSION \u003d \"2.2\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":98,"context_line":"    CI_WIKI_NAME \u003d \"IBM_STORAGE_CI\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_a8d69726","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":19},"updated":"2017-05-16 16:22:51.000000000","message":"Update to 2.2.1","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        2.2.1 - Add vdisk mirror/stretch cluster support"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    VERSION \u003d \"2.2\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":98,"context_line":"    CI_WIKI_NAME \u003d \"IBM_STORAGE_CI\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_c48c1d81","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":19},"in_reply_to":"1f013ff3_a8d69726","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"fc9b8fe2dc0cd5e63863a6f20fb29b7474a12ec8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        2.2.1 - Add vdisk mirror/stretch cluster support"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    VERSION \u003d \"2.2\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":98,"context_line":"    CI_WIKI_NAME \u003d \"IBM_STORAGE_CI\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_682bef2f","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":19},"updated":"2017-05-16 16:22:51.000000000","message":"Need to update this to 2.2.1 as well","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"e52aa34012ff5adddee021937b99ea0808df160a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        2.2.1 - Add vdisk mirror/stretch cluster support"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    VERSION \u003d \"2.2\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":98,"context_line":"    CI_WIKI_NAME \u003d \"IBM_STORAGE_CI\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_e491599b","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":19},"in_reply_to":"1f013ff3_682bef2f","updated":"2017-05-17 05:31:57.000000000","message":"Done","commit_id":"7d064a7aeda0e4602ad6964a0586120a1439e58a"}],"releasenotes/notes/ibm-storwzie-mirror-volume-ffe4c9bde78cdf1d.yaml":[{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"c7d2ecbf85d78823f6a69c1666d0435db9588f5a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add mirrored/stretch cluster volume support in IBM SVC/Storwize driver."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f044301_6c3aa0cc","line":3,"updated":"2017-05-10 12:57:37.000000000","message":"nit would you just want to say\n\nAdd mirrored volume support in IBM SVC/Storwize Driver?\n\nSince the driver is creating a mirror ... some happen to be local and some happen to be part of a stretch cluster relationship.","commit_id":"45f7d63e50471a4cca3aa1495a81974bb2f62fe7"}]}
