)]}'
{"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"93995441da2c422f1552d6ea73ba97b0ec68f1cb","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                           \u0027ID\u0027: \u00270\u0027,"},{"line_number":171,"context_line":"                           \u0027TOTALCAPACITY\u0027: \u0027985661440\u0027}"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"FAKE_CREATE_VOLUME_RESPONSE \u003d {\"ID\": \"1\","},{"line_number":174,"context_line":"                               \"NAME\": \"5mFHcBv4RkCcD+JyrWc0SA\"}"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a7b0d38_e08523ad","line":173,"range":{"start_line":173,"start_character":0,"end_line":173,"end_character":27},"updated":"2015-12-24 09:07:50.000000000","message":"This value is exactly the same with line 199","commit_id":"046c8793d4b56ffe1d4a690a3b1f442b7816c504"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"62f97f6329fd7380b49eaf8494dfc9d5edf46172","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                           \u0027ID\u0027: \u00270\u0027,"},{"line_number":171,"context_line":"                           \u0027TOTALCAPACITY\u0027: \u0027985661440\u0027}"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"FAKE_CREATE_VOLUME_RESPONSE \u003d {\"ID\": \"1\","},{"line_number":174,"context_line":"                               \"NAME\": \"5mFHcBv4RkCcD+JyrWc0SA\"}"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a7b0d38_bbcbca52","line":173,"range":{"start_line":173,"start_character":0,"end_line":173,"end_character":27},"in_reply_to":"1a7b0d38_e08523ad","updated":"2015-12-25 03:56:48.000000000","message":"Done","commit_id":"046c8793d4b56ffe1d4a690a3b1f442b7816c504"}],"cinder/tests/unit/windows/test_huawei_drivers.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1017cd11214c41468f9b5c3a3923d03d560c99d5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":"from xml.dom import minidom"},{"line_number":23,"context_line":"from xml.etree import ElementTree as ET"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_81a605a9","line":23,"updated":"2015-12-14 16:19:57.000000000","message":"Remove this as there is nothing using ET.","commit_id":"ddae451fa7281a6f5ba3bea5d8fc0fcb25f191dd"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"d67732322d5948ff46d287944c5c6caf27c602d7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":"import time"},{"line_number":22,"context_line":"from xml.dom import minidom"},{"line_number":23,"context_line":"from xml.etree import ElementTree as ET"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_5a468d24","line":23,"in_reply_to":"7a740942_81a605a9","updated":"2015-12-25 03:57:41.000000000","message":"Done","commit_id":"ddae451fa7281a6f5ba3bea5d8fc0fcb25f191dd"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1017cd11214c41468f9b5c3a3923d03d560c99d5","unresolved":false,"context_lines":[{"line_number":2494,"context_line":"                      \u0027ALUA\u0027: \u00271\u0027,"},{"line_number":2495,"context_line":"                      \u0027TargetPortGroup\u0027: \u0027PortGroup001\u0027, }"},{"line_number":2496,"context_line":"        self.assertEqual(self.conf.iscsi_info, [iscsi_info])"},{"line_number":2497,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_c1ce4d59","line":2497,"updated":"2015-12-14 16:19:57.000000000","message":"remove last line","commit_id":"ddae451fa7281a6f5ba3bea5d8fc0fcb25f191dd"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"d67732322d5948ff46d287944c5c6caf27c602d7","unresolved":false,"context_lines":[{"line_number":2494,"context_line":"                      \u0027ALUA\u0027: \u00271\u0027,"},{"line_number":2495,"context_line":"                      \u0027TargetPortGroup\u0027: \u0027PortGroup001\u0027, }"},{"line_number":2496,"context_line":"        self.assertEqual(self.conf.iscsi_info, [iscsi_info])"},{"line_number":2497,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_7a5ee9ea","line":2497,"in_reply_to":"7a740942_c1ce4d59","updated":"2015-12-25 03:57:41.000000000","message":"Done","commit_id":"ddae451fa7281a6f5ba3bea5d8fc0fcb25f191dd"}],"cinder/volume/drivers/huawei/huawei_conf.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            elif lun_type \u003d\u003d \u0027Thin\u0027:"},{"line_number":150,"context_line":"                lun_type \u003d constants.THIN_LUNTYPE"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_03c2d233","line":152,"updated":"2015-12-31 10:10:55.000000000","message":"Should we add a space at end of this line?","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            elif lun_type \u003d\u003d \u0027Thin\u0027:"},{"line_number":150,"context_line":"                lun_type \u003d constants.THIN_LUNTYPE"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_fd793afd","line":152,"in_reply_to":"fa69d971_03c2d233","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d320012dfb403c02a92f57ca02d36d6e70456d59","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            elif lun_type \u003d\u003d \u0027Thin\u0027:"},{"line_number":150,"context_line":"                lun_type \u003d constants.THIN_LUNTYPE"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_50fb597b","line":152,"updated":"2016-01-10 08:03:21.000000000","message":"Add a space at the end of this line.","commit_id":"934201776650aacd9c4d48161d966c1bdd077d46"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9b73245f51466da86649152a5174184c6a3be358","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            elif lun_type \u003d\u003d \u0027Thin\u0027:"},{"line_number":150,"context_line":"                lun_type \u003d constants.THIN_LUNTYPE"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured.\""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_9de36e33","line":152,"in_reply_to":"fa69d971_50fb597b","updated":"2016-01-13 02:26:42.000000000","message":"Done","commit_id":"934201776650aacd9c4d48161d966c1bdd077d46"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"948c5fc30ffda953d437a340d60084cba098086a","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                lun_type \u003d constants.THIN_LUNTYPE"},{"line_number":151,"context_line":"            else:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Invalid lun type %s is configured. \""},{"line_number":153,"context_line":"                         \"Thick Type will be used.\") % lun_type)"},{"line_number":154,"context_line":"                LOG.exception(msg)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_fceed589","line":153,"range":{"start_line":153,"start_character":26,"end_line":153,"end_character":50},"updated":"2016-01-11 11:39:25.000000000","message":"This message should to describe invalid lun type, such as \"Valid LUNType is \"Thin\" or \"Thick\"\". See L197.","commit_id":"87a3a953bf4d14a52eb77b590d8088375e6eae96"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"a69c9a4f72f2bbad8bc382e7d2c4445e146d8f42","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_d67505fa","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":50},"updated":"2016-01-14 09:51:53.000000000","message":"Now shoud be 2016 :)","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_0f1fbb08","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":50},"in_reply_to":"da6ed579_d67505fa","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        return model_update"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _delete_volume(self, volume):"},{"line_number":262,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":263,"context_line":"        if not lun_id:"},{"line_number":264,"context_line":"            return"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_635aae85","line":262,"updated":"2015-12-31 10:10:55.000000000","message":"Can just use lun_id \u003d volume.get(\u0027provider_location\u0027), None will be the default return value if \u0027provider_location\u0027 not in volume.","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        return model_update"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def _delete_volume(self, volume):"},{"line_number":262,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":263,"context_line":"        if not lun_id:"},{"line_number":264,"context_line":"            return"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_3d4fd2be","line":262,"in_reply_to":"fa69d971_635aae85","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        Secondly, remove associate from QoS policy."},{"line_number":278,"context_line":"        Thirdly, remove the lun."},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":281,"context_line":"        if not lun_id or not self.client.check_lun_exist(lun_id):"},{"line_number":282,"context_line":"            LOG.warning(_LW(\"Can\u0027t find lun %s on the array.\"), lun_id)"},{"line_number":283,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_c3ccba37","line":280,"updated":"2015-12-31 10:10:55.000000000","message":"ditto","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        Secondly, remove associate from QoS policy."},{"line_number":278,"context_line":"        Thirdly, remove the lun."},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":281,"context_line":"        if not lun_id or not self.client.check_lun_exist(lun_id):"},{"line_number":282,"context_line":"            LOG.warning(_LW(\"Can\u0027t find lun %s on the array.\"), lun_id)"},{"line_number":283,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_1dcbee1f","line":280,"in_reply_to":"fa69d971_c3ccba37","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                                        wait_interval * 10)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_original_status(self, volume):"},{"line_number":393,"context_line":"        return \u0027in-use\u0027 if volume.get(\u0027volume_attachment\u0027) else\u0027available\u0027"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":396,"context_line":"                               original_volume_status\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_83ed628d","line":393,"updated":"2015-12-31 10:10:55.000000000","message":"Add a space after \"else\".","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                                        wait_interval * 10)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_original_status(self, volume):"},{"line_number":393,"context_line":"        return \u0027in-use\u0027 if volume.get(\u0027volume_attachment\u0027) else\u0027available\u0027"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":396,"context_line":"                               original_volume_status\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_7ddc6ae4","line":393,"in_reply_to":"fa69d971_83ed628d","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":562,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":563,"context_line":"        if src_vref.get(\u0027provider_location\u0027, None) is None:"},{"line_number":564,"context_line":"            msg \u003d (_(\"Can\u0027t find lun id from db, volume: %(id)s\") %"},{"line_number":565,"context_line":"                   {\"id\": volume[\u0027id\u0027]})"},{"line_number":566,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_c3c11ae6","line":563,"updated":"2015-12-31 10:10:55.000000000","message":"Just use src_vref.get(\u0027provider_location\u0027)","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":562,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":563,"context_line":"        if src_vref.get(\u0027provider_location\u0027, None) is None:"},{"line_number":564,"context_line":"            msg \u003d (_(\"Can\u0027t find lun id from db, volume: %(id)s\") %"},{"line_number":565,"context_line":"                   {\"id\": volume[\u0027id\u0027]})"},{"line_number":566,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_1df20e70","line":563,"in_reply_to":"fa69d971_c3c11ae6","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":618,"context_line":"        volume \u003d snapshot.get(\u0027volume\u0027)"},{"line_number":619,"context_line":"        if not volume:"},{"line_number":620,"context_line":"            msg \u003d (_(\"Can\u0027t find lun id from db, volume: %(id)s\") %"},{"line_number":621,"context_line":"                   {\"id\": volume[\u0027id\u0027]})"},{"line_number":622,"context_line":"            LOG.error(msg)"},{"line_number":623,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":624,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_ce794195","line":621,"updated":"2015-12-31 10:10:55.000000000","message":"We are not find \"lun id\" here, so the info should be changed. Also, if \"volume\" is None, volume[\u0027id\u0027] will raise a KeyError.","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":618,"context_line":"        volume \u003d snapshot.get(\u0027volume\u0027)"},{"line_number":619,"context_line":"        if not volume:"},{"line_number":620,"context_line":"            msg \u003d (_(\"Can\u0027t find lun id from db, volume: %(id)s\") %"},{"line_number":621,"context_line":"                   {\"id\": volume[\u0027id\u0027]})"},{"line_number":622,"context_line":"            LOG.error(msg)"},{"line_number":623,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":624,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_9dfefe36","line":621,"in_reply_to":"fa69d971_ce794195","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":""},{"line_number":1122,"context_line":"class HuaweiFCDriver(HuaweiBaseDriver, driver.FibreChannelDriver):"},{"line_number":1123,"context_line":"    \"\"\"FC driver for Huawei OceanStor 18000 storage arrays."},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"    Version history:"},{"line_number":1126,"context_line":"        1.0.0 - Initial driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_2e97bd91","line":1123,"updated":"2015-12-31 10:10:55.000000000","message":"\"OceanStor 18000\" should be removed.","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":""},{"line_number":1122,"context_line":"class HuaweiFCDriver(HuaweiBaseDriver, driver.FibreChannelDriver):"},{"line_number":1123,"context_line":"    \"\"\"FC driver for Huawei OceanStor 18000 storage arrays."},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"    Version history:"},{"line_number":1126,"context_line":"        1.0.0 - Initial driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_dda2364b","line":1123,"in_reply_to":"fa69d971_2e97bd91","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2980d4993a8d6d81f3d0b1d3177562c9401f1d2e","unresolved":false,"context_lines":[{"line_number":933,"context_line":""},{"line_number":934,"context_line":"    Version history:"},{"line_number":935,"context_line":"        1.0.0 - Initial driver"},{"line_number":936,"context_line":"        1.1.0 - Provide Huawei OceanStor storage volume driver"},{"line_number":937,"context_line":"        1.1.1 - Code refactor"},{"line_number":938,"context_line":"                CHAP support"},{"line_number":939,"context_line":"                Multiple pools support"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_e09c2d5f","line":936,"range":{"start_line":936,"start_character":24,"end_line":936,"end_character":48},"updated":"2016-01-04 06:51:04.000000000","message":"Please keep same with before. Add 18000, this is history.","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9e3b626aca5127b27b25e31f6dba0e38e2a772a3","unresolved":false,"context_lines":[{"line_number":933,"context_line":""},{"line_number":934,"context_line":"    Version history:"},{"line_number":935,"context_line":"        1.0.0 - Initial driver"},{"line_number":936,"context_line":"        1.1.0 - Provide Huawei OceanStor storage volume driver"},{"line_number":937,"context_line":"        1.1.1 - Code refactor"},{"line_number":938,"context_line":"                CHAP support"},{"line_number":939,"context_line":"                Multiple pools support"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_db155e49","line":936,"range":{"start_line":936,"start_character":24,"end_line":936,"end_character":48},"in_reply_to":"fa69d971_e09c2d5f","updated":"2016-01-04 07:53:19.000000000","message":"Done","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2980d4993a8d6d81f3d0b1d3177562c9401f1d2e","unresolved":false,"context_lines":[{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":""},{"line_number":1122,"context_line":"class HuaweiFCDriver(HuaweiBaseDriver, driver.FibreChannelDriver):"},{"line_number":1123,"context_line":"    \"\"\"FC driver for Huawei OceanStor 18000 storage arrays."},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"    Version history:"},{"line_number":1126,"context_line":"        1.0.0 - Initial driver"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_00906142","line":1123,"range":{"start_line":1123,"start_character":21,"end_line":1123,"end_character":51},"updated":"2016-01-04 06:51:04.000000000","message":"please keep same with before. Delete 18000.","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9e3b626aca5127b27b25e31f6dba0e38e2a772a3","unresolved":false,"context_lines":[{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":""},{"line_number":1122,"context_line":"class HuaweiFCDriver(HuaweiBaseDriver, driver.FibreChannelDriver):"},{"line_number":1123,"context_line":"    \"\"\"FC driver for Huawei OceanStor 18000 storage arrays."},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"    Version history:"},{"line_number":1126,"context_line":"        1.0.0 - Initial driver"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_9b08462f","line":1123,"range":{"start_line":1123,"start_character":21,"end_line":1123,"end_character":51},"in_reply_to":"fa69d971_00906142","updated":"2016-01-04 07:53:19.000000000","message":"Done","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        metro_san_address \u003d self.configuration.safe_get(\"metro_san_address\")"},{"line_number":81,"context_line":"        metro_san_user \u003d self.configuration.safe_get(\"metro_san_user\")"},{"line_number":82,"context_line":"        metro_san_password \u003d self.configuration.safe_get(\"metro_san_password\")"},{"line_number":83,"context_line":"        if (metro_san_address and metro_san_user and metro_san_password):"},{"line_number":84,"context_line":"            self.metro_flag \u003d True"},{"line_number":85,"context_line":"            metro_san_address \u003d metro_san_address.split(\";\")"},{"line_number":86,"context_line":"            self.rmt_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_77ba73c2","line":83,"range":{"start_line":83,"start_character":11,"end_line":83,"end_character":72},"updated":"2016-01-08 02:15:39.000000000","message":"Maybe the () is unnecessary.","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        metro_san_address \u003d self.configuration.safe_get(\"metro_san_address\")"},{"line_number":81,"context_line":"        metro_san_user \u003d self.configuration.safe_get(\"metro_san_user\")"},{"line_number":82,"context_line":"        metro_san_password \u003d self.configuration.safe_get(\"metro_san_password\")"},{"line_number":83,"context_line":"        if (metro_san_address and metro_san_user and metro_san_password):"},{"line_number":84,"context_line":"            self.metro_flag \u003d True"},{"line_number":85,"context_line":"            metro_san_address \u003d metro_san_address.split(\";\")"},{"line_number":86,"context_line":"            self.rmt_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_b4b546d1","line":83,"range":{"start_line":83,"start_character":11,"end_line":83,"end_character":72},"in_reply_to":"fa69d971_77ba73c2","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"702570d1c07ff306ecf3f3bde34485c5614adede","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return volume_type"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _get_volume_params(self, volume_type):"},{"line_number":112,"context_line":"        \"\"\"Return the parameters for creating the volume.\"\"\""},{"line_number":113,"context_line":"        specs \u003d {}"},{"line_number":114,"context_line":"        if volume_type:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_19059713","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":26},"updated":"2016-01-07 12:24:07.000000000","message":"\"_get_volume_params_by_volume_type\" is better?","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return volume_type"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _get_volume_params(self, volume_type):"},{"line_number":112,"context_line":"        \"\"\"Return the parameters for creating the volume.\"\"\""},{"line_number":113,"context_line":"        specs \u003d {}"},{"line_number":114,"context_line":"        if volume_type:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_fa2e47a4","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":26},"in_reply_to":"fa69d971_19059713","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"62651b19423ca102a7d6843a6edff35d0203b8da","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return volume_type"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _get_volume_params(self, volume_type):"},{"line_number":112,"context_line":"        \"\"\"Return the parameters for creating the volume.\"\"\""},{"line_number":113,"context_line":"        specs \u003d {}"},{"line_number":114,"context_line":"        if volume_type:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_9f0ac778","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":26},"in_reply_to":"fa69d971_19059713","updated":"2016-01-07 12:54:53.000000000","message":"I think the short one is better","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return volume_type"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _get_volume_params(self, volume_type):"},{"line_number":112,"context_line":"        \"\"\"Return the parameters for creating the volume.\"\"\""},{"line_number":113,"context_line":"        specs \u003d {}"},{"line_number":114,"context_line":"        if volume_type:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_5a099330","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":26},"in_reply_to":"fa69d971_9f0ac778","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a942069617f5c728e38c0518280342cb491729f8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        metro_san_address \u003d self.configuration.safe_get(\"metro_san_address\")"},{"line_number":81,"context_line":"        metro_san_user \u003d self.configuration.safe_get(\"metro_san_user\")"},{"line_number":82,"context_line":"        metro_san_password \u003d self.configuration.safe_get(\"metro_san_password\")"},{"line_number":83,"context_line":"        if metro_san_address and metro_san_user and metro_san_password:"},{"line_number":84,"context_line":"            self.metro_flag \u003d True"},{"line_number":85,"context_line":"            metro_san_address \u003d metro_san_address.split(\";\")"},{"line_number":86,"context_line":"            self.rmt_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_9fc24b33","line":83,"updated":"2016-01-13 22:03:05.000000000","message":"Should you have an error here if this condition isn\u0027t True?","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        metro_san_address \u003d self.configuration.safe_get(\"metro_san_address\")"},{"line_number":81,"context_line":"        metro_san_user \u003d self.configuration.safe_get(\"metro_san_user\")"},{"line_number":82,"context_line":"        metro_san_password \u003d self.configuration.safe_get(\"metro_san_password\")"},{"line_number":83,"context_line":"        if metro_san_address and metro_san_user and metro_san_password:"},{"line_number":84,"context_line":"            self.metro_flag \u003d True"},{"line_number":85,"context_line":"            metro_san_address \u003d metro_san_address.split(\";\")"},{"line_number":86,"context_line":"            self.rmt_client \u003d rest_client.RestClient(self.configuration,"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_760c503b","line":83,"in_reply_to":"da6ed579_9fc24b33","updated":"2016-01-15 03:25:04.000000000","message":"In this condition, we assume that the user don\u0027t need the \"hypermetro\" feature, so we don\u0027t have connect the remote array. But we won\u0027t raise the exception for that the local array can offer the service.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"a69c9a4f72f2bbad8bc382e7d2c4445e146d8f42","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            \u0027DATATRANSFERPOLICY\u0027:"},{"line_number":204,"context_line":"                opts.get(\u0027policy\u0027, self.configuration.lun_policy),"},{"line_number":205,"context_line":"            \u0027READCACHEPOLICY\u0027: self.configuration.lun_read_cache_policy,"},{"line_number":206,"context_line":"            \u0027WRITECACHEPOLICY\u0027: self.configuration.lun_write_cache_policy}"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        LOG.info(_LI(\u0027volume: %(volume)s, lun params: %(params)s.\u0027),"},{"line_number":209,"context_line":"                 {\u0027volume\u0027: volume[\u0027id\u0027], \u0027params\u0027: params})"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_86398df4","line":206,"range":{"start_line":206,"start_character":72,"end_line":206,"end_character":74},"updated":"2016-01-14 09:51:53.000000000","message":"should add comma here.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            \u0027DATATRANSFERPOLICY\u0027:"},{"line_number":204,"context_line":"                opts.get(\u0027policy\u0027, self.configuration.lun_policy),"},{"line_number":205,"context_line":"            \u0027READCACHEPOLICY\u0027: self.configuration.lun_read_cache_policy,"},{"line_number":206,"context_line":"            \u0027WRITECACHEPOLICY\u0027: self.configuration.lun_write_cache_policy}"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        LOG.info(_LI(\u0027volume: %(volume)s, lun params: %(params)s.\u0027),"},{"line_number":209,"context_line":"                 {\u0027volume\u0027: volume[\u0027id\u0027], \u0027params\u0027: params})"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_6fbd17d7","line":206,"range":{"start_line":206,"start_character":72,"end_line":206,"end_character":74},"in_reply_to":"da6ed579_86398df4","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a942069617f5c728e38c0518280342cb491729f8","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            try:"},{"line_number":297,"context_line":"                metro.delete_hypermetro(volume)"},{"line_number":298,"context_line":"            except exception.VolumeBackendAPIException as err:"},{"line_number":299,"context_line":"                LOG.exception(_LE(\u0027Delete hypermetro error: %s.\u0027), err)"},{"line_number":300,"context_line":"                self._delete_volume(volume)"},{"line_number":301,"context_line":"                raise"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_bf1b8fc9","line":299,"updated":"2016-01-13 22:03:05.000000000","message":"LOG.exception logs the exception in scope, so don\u0027t pass it in to be formatted as part of the message or it will be logged twice.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            try:"},{"line_number":297,"context_line":"                metro.delete_hypermetro(volume)"},{"line_number":298,"context_line":"            except exception.VolumeBackendAPIException as err:"},{"line_number":299,"context_line":"                LOG.exception(_LE(\u0027Delete hypermetro error: %s.\u0027), err)"},{"line_number":300,"context_line":"                self._delete_volume(volume)"},{"line_number":301,"context_line":"                raise"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_b0f09068","line":299,"in_reply_to":"da6ed579_bf1b8fc9","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"a69c9a4f72f2bbad8bc382e7d2c4445e146d8f42","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            \u0027DATATRANSFERPOLICY\u0027: policy,"},{"line_number":491,"context_line":"            \u0027READCACHEPOLICY\u0027: lun_info[\u0027READCACHEPOLICY\u0027],"},{"line_number":492,"context_line":"            \u0027WRITECACHEPOLICY\u0027: lun_info[\u0027WRITECACHEPOLICY\u0027],"},{"line_number":493,"context_line":"            \u0027OWNINGCONTROLLER\u0027: lun_info[\u0027OWNINGCONTROLLER\u0027]}"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        lun_info \u003d self.client.create_lun(lun_params)"},{"line_number":496,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_69dd4a6e","line":493,"range":{"start_line":493,"start_character":58,"end_line":493,"end_character":61},"updated":"2016-01-14 09:51:53.000000000","message":"should add comma here.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            \u0027DATATRANSFERPOLICY\u0027: policy,"},{"line_number":491,"context_line":"            \u0027READCACHEPOLICY\u0027: lun_info[\u0027READCACHEPOLICY\u0027],"},{"line_number":492,"context_line":"            \u0027WRITECACHEPOLICY\u0027: lun_info[\u0027WRITECACHEPOLICY\u0027],"},{"line_number":493,"context_line":"            \u0027OWNINGCONTROLLER\u0027: lun_info[\u0027OWNINGCONTROLLER\u0027]}"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        lun_info \u003d self.client.create_lun(lun_params)"},{"line_number":496,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_afc78f62","line":493,"range":{"start_line":493,"start_character":58,"end_line":493,"end_character":61},"in_reply_to":"da6ed579_69dd4a6e","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"a69c9a4f72f2bbad8bc382e7d2c4445e146d8f42","unresolved":false,"context_lines":[{"line_number":941,"context_line":"                SmartX support"},{"line_number":942,"context_line":"                Volume migration support"},{"line_number":943,"context_line":"                Volume retype support"},{"line_number":944,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":945,"context_line":"    \"\"\""},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"    VERSION \u003d \"2.0.0\""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_a9e022fb","line":944,"updated":"2016-01-14 09:51:53.000000000","message":"Seems to Add 2.0.1 to specify the code refactor.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":941,"context_line":"                SmartX support"},{"line_number":942,"context_line":"                Volume migration support"},{"line_number":943,"context_line":"                Volume retype support"},{"line_number":944,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":945,"context_line":"    \"\"\""},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"    VERSION \u003d \"2.0.0\""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_6f8bd71f","line":944,"in_reply_to":"da6ed579_a9e022fb","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"a69c9a4f72f2bbad8bc382e7d2c4445e146d8f42","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"                Volume retype support"},{"line_number":1133,"context_line":"                FC zone enhancement"},{"line_number":1134,"context_line":"                Volume hypermetro support"},{"line_number":1135,"context_line":"        2.0.0 - Rename to HuaweiFCDriver"},{"line_number":1136,"context_line":"    \"\"\""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"    VERSION \u003d \"2.0.0\""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_8980bef8","line":1135,"updated":"2016-01-14 09:51:53.000000000","message":"2.0.0 -\u003e 2.0.1 to specify the code refactor.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"                Volume retype support"},{"line_number":1133,"context_line":"                FC zone enhancement"},{"line_number":1134,"context_line":"                Volume hypermetro support"},{"line_number":1135,"context_line":"        2.0.0 - Rename to HuaweiFCDriver"},{"line_number":1136,"context_line":"    \"\"\""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"    VERSION \u003d \"2.0.0\""}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_afac6f8c","line":1135,"in_reply_to":"da6ed579_8980bef8","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"35845f2b665d3f19a7cbc1e0e7e2fcfa615d809a","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        except Exception as err:"},{"line_number":243,"context_line":"            self._delete_lun_with_check(lun_id)"},{"line_number":244,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":245,"context_line":"                data\u003d_(\u0027Create volume error. Because %s.\u0027) % err)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if (opts.get(\u0027hypermetro\u0027) and opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027):"},{"line_number":248,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_a8e750ab","line":245,"range":{"start_line":245,"start_character":61,"end_line":245,"end_character":64},"updated":"2016-01-18 21:22:25.000000000","message":"Please wrap err in six.text_type to be safe.","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"89147109207defa502cf7fe8caa6f814f9eb051c","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        except Exception as err:"},{"line_number":243,"context_line":"            self._delete_lun_with_check(lun_id)"},{"line_number":244,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":245,"context_line":"                data\u003d_(\u0027Create volume error. Because %s.\u0027) % err)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if (opts.get(\u0027hypermetro\u0027) and opts.get(\u0027hypermetro\u0027) \u003d\u003d \u0027true\u0027):"},{"line_number":248,"context_line":"            metro \u003d hypermetro.HuaweiHyperMetro(self.client,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_de5efa75","line":245,"range":{"start_line":245,"start_character":61,"end_line":245,"end_character":64},"in_reply_to":"ba63e191_a8e750ab","updated":"2016-01-18 21:47:31.000000000","message":"Done","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"35845f2b665d3f19a7cbc1e0e7e2fcfa615d809a","unresolved":false,"context_lines":[{"line_number":690,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":691,"context_line":"                return True"},{"line_number":692,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":693,"context_line":"            LOG.error(_LE(\u0027Retype volume error.\u0027))"},{"line_number":694,"context_line":"            return False"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_a8b5107f","line":693,"updated":"2016-01-18 21:22:25.000000000","message":"Are you sure you don\u0027t want to keep LOG.exception to help debugging problems easier?","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"89147109207defa502cf7fe8caa6f814f9eb051c","unresolved":false,"context_lines":[{"line_number":690,"context_line":"                self.modify_lun(lun_id, change_opts)"},{"line_number":691,"context_line":"                return True"},{"line_number":692,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":693,"context_line":"            LOG.error(_LE(\u0027Retype volume error.\u0027))"},{"line_number":694,"context_line":"            return False"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    def modify_lun(self, lun_id, change_opts):"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_1ef33275","line":693,"in_reply_to":"ba63e191_a8b5107f","updated":"2016-01-18 21:47:31.000000000","message":"Done","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"35845f2b665d3f19a7cbc1e0e7e2fcfa615d809a","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"                  {\u0027old_name\u0027: lun_info.get(\u0027NAME\u0027),"},{"line_number":1089,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1090,"context_line":"        self.client.rename_lun(lun_id, new_name,"},{"line_number":1091,"context_line":"                               description)  # pylint: disable\u003dE1121"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        return {\u0027provider_location\u0027: lun_id}"},{"line_number":1094,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_fe8e5e26","line":1091,"range":{"start_line":1091,"start_character":45,"end_line":1091,"end_character":68},"updated":"2016-01-18 21:22:25.000000000","message":"I believe this needs to be on the first line to disable the pylint warning.","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"89147109207defa502cf7fe8caa6f814f9eb051c","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"                  {\u0027old_name\u0027: lun_info.get(\u0027NAME\u0027),"},{"line_number":1089,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1090,"context_line":"        self.client.rename_lun(lun_id, new_name,"},{"line_number":1091,"context_line":"                               description)  # pylint: disable\u003dE1121"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        return {\u0027provider_location\u0027: lun_id}"},{"line_number":1094,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ba63e191_9e096234","line":1091,"range":{"start_line":1091,"start_character":45,"end_line":1091,"end_character":68},"in_reply_to":"ba63e191_fe8e5e26","updated":"2016-01-18 21:47:31.000000000","message":"Done","commit_id":"b62019c57f8b9a86cefcd77dd4700271c067f8c2"}],"cinder/volume/drivers/huawei/hypermetro.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"948c5fc30ffda953d437a340d60084cba098086a","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    self.rmt_client.get_host_fc_initiators(host_id))"},{"line_number":144,"context_line":"                iqns_in_host \u003d ("},{"line_number":145,"context_line":"                    self.rmt_client.get_host_iscsi_initiators(host_id))"},{"line_number":146,"context_line":"                if not wwns_in_host and not iqns_in_host:"},{"line_number":147,"context_line":"                    self.rmt_client.remove_host(host_id)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                msg \u003d _(\u0027Can not add FC port to host.\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_9f66abeb","line":146,"range":{"start_line":146,"start_character":19,"end_line":146,"end_character":56},"updated":"2016-01-11 11:39:25.000000000","message":"s/not wwns_in_host and not iqns_in_host/not (wwns_in_host or iqns_in_host)","commit_id":"87a3a953bf4d14a52eb77b590d8088375e6eae96"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a942069617f5c728e38c0518280342cb491729f8","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if lun_id is None:"},{"line_number":123,"context_line":"            msg \u003d _(\"Can\u0027t get volume id. Volume name: %s.\") % volume_name"},{"line_number":124,"context_line":"            LOG.error(msg)"},{"line_number":125,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        original_host_name \u003d connector[\u0027host\u0027]"},{"line_number":128,"context_line":"        host_name \u003d huawei_utils.encode_host_name(original_host_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_3f479f78","line":125,"updated":"2016-01-13 22:03:05.000000000","message":"Should not have spaces around the \u003d (data\u003dmsg)","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if lun_id is None:"},{"line_number":123,"context_line":"            msg \u003d _(\"Can\u0027t get volume id. Volume name: %s.\") % volume_name"},{"line_number":124,"context_line":"            LOG.error(msg)"},{"line_number":125,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        original_host_name \u003d connector[\u0027host\u0027]"},{"line_number":128,"context_line":"        host_name \u003d huawei_utils.encode_host_name(original_host_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_b065f01e","line":125,"in_reply_to":"da6ed579_3f479f78","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a942069617f5c728e38c0518280342cb491729f8","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                msg \u003d _(\u0027Can not add FC port to host.\u0027)"},{"line_number":150,"context_line":"                LOG.error(msg)"},{"line_number":151,"context_line":"                raise exception.VolumeBackendAPIException(data \u003d msg)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        for wwn in wwns:"},{"line_number":154,"context_line":"            if wwn in online_free_wwns:"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_ff5d8747","line":151,"updated":"2016-01-13 22:03:05.000000000","message":"Same.","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"215732f44048af439048437df04359ebcc7f7f48","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                msg \u003d _(\u0027Can not add FC port to host.\u0027)"},{"line_number":150,"context_line":"                LOG.error(msg)"},{"line_number":151,"context_line":"                raise exception.VolumeBackendAPIException(data \u003d msg)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        for wwn in wwns:"},{"line_number":154,"context_line":"            if wwn in online_free_wwns:"}],"source_content_type":"text/x-python","patch_set":20,"id":"da6ed579_706bf8f1","line":151,"in_reply_to":"da6ed579_ff5d8747","updated":"2016-01-15 03:25:04.000000000","message":"Done","commit_id":"91245552a2d49aae900d0e3cf88dbdfa1ce1f448"}],"cinder/volume/drivers/huawei/replication.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3a01416ebbd783fd4df955803e5e6ac88c8ae837","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class HuaweiReplication(object):"},{"line_number":23,"context_line":"    def __init__(self, client, rmt_client, configuration):"},{"line_number":24,"context_line":"        self.client \u003d client"},{"line_number":25,"context_line":"        self.rmt_client \u003d rmt_client"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_9ddb8a1b","line":22,"updated":"2016-01-12 16:04:20.000000000","message":"This file is something new that does not appear to be used anywhere and is not a refactoring like what this patch claims to be for. Accidentally added from other work? I think this should be removed and added as part of a different patchset if needed.","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"f0fc0bdc4c3b7d56589978cc1a2cebfa8791d184","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class HuaweiReplication(object):"},{"line_number":23,"context_line":"    def __init__(self, client, rmt_client, configuration):"},{"line_number":24,"context_line":"        self.client \u003d client"},{"line_number":25,"context_line":"        self.rmt_client \u003d rmt_client"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_bacbd852","line":22,"in_reply_to":"da6ed579_9ddb8a1b","updated":"2016-01-13 02:14:08.000000000","message":"Done","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8a99620016c3eb7f5da10fd5d389a5635a53e7ad","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                if name \u003d\u003d item.get(key):"},{"line_number":255,"context_line":"                    return item[\u0027ID\u0027]"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return None"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_lun_id_by_name(self, name):"},{"line_number":260,"context_line":"        url \u003d \"/lun?range\u003d[0-65535]\""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_ce3ce195","line":257,"updated":"2015-12-31 10:10:55.000000000","message":"This line should be removed because the function will return None by default if it not return item[\u0027ID\u0027].","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"0af7f2180bdcb2620e8a30ec63f8a706c296851a","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                if name \u003d\u003d item.get(key):"},{"line_number":255,"context_line":"                    return item[\u0027ID\u0027]"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return None"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_lun_id_by_name(self, name):"},{"line_number":260,"context_line":"        url \u003d \"/lun?range\u003d[0-65535]\""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_1d644e47","line":257,"in_reply_to":"fa69d971_ce3ce195","updated":"2016-01-04 06:16:58.000000000","message":"Done","commit_id":"d764732a8dc97fb333d28d2655bb526f411a02ee"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2980d4993a8d6d81f3d0b1d3177562c9401f1d2e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class RestClient(object):"},{"line_number":35,"context_line":"    \"\"\"Common class for Huawei OceanStor 18000 storage system.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def __init__(self, configuration, san_address, san_user, san_password):"},{"line_number":38,"context_line":"        self.configuration \u003d configuration"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_60a91d7b","line":35,"range":{"start_line":35,"start_character":31,"end_line":35,"end_character":46},"updated":"2016-01-04 06:51:04.000000000","message":"Delete OceanStor 18000.","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9e3b626aca5127b27b25e31f6dba0e38e2a772a3","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class RestClient(object):"},{"line_number":35,"context_line":"    \"\"\"Common class for Huawei OceanStor 18000 storage system.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def __init__(self, configuration, san_address, san_user, san_password):"},{"line_number":38,"context_line":"        self.configuration \u003d configuration"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_1603cb0e","line":35,"range":{"start_line":35,"start_character":31,"end_line":35,"end_character":46},"in_reply_to":"fa69d971_60a91d7b","updated":"2016-01-04 07:53:19.000000000","message":"Done","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2980d4993a8d6d81f3d0b1d3177562c9401f1d2e","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        return res_json"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def login(self):"},{"line_number":102,"context_line":"        \"\"\"Login 18000 array.\"\"\""},{"line_number":103,"context_line":"        device_id \u003d None"},{"line_number":104,"context_line":"        for item_url in self.san_address:"},{"line_number":105,"context_line":"            url \u003d item_url + \"xx/sessions\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_e0b3cde7","line":102,"range":{"start_line":102,"start_character":17,"end_line":102,"end_character":22},"updated":"2016-01-04 06:51:04.000000000","message":"s/18000/Huawei storage.","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9e3b626aca5127b27b25e31f6dba0e38e2a772a3","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        return res_json"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def login(self):"},{"line_number":102,"context_line":"        \"\"\"Login 18000 array.\"\"\""},{"line_number":103,"context_line":"        device_id \u003d None"},{"line_number":104,"context_line":"        for item_url in self.san_address:"},{"line_number":105,"context_line":"            url \u003d item_url + \"xx/sessions\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_960fbb2d","line":102,"range":{"start_line":102,"start_character":17,"end_line":102,"end_character":22},"in_reply_to":"fa69d971_e0b3cde7","updated":"2016-01-04 07:53:19.000000000","message":"Done","commit_id":"bf7abfbfad37b5e7e678aa8d0a5396a05824233a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":1811,"context_line":"                \"DOMAINID\": domain_id}"},{"line_number":1812,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1813,"context_line":""},{"line_number":1814,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":1815,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1816,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1817,"context_line":"            return result[\"data\"][\"ID\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_1243056e","line":1814,"range":{"start_line":1814,"start_character":17,"end_line":1814,"end_character":23},"updated":"2016-01-08 02:15:39.000000000","message":"s/create/Create","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":1811,"context_line":"                \"DOMAINID\": domain_id}"},{"line_number":1812,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1813,"context_line":""},{"line_number":1814,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":1815,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1816,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1817,"context_line":"            return result[\"data\"][\"ID\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_7d56d107","line":1814,"range":{"start_line":1814,"start_character":17,"end_line":1814,"end_character":23},"in_reply_to":"fa69d971_1243056e","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":1823,"context_line":"                }"},{"line_number":1824,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1825,"context_line":""},{"line_number":1826,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":1827,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    def get_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_f2ac3137","line":1826,"range":{"start_line":1826,"start_character":17,"end_line":1826,"end_character":23},"updated":"2016-01-08 02:15:39.000000000","message":"s/create/Delete","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":1823,"context_line":"                }"},{"line_number":1824,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1825,"context_line":""},{"line_number":1826,"context_line":"        msg \u003d _(\u0027create hypermetro group error.\u0027)"},{"line_number":1827,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    def get_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_9d5b852e","line":1826,"range":{"start_line":1826,"start_character":17,"end_line":1826,"end_character":23},"in_reply_to":"fa69d971_f2ac3137","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":1840,"context_line":"                }"},{"line_number":1841,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":1844,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_d2da4de9","line":1843,"range":{"start_line":1843,"start_character":17,"end_line":1843,"end_character":21},"updated":"2016-01-08 02:15:39.000000000","message":"s/stop/Stop","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":1840,"context_line":"                }"},{"line_number":1841,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"        msg \u003d _(\u0027stop hypermetro group error.\u0027)"},{"line_number":1844,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def sync_metrogroup(self, metrogroup_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_3d41393a","line":1843,"range":{"start_line":1843,"start_character":17,"end_line":1843,"end_character":21},"in_reply_to":"fa69d971_d2da4de9","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":1850,"context_line":"                }"},{"line_number":1851,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":"        msg \u003d _(\u0027sync hypermetro group error.\u0027)"},{"line_number":1854,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1855,"context_line":""},{"line_number":1856,"context_line":"    def add_metro_to_metrogroup(self, metrogroup_id, metro_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_b216b9ef","line":1853,"range":{"start_line":1853,"start_character":17,"end_line":1853,"end_character":21},"updated":"2016-01-08 02:15:39.000000000","message":"s/sync/Sync","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":1850,"context_line":"                }"},{"line_number":1851,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1852,"context_line":""},{"line_number":1853,"context_line":"        msg \u003d _(\u0027sync hypermetro group error.\u0027)"},{"line_number":1854,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1855,"context_line":""},{"line_number":1856,"context_line":"    def add_metro_to_metrogroup(self, metrogroup_id, metro_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_5d3e6db9","line":1853,"range":{"start_line":1853,"start_character":17,"end_line":1853,"end_character":21},"in_reply_to":"fa69d971_b216b9ef","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a3becc5502e013beeffdbba39d50062b3e642f35","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":1873,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":1876,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_f2caf16d","line":1875,"range":{"start_line":1875,"start_character":17,"end_line":1875,"end_character":23},"updated":"2016-01-08 02:15:39.000000000","message":"s/Delete/Remove","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"1961b29b3413f75ef4eb7b9dc530fc78ee42ad04","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                \"ASSOCIATEOBJID\": metro_id}"},{"line_number":1873,"context_line":"        result \u003d self.call(url, data, \"DELETE\")"},{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"        msg \u003d _(\u0027Delete hypermetro from metrogroup error.\u0027)"},{"line_number":1876,"context_line":"        self._assert_rest_result(result, msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa69d971_fd4ac154","line":1875,"range":{"start_line":1875,"start_character":17,"end_line":1875,"end_character":23},"in_reply_to":"fa69d971_f2caf16d","updated":"2016-01-08 02:47:49.000000000","message":"Done","commit_id":"6fa6ff9c67e63ea116b262276f9826631ef81857"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d320012dfb403c02a92f57ca02d36d6e70456d59","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1800,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1801,"context_line":"            return result[\"data\"][\"AVAILABLEHOSTLUNIDLIST\"]"},{"line_number":1802,"context_line":""},{"line_number":1803,"context_line":"    def create_metrogroup(self, name, domain_id):"},{"line_number":1804,"context_line":"        url \u003d \"/HyperMetro_ConsistentGroup/\""},{"line_number":1805,"context_line":"        data \u003d {\"NAME\": name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_700e9d8d","line":1802,"updated":"2016-01-10 08:03:21.000000000","message":"Line 1802 to 1876 seems like another patch\u0027s code, has no relationship to the Refactor patch. Should we remove these code from this patch?","commit_id":"934201776650aacd9c4d48161d966c1bdd077d46"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"9b73245f51466da86649152a5174184c6a3be358","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1800,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1801,"context_line":"            return result[\"data\"][\"AVAILABLEHOSTLUNIDLIST\"]"},{"line_number":1802,"context_line":""},{"line_number":1803,"context_line":"    def create_metrogroup(self, name, domain_id):"},{"line_number":1804,"context_line":"        url \u003d \"/HyperMetro_ConsistentGroup/\""},{"line_number":1805,"context_line":"        data \u003d {\"NAME\": name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_7180dcbf","line":1802,"in_reply_to":"fa69d971_700e9d8d","updated":"2016-01-13 02:26:42.000000000","message":"Done","commit_id":"934201776650aacd9c4d48161d966c1bdd077d46"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"948c5fc30ffda953d437a340d60084cba098086a","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            socket.setdefaulttimeout(calltimeout)"},{"line_number":69,"context_line":"            if data:"},{"line_number":70,"context_line":"                data \u003d json.dumps(data)"},{"line_number":71,"context_line":"            req \u003d urllib.request.Request(url, data, self.headers)"},{"line_number":72,"context_line":"            if method:"},{"line_number":73,"context_line":"                req.get_method \u003d lambda: method"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_df10a302","line":70,"range":{"start_line":69,"start_character":12,"end_line":70,"end_character":39},"updated":"2016-01-11 11:39:25.000000000","message":"Maybe it\u0027s better: \"data \u003d json.dumps(data) if data\".","commit_id":"87a3a953bf4d14a52eb77b590d8088375e6eae96"}],"cinder/volume/drivers/huawei/smartx.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3a01416ebbd783fd4df955803e5e6ac88c8ae837","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.exception(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_582c404a","line":54,"updated":"2016-01-12 16:04:20.000000000","message":"There isn\u0027t an exception in scope here, so this should just be LOG.error().","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"f0fc0bdc4c3b7d56589978cc1a2cebfa8791d184","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            if k.upper() !\u003d \u0027IOTYPE\u0027 and int(v) \u003c\u003d 0:"},{"line_number":53,"context_line":"                msg \u003d _(\u0027QoS config is wrong. %s must \u003e 0.\u0027) % k"},{"line_number":54,"context_line":"                LOG.exception(msg)"},{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_3ab7e8d9","line":54,"in_reply_to":"da6ed579_582c404a","updated":"2016-01-13 02:14:08.000000000","message":"Done","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3a01416ebbd783fd4df955803e5e6ac88c8ae837","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.exception(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":60,"context_line":"            else:"},{"line_number":61,"context_line":"                qos[k.upper()] \u003d v"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_1826c868","line":58,"updated":"2016-01-12 16:04:20.000000000","message":"Same.","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"f0fc0bdc4c3b7d56589978cc1a2cebfa8791d184","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":56,"context_line":"            elif k.upper() \u003d\u003d \u0027IOTYPE\u0027 and v not in [\u00270\u0027, \u00271\u0027, \u00272\u0027]:"},{"line_number":57,"context_line":"                msg \u003d _(\u0027Illegal value specified for IOTYPE: 0, 1, or 2.\u0027)"},{"line_number":58,"context_line":"                LOG.exception(msg)"},{"line_number":59,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":60,"context_line":"            else:"},{"line_number":61,"context_line":"                qos[k.upper()] \u003d v"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_5abadcc1","line":58,"in_reply_to":"da6ed579_1826c868","updated":"2016-01-13 02:14:08.000000000","message":"Done","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"}],"releasenotes/notes/refactor-huawei-driver-185f9ddcc6571d37.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3a01416ebbd783fd4df955803e5e6ac88c8ae837","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Refactor huawei volume driver."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"da6ed579_38e2ac04","line":3,"updated":"2016-01-12 16:04:20.000000000","message":"This isn\u0027t something that an end consumer needs to know about or care about, so this release note should be removed.","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"f0fc0bdc4c3b7d56589978cc1a2cebfa8791d184","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Refactor huawei volume driver."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"da6ed579_5ae17ccf","line":3,"in_reply_to":"da6ed579_38e2ac04","updated":"2016-01-13 02:14:08.000000000","message":"Done","commit_id":"379d91c695502014967a3bb87640fc2d9da869f6"}]}
