)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ebb38354e1e85e16c60001fcddcaf57857c124f8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch implements the Huawei driver refactor, which to make"},{"line_number":11,"context_line":"the code much more clear, reliable and maintainable."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO: UT refactor is under way."},{"line_number":14,"context_line":"Change-Id: Iffd47554f5bad6088f76b53fb58e3d5711de5a5a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_28b0bddc","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":31},"updated":"2017-11-29 21:55:50.000000000","message":"Is this relevant for this patch?","commit_id":"90be750d394d82a8e5ede75914950b7069ab4f6e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f83c5632f35a46ada89630033cbe66bf2510b336","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch implements the Huawei driver refactor, which to make"},{"line_number":11,"context_line":"the code much more clear, reliable and maintainable."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO: UT refactor is under way."},{"line_number":14,"context_line":"Change-Id: Iffd47554f5bad6088f76b53fb58e3d5711de5a5a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9f91af0f_a8511a11","line":13,"updated":"2017-12-28 13:20:39.000000000","message":"Is there an estimate when this patch will be ready?","commit_id":"c4027d591164688b5035dcce65b1f58b8c6c0621"}],"cinder/tests/unit/volume/drivers/huawei/test_huawei_conf.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"650486c7d856984fcc73e9ba7755791618ce9e13","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class HuaweiConfTestCase(test.TestCase):"},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(HuaweiConfTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.tmp_dir \u003d tempfile.mkdtemp()"},{"line_number":28,"context_line":"        conf \u003d mock.Mock()"},{"line_number":29,"context_line":"        conf.cinder_huawei_conf_file \u003d self.tmp_dir + \u0027/cinder_huawei_conf.xml\u0027"},{"line_number":30,"context_line":"        self._create_fake_conf_file(conf.cinder_huawei_conf_file)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_760f89df","line":27,"updated":"2018-04-14 11:07:00.000000000","message":"Unit tests shouldn\u0027t create any files or directories","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2d09ba7440e1171b08598390159e72380af514a4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class HuaweiConfTestCase(test.TestCase):"},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(HuaweiConfTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.tmp_dir \u003d tempfile.mkdtemp()"},{"line_number":28,"context_line":"        conf \u003d mock.Mock()"},{"line_number":29,"context_line":"        conf.cinder_huawei_conf_file \u003d self.tmp_dir + \u0027/cinder_huawei_conf.xml\u0027"},{"line_number":30,"context_line":"        self._create_fake_conf_file(conf.cinder_huawei_conf_file)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_40593ffc","line":27,"in_reply_to":"bf659307_760f89df","updated":"2018-04-16 04:21:38.000000000","message":"Hi Ivan, thanks for your comments.\nI see some other UTs also create temp files like this and use them in test cases, so is this for sure?","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"}],"cinder/tests/unit/volume/drivers/huawei/test_huawei_drivers.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"321632fe8a56eaed0eb8a903bf39f1005347b3d1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ddt"},{"line_number":17,"context_line":"import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_fa119f5e","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":11},"updated":"2017-10-24 11:30:55.000000000","message":"from cinder import test","commit_id":"0e6b46e10fbc8f39d0c3ef450d9d643ad846a2c3"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"1955b5b89821461316ce7286c94db8097524b0cd","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ddt"},{"line_number":17,"context_line":"import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_b291d5f3","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":11},"in_reply_to":"3f4b6375_fa119f5e","updated":"2017-10-26 02:01:03.000000000","message":"Done. Thanks Yikun.","commit_id":"0e6b46e10fbc8f39d0c3ef450d9d643ad846a2c3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"321632fe8a56eaed0eb8a903bf39f1005347b3d1","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"@ddt.ddt"},{"line_number":21,"context_line":"class HuaweiDriverTest(test.TestCase):"},{"line_number":22,"context_line":"    def setUp(self):"},{"line_number":23,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_9a5e2b42","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":38},"updated":"2017-10-24 11:30:55.000000000","message":"AttributeError: \u0027module\u0027 object has no attribute \u0027TestCase\u0027\n\nseems we need fix import. : )\n\ns/import test/from cinder import test/","commit_id":"0e6b46e10fbc8f39d0c3ef450d9d643ad846a2c3"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ee7e70c85ab9b36a9d580e0d0ec7747a1fba0bdc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":34,"context_line":"PWD_EXPIRED_OR_INITIAL \u003d (3, 4)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LUN_STATUS \u003d (LUN_ONLINE, LUN_INITIALIZING, LUN_OFFLINE) \u003d (\u002727\u0027, \u002753\u0027, \u002728\u0027)"},{"line_number":37,"context_line":"SNAPSHOT_STATUS \u003d ("},{"line_number":38,"context_line":"    SNAPSHOT_INITIALIZING, SNAPSHOT_ACTIVATED, SNAPSHOT_UNACTIVATED"},{"line_number":39,"context_line":") \u003d (\u002753\u0027, \u002743\u0027, \u002745\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_cac381ec","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":77},"updated":"2018-04-12 12:45:14.000000000","message":"This is a really weird construct.\n\nYou should consider using Enums for this...  (and the other instances below)","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":34,"context_line":"PWD_EXPIRED_OR_INITIAL \u003d (3, 4)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LUN_STATUS \u003d (LUN_ONLINE, LUN_INITIALIZING, LUN_OFFLINE) \u003d (\u002727\u0027, \u002753\u0027, \u002728\u0027)"},{"line_number":37,"context_line":"SNAPSHOT_STATUS \u003d ("},{"line_number":38,"context_line":"    SNAPSHOT_INITIALIZING, SNAPSHOT_ACTIVATED, SNAPSHOT_UNACTIVATED"},{"line_number":39,"context_line":") \u003d (\u002753\u0027, \u002743\u0027, \u002745\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_ec3def2c","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":77},"in_reply_to":"bf659307_cac381ec","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"}],"cinder/volume/drivers/huawei/huawei_base_driver.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"00be9c2d3d7aebcb81befb9bf8990f4a648d9369","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class HuaweiBaseDriver(object):"},{"line_number":55,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":58,"context_line":"        super(HuaweiBaseDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_2a6d5d31","line":55,"range":{"start_line":55,"start_character":4,"end_line":55,"end_character":21},"updated":"2018-04-12 12:41:30.000000000","message":"This should start at 3.0.0 for continuity with previous driver versioning.","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class HuaweiBaseDriver(object):"},{"line_number":55,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":58,"context_line":"        super(HuaweiBaseDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_6c131fba","line":55,"range":{"start_line":55,"start_character":4,"end_line":55,"end_character":21},"in_reply_to":"bf659307_2a6d5d31","updated":"2018-04-16 04:14:19.000000000","message":"Done. Moved this VERSION to the definitions of HuaweiISCSIDriver and HuaweiFCDriver.","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"650486c7d856984fcc73e9ba7755791618ce9e13","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if not self.configuration:"},{"line_number":61,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":62,"context_line":"            LOG.error(msg)"},{"line_number":63,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.configuration.append_config_values(huawei_opts)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_d6ff75a8","line":63,"updated":"2018-04-14 11:07:00.000000000","message":"InvalidConfigurationValue should be used here instead of InvalidInput exception","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if not self.configuration:"},{"line_number":61,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":62,"context_line":"            LOG.error(msg)"},{"line_number":63,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.configuration.append_config_values(huawei_opts)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_4c12dbb3","line":63,"in_reply_to":"bf659307_d6ff75a8","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"650486c7d856984fcc73e9ba7755791618ce9e13","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            huawei_flow.delete_volume("},{"line_number":275,"context_line":"                volume, self.local_cli, self.hypermetro_rmt_cli,"},{"line_number":276,"context_line":"                self.replication_rmt_cli, self.configuration)"},{"line_number":277,"context_line":"        except Exception as exc:"},{"line_number":278,"context_line":"            if huawei_utils.is_not_exist_exc(exc):"},{"line_number":279,"context_line":"                return"},{"line_number":280,"context_line":"            LOG.exception(\u0027Delete volume %s failed.\u0027, volume.id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_f6fab9b7","line":277,"updated":"2018-04-14 11:07:00.000000000","message":"Can we catch less general exception here and below?","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            huawei_flow.delete_volume("},{"line_number":275,"context_line":"                volume, self.local_cli, self.hypermetro_rmt_cli,"},{"line_number":276,"context_line":"                self.replication_rmt_cli, self.configuration)"},{"line_number":277,"context_line":"        except Exception as exc:"},{"line_number":278,"context_line":"            if huawei_utils.is_not_exist_exc(exc):"},{"line_number":279,"context_line":"                return"},{"line_number":280,"context_line":"            LOG.exception(\u0027Delete volume %s failed.\u0027, volume.id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_6c19df86","line":277,"in_reply_to":"bf659307_f6fab9b7","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5174f5271196abd7baaec6b9f1f70f546df8bbfe","unresolved":false,"context_lines":[{"line_number":1900,"context_line":"        2.0.9 - Support reporting disk type of pool"},{"line_number":1901,"context_line":"    \"\"\""},{"line_number":1902,"context_line":""},{"line_number":1903,"context_line":"    VERSION \u003d \"2.0.9\""},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":1906,"context_line":"        super(HuaweiISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_7566dbc3","side":"PARENT","line":1903,"range":{"start_line":1903,"start_character":4,"end_line":1903,"end_character":11},"updated":"2018-03-30 13:08:18.000000000","message":"VERSION still needs to be set on each concrete driver implementation.\n\nThe version history in the docstring should also be kept. That is useful information to know, and it is pulled into the published driver list documentation.","commit_id":"575d7c855e36eda91f85fcd4d61d1870d5185b5c"}],"cinder/volume/drivers/huawei/huawei_flow.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5174f5271196abd7baaec6b9f1f70f546df8bbfe","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ipaddress"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_150c3fea","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":10},"updated":"2018-03-30 13:08:18.000000000","message":"I didn\u0027t comment on earlier files, but now that I found something that definitely requires an update, I\u0027ll mention it here.\n\nThere should be three import groups - standard modules, third party modules, then local modules. Please go through each of these files and rearrange the imports to follow that grouping.","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ipaddress"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_8c1eb36e","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":10},"in_reply_to":"bf659307_150c3fea","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5174f5271196abd7baaec6b9f1f70f546df8bbfe","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                target_eths.append(ip_iqn_map[normalized_ip][1])"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        if not target_ips or not target_iqns or not target_eths:"},{"line_number":973,"context_line":"            msg \u003d _(\u0027Get iSCSI target ip\u0026iqn\u0026eth error.\u0027)"},{"line_number":974,"context_line":"            LOG.error(msg)"},{"line_number":975,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_55bdd7d5","line":973,"range":{"start_line":973,"start_character":40,"end_line":973,"end_character":41},"updated":"2018-03-30 13:08:18.000000000","message":"Please put spaces around the \"\u0026\". Or commas \"ip, iqn, eth\"","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                target_eths.append(ip_iqn_map[normalized_ip][1])"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        if not target_ips or not target_iqns or not target_eths:"},{"line_number":973,"context_line":"            msg \u003d _(\u0027Get iSCSI target ip\u0026iqn\u0026eth error.\u0027)"},{"line_number":974,"context_line":"            LOG.error(msg)"},{"line_number":975,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_2c13e768","line":973,"range":{"start_line":973,"start_character":40,"end_line":973,"end_character":41},"in_reply_to":"bf659307_55bdd7d5","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5174f5271196abd7baaec6b9f1f70f546df8bbfe","unresolved":false,"context_lines":[{"line_number":1695,"context_line":"    work_flow.add("},{"line_number":1696,"context_line":"        LunOptsCheckTask(feature_support),"},{"line_number":1697,"context_line":"        CheckSnapshotExistTask(local_cli),"},{"line_number":1698,"context_line":"        CreateLunTask(local_cli, configuration),"},{"line_number":1699,"context_line":"        WaitLunOnlineTask(local_cli),"},{"line_number":1700,"context_line":"        CreateLunCopyTask(local_cli, feature_support),"},{"line_number":1701,"context_line":"        WaitLunCopyDoneTask(local_cli),"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_959b6f71","line":1698,"updated":"2018-03-30 13:08:18.000000000","message":"I don\u0027t see anything here that looks at the newly requested size. Can you point out where the handling is for the case where the new volume is requested at a larger size than the snapshot?","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":1695,"context_line":"    work_flow.add("},{"line_number":1696,"context_line":"        LunOptsCheckTask(feature_support),"},{"line_number":1697,"context_line":"        CheckSnapshotExistTask(local_cli),"},{"line_number":1698,"context_line":"        CreateLunTask(local_cli, configuration),"},{"line_number":1699,"context_line":"        WaitLunOnlineTask(local_cli),"},{"line_number":1700,"context_line":"        CreateLunCopyTask(local_cli, feature_support),"},{"line_number":1701,"context_line":"        WaitLunCopyDoneTask(local_cli),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_4c189b80","line":1698,"in_reply_to":"bf659307_959b6f71","updated":"2018-04-16 04:14:19.000000000","message":"Hi Sean. Please see the line 96 of “execute”interface definition of CreateLunTask, where the volume size is specified.","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"}],"cinder/volume/drivers/huawei/hypermetro.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5174f5271196abd7baaec6b9f1f70f546df8bbfe","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def _stop_hypermetro_if_need(self, metro_id):"},{"line_number":245,"context_line":"        metro_info \u003d self.local_cli.get_hypermetro_by_id(metro_id)"},{"line_number":246,"context_line":"        if ((metro_info[\u0027HEALTHSTATUS\u0027] \u003d\u003d constants.METRO_HEALTH_NORMAL"},{"line_number":247,"context_line":"             ) and metro_info[\u0027RUNNINGSTATUS\u0027] in ("},{"line_number":248,"context_line":"                constants.METRO_RUNNING_NORMAL,"},{"line_number":249,"context_line":"                constants.METRO_RUNNING_SYNC)):"},{"line_number":250,"context_line":"            self.local_cli.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_55907743","line":247,"range":{"start_line":247,"start_character":13,"end_line":247,"end_character":14},"updated":"2018-03-30 13:08:18.000000000","message":"nit: () not needed around the HEALTHSTATUS check.","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"8a5bf0c58a8a9f72a45d3b66f2a8b7fc5c4885bc","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def _stop_hypermetro_if_need(self, metro_id):"},{"line_number":245,"context_line":"        metro_info \u003d self.local_cli.get_hypermetro_by_id(metro_id)"},{"line_number":246,"context_line":"        if ((metro_info[\u0027HEALTHSTATUS\u0027] \u003d\u003d constants.METRO_HEALTH_NORMAL"},{"line_number":247,"context_line":"             ) and metro_info[\u0027RUNNINGSTATUS\u0027] in ("},{"line_number":248,"context_line":"                constants.METRO_RUNNING_NORMAL,"},{"line_number":249,"context_line":"                constants.METRO_RUNNING_SYNC)):"},{"line_number":250,"context_line":"            self.local_cli.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_407dbf6c","line":247,"range":{"start_line":247,"start_character":13,"end_line":247,"end_character":14},"in_reply_to":"bf659307_55907743","updated":"2018-04-16 04:14:19.000000000","message":"Done","commit_id":"8eb282c3475fae15d65d8a8bc480c4fc6368655f"}]}
