)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":11,"context_line":"User create a volume in cinder, the LUN ID on array is 10."},{"line_number":12,"context_line":"Now user delete the LUN directly on the array by mistaken"},{"line_number":13,"context_line":"and create a new LUN on the array(no matter create it directly"},{"line_number":14,"context_line":"on array on create on the cinder side), the LUN ID of the newly"},{"line_number":15,"context_line":"created LUN will be 10 again! Then every operation on the very"},{"line_number":16,"context_line":"early created volume on the cinder side will be done on the"},{"line_number":17,"context_line":"newly created LUN!"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a5de9d1_e5f9c9c9","line":14,"range":{"start_line":14,"start_character":12,"end_line":14,"end_character":25},"updated":"2016-01-28 01:29:36.000000000","message":"Maybe delete it.","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":11,"context_line":"User create a volume in cinder, the LUN ID on array is 10."},{"line_number":12,"context_line":"Now user delete the LUN directly on the array by mistaken"},{"line_number":13,"context_line":"and create a new LUN on the array(no matter create it directly"},{"line_number":14,"context_line":"on array on create on the cinder side), the LUN ID of the newly"},{"line_number":15,"context_line":"created LUN will be 10 again! Then every operation on the very"},{"line_number":16,"context_line":"early created volume on the cinder side will be done on the"},{"line_number":17,"context_line":"newly created LUN!"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a5de9d1_0570a571","line":14,"range":{"start_line":14,"start_character":9,"end_line":14,"end_character":11},"updated":"2016-01-28 01:29:36.000000000","message":"s/on/or","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"adb5b340a72d853a13dff5640c7205a676f8a7e9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add LUN wwn check in Huawei driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently we use LUN ID as the only identifiter for a LUN,"},{"line_number":10,"context_line":"this will cause problems. For example:"},{"line_number":11,"context_line":"User create a volume in cinder, the LUN ID on array is 10."},{"line_number":12,"context_line":"Now user delete the LUN directly on the array by mistaken"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"bae84128_c2d9a285","line":9,"range":{"start_line":9,"start_character":36,"end_line":9,"end_character":47},"updated":"2016-02-25 08:01:58.000000000","message":"s/identifiter/identifier","commit_id":"b59c6ecd2322d17c06419ec4172c0bdff0ae74c9"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"adb5b340a72d853a13dff5640c7205a676f8a7e9","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"                       }"},{"line_number":2016,"context_line":"        self.mock_object(rest_client.RestClient, \u0027get_lun_id_by_name\u0027,"},{"line_number":2017,"context_line":"                         mock.Mock(return_value\u003dNone))"},{"line_number":2018,"context_line":"        self.driver._check_volume_exist_on_array(test_volume)"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"    def test_create_volume_success(self):"},{"line_number":2021,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_85484489","line":2018,"range":{"start_line":2018,"start_character":20,"end_line":2018,"end_character":61},"updated":"2016-02-25 08:01:58.000000000","message":"Should an \"action\" parameter be in _check_volome_exist_on_array() method here?","commit_id":"b59c6ecd2322d17c06419ec4172c0bdff0ae74c9"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":1340,"context_line":"                                                     lun_id)"},{"line_number":1341,"context_line":"            else:"},{"line_number":1342,"context_line":"                LOG.warning(_LW(\"Lun is not in lungroup. \""},{"line_number":1343,"context_line":"                                \"Lun id: %(lun_id)s. \""},{"line_number":1344,"context_line":"                                \"lungroup id: %(lungroup_id)s.\"),"},{"line_number":1345,"context_line":"                            {\"lun_id\": lun_id,"},{"line_number":1346,"context_line":"                             \"lungroup_id\": lungroup_id})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_c54b6daf","line":1343,"range":{"start_line":1343,"start_character":33,"end_line":1343,"end_character":39},"updated":"2016-01-28 01:29:36.000000000","message":"s/Lun id/LUN ID, maybe it\u0027s should be keep consistent with other messages.","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"    @utils.synchronized(\u0027huawei\u0027, external\u003dTrue)"},{"line_number":1414,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":1415,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":1416,"context_line":"        lun_id \u003d self._check_volume_exist_on_array(volume)"},{"line_number":1417,"context_line":"        if not lun_id:"},{"line_number":1418,"context_line":"            msg \u003d _(\"Volume %s not exists on the array.\") % volume[\u0027id\u0027]"},{"line_number":1419,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        wwns \u003d connector[\u0027wwpns\u0027]"},{"line_number":1422,"context_line":"        LOG.info(_LI("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_e53f8923","line":1419,"range":{"start_line":1416,"start_character":8,"end_line":1419,"end_character":63},"updated":"2016-01-28 01:29:36.000000000","message":"Maybe it\u0027s should be a function named \"ensure_volume\"? The codes are repeated in all the functions.","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":1556,"context_line":"        lun_id \u003d self._check_volume_exist_on_array(volume)"},{"line_number":1557,"context_line":"        if not lun_id:"},{"line_number":1558,"context_line":"            LOG.warning(_LW(\"Volume %s not exists on the array.\"),"},{"line_number":1559,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":1560,"context_line":""},{"line_number":1561,"context_line":"        wwns \u003d connector[\u0027wwpns\u0027]"},{"line_number":1562,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_a520b1f8","line":1559,"range":{"start_line":1558,"start_character":12,"end_line":1559,"end_character":37},"updated":"2016-01-28 01:29:36.000000000","message":"If just warning, maybe it\u0027s redundancy and will be twice, because the warning also in _check_volume_exist_on_array. Or delete the warning in _check_volume_exist_on_array?","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":1566,"context_line":"        view_id \u003d None"},{"line_number":1567,"context_line":"        LOG.info(_LI(\u0027terminate_connection: wwpns: %(wwns)s, \u0027"},{"line_number":1568,"context_line":"                     \u0027LUN ID: %(lunid)s.\u0027),"},{"line_number":1569,"context_line":"                 {\u0027wwns\u0027: wwns, \u0027lunid\u0027: lun_id})"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        host_name \u003d huawei_utils.encode_host_name(host_name)"},{"line_number":1572,"context_line":"        host_id \u003d self.client.get_host_id_by_name(host_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_a5fc313f","line":1569,"range":{"start_line":1569,"start_character":32,"end_line":1569,"end_character":47},"updated":"2016-01-28 01:29:36.000000000","message":"Maybe lunid or lun_id, just keep consistent, like 1588.Also all the other place.","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":1583,"context_line":"                                                     lun_id)"},{"line_number":1584,"context_line":"            else:"},{"line_number":1585,"context_line":"                LOG.warning(_LW(\"Lun is not in lungroup. \""},{"line_number":1586,"context_line":"                                \"Lun id: %(lun_id)s. \""},{"line_number":1587,"context_line":"                                \"Lungroup id: %(lungroup_id)s.\"),"},{"line_number":1588,"context_line":"                            {\"lun_id\": lun_id,"},{"line_number":1589,"context_line":"                             \"lungroup_id\": lungroup_id})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_65ee398d","line":1586,"range":{"start_line":1586,"start_character":33,"end_line":1586,"end_character":39},"updated":"2016-01-28 01:29:36.000000000","message":"same","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"8840620f22ab5b415b2df7cfe8dbbc5ae5adef3f","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":684,"context_line":"        # If LUN ID not recorded, find LUN ID by LUN NAME."},{"line_number":685,"context_line":"        if not lun_id:"},{"line_number":686,"context_line":"            LOG.warning(_LW(\"No LUN ID recorded for volume %s, find it by \""},{"line_number":687,"context_line":"                            \"Name now.\"), volume[\u0027id\u0027])"},{"line_number":688,"context_line":"            volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":689,"context_line":"            lun_id \u003d self.client.get_lun_id_by_name(volume_name)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7af24918_4fee19ed","line":686,"updated":"2016-03-02 16:07:41.000000000","message":"Same with my previous comments.","commit_id":"01f7ce193aa04a5adb40545f3b65c7ab178c5d59"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"761970b16fa4f72f2bafe5a90919d7aca9d8c384","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        model_update[\u0027provider_location\u0027] \u003d lun_info[\u0027ID\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":233,"context_line":"        metadata.update({\u0027lun_wwn\u0027: lun_info[\u0027WWN\u0027]})"},{"line_number":234,"context_line":"        model_update[\u0027metadata\u0027] \u003d metadata"},{"line_number":235,"context_line":"        return lun_info, model_update"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_721e19bc","line":233,"range":{"start_line":233,"start_character":7,"end_line":233,"end_character":53},"updated":"2016-03-03 13:04:05.000000000","message":"Is there possible that users also set this key?","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f2d773382d1cc9c5210c68b2eee98e9c2f6e15ea","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        model_update[\u0027provider_location\u0027] \u003d lun_info[\u0027ID\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":233,"context_line":"        metadata.update({\u0027lun_wwn\u0027: lun_info[\u0027WWN\u0027]})"},{"line_number":234,"context_line":"        model_update[\u0027metadata\u0027] \u003d metadata"},{"line_number":235,"context_line":"        return lun_info, model_update"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_54b91bcb","line":233,"range":{"start_line":233,"start_character":7,"end_line":233,"end_character":53},"in_reply_to":"7af24918_5e777c9f","updated":"2016-03-04 03:58:07.000000000","message":"yeah, that makes sense to me.","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4a78fe91be3c65557368f4e3ac36da6f39816be3","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        model_update[\u0027provider_location\u0027] \u003d lun_info[\u0027ID\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":233,"context_line":"        metadata.update({\u0027lun_wwn\u0027: lun_info[\u0027WWN\u0027]})"},{"line_number":234,"context_line":"        model_update[\u0027metadata\u0027] \u003d metadata"},{"line_number":235,"context_line":"        return lun_info, model_update"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_5e777c9f","line":233,"range":{"start_line":233,"start_character":7,"end_line":233,"end_character":53},"in_reply_to":"7af24918_721e19bc","updated":"2016-03-04 02:40:46.000000000","message":"This is really a good point out. Maybe we should change it to \u0027huawei_lun_wwn\u0027 to avoid this.","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"761970b16fa4f72f2bafe5a90919d7aca9d8c384","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        \"\"\"Check whether the volume exists on the array."},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        If the volume exists on the array, return the LUN ID."},{"line_number":680,"context_line":"        If not exists, return None."},{"line_number":681,"context_line":"        \"\"\""},{"line_number":682,"context_line":"        # Firstly, try to find LUN ID by volume[\u0027provider_location\u0027]."},{"line_number":683,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_128875c4","line":680,"range":{"start_line":680,"start_character":8,"end_line":680,"end_character":35},"updated":"2016-03-03 13:04:05.000000000","message":"If action is \u0027raise\u0027, this method will raise an exception, so we should add this doc.","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4a78fe91be3c65557368f4e3ac36da6f39816be3","unresolved":false,"context_lines":[{"line_number":677,"context_line":"        \"\"\"Check whether the volume exists on the array."},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        If the volume exists on the array, return the LUN ID."},{"line_number":680,"context_line":"        If not exists, return None."},{"line_number":681,"context_line":"        \"\"\""},{"line_number":682,"context_line":"        # Firstly, try to find LUN ID by volume[\u0027provider_location\u0027]."},{"line_number":683,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_feb3e84a","line":680,"range":{"start_line":680,"start_character":8,"end_line":680,"end_character":35},"in_reply_to":"7af24918_128875c4","updated":"2016-03-04 02:40:46.000000000","message":"Done","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"761970b16fa4f72f2bafe5a90919d7aca9d8c384","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                    LOG.warning(msg)"},{"line_number":693,"context_line":"                if action \u003d\u003d \u0027raise\u0027:"},{"line_number":694,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":695,"context_line":"                return None"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":698,"context_line":"        lun_wwn \u003d metadata.get(\u0027lun_wwn\u0027) if metadata else None"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_d25c4d7f","line":695,"range":{"start_line":695,"start_character":16,"end_line":695,"end_character":27},"updated":"2016-03-03 13:04:05.000000000","message":"just return is fine.","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4a78fe91be3c65557368f4e3ac36da6f39816be3","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                    LOG.warning(msg)"},{"line_number":693,"context_line":"                if action \u003d\u003d \u0027raise\u0027:"},{"line_number":694,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":695,"context_line":"                return None"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":698,"context_line":"        lun_wwn \u003d metadata.get(\u0027lun_wwn\u0027) if metadata else None"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_be6680ea","line":695,"range":{"start_line":695,"start_character":16,"end_line":695,"end_character":27},"in_reply_to":"7af24918_d25c4d7f","updated":"2016-03-04 02:40:46.000000000","message":"Done","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"761970b16fa4f72f2bafe5a90919d7aca9d8c384","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                LOG.warning(msg)"},{"line_number":707,"context_line":"            if action \u003d\u003d \u0027raise\u0027:"},{"line_number":708,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":709,"context_line":"            return None"},{"line_number":710,"context_line":"        return lun_id"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_724c59c8","line":709,"range":{"start_line":709,"start_character":12,"end_line":709,"end_character":23},"updated":"2016-03-03 13:04:05.000000000","message":"here too.","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4a78fe91be3c65557368f4e3ac36da6f39816be3","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                LOG.warning(msg)"},{"line_number":707,"context_line":"            if action \u003d\u003d \u0027raise\u0027:"},{"line_number":708,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":709,"context_line":"            return None"},{"line_number":710,"context_line":"        return lun_id"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7af24918_1e6214d8","line":709,"range":{"start_line":709,"start_character":12,"end_line":709,"end_character":23},"in_reply_to":"7af24918_724c59c8","updated":"2016-03-04 02:40:46.000000000","message":"Done","commit_id":"20ee32e146eff84fc74ffa8fda5b63713890f374"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"f66c3c701ac4f613cf53f2f5251b9e2d940fdb22","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        model_update[\u0027provider_location\u0027] \u003d lun_info[\u0027ID\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":233,"context_line":"        metadata.update({\u0027huawei_lun_wwn\u0027: lun_info[\u0027WWN\u0027]})"},{"line_number":234,"context_line":"        model_update[\u0027metadata\u0027] \u003d metadata"},{"line_number":235,"context_line":"        return lun_info, model_update"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5aef4532_c76e8895","line":233,"range":{"start_line":233,"start_character":0,"end_line":233,"end_character":60},"updated":"2016-03-09 00:54:22.000000000","message":"Metadata is not the place to store this - the metadata keys/values can be freely used / edited by the tenant. This means they can corrupt, swap and otherwise mess with their volumes. I suspect if you tried hard then there\u0027d be a security hole here, thought wwid guessing is hard.\n\nadmin_metadata with a driver scoped key might be a better place?","commit_id":"c25ba130634bd2ad0a26d68e6204f3496f279e90"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"0392815b5a4d33e9f5be260d8e2b0e704f514cbf","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        model_update[\u0027provider_location\u0027] \u003d lun_info[\u0027ID\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":233,"context_line":"        metadata.update({\u0027huawei_lun_wwn\u0027: lun_info[\u0027WWN\u0027]})"},{"line_number":234,"context_line":"        model_update[\u0027metadata\u0027] \u003d metadata"},{"line_number":235,"context_line":"        return lun_info, model_update"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3afc51ec_7da5cc02","line":233,"range":{"start_line":233,"start_character":0,"end_line":233,"end_character":60},"in_reply_to":"5aef4532_c76e8895","updated":"2016-03-12 03:37:55.000000000","message":"Thanks Duncan, I\u0027v changed it to admin_metadata and it seems better now, thanks!","commit_id":"c25ba130634bd2ad0a26d68e6204f3496f279e90"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fee903a41cbbb69f184d60202a68fd7ef74603d8","unresolved":false,"context_lines":[{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":688,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":689,"context_line":"        self._check_volume_exist_on_array(src_vref, \u0027raise\u0027)"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        # Form the snapshot structure."},{"line_number":692,"context_line":"        snapshot \u003d {\u0027id\u0027: uuid.uuid4().__str__(),"}],"source_content_type":"text/x-python","patch_set":24,"id":"1af94dfe_d90cc93d","line":689,"updated":"2016-03-16 16:14:59.000000000","message":"I probably would have made the \u0027raise\u0027 a define and called it VOLUME_EXISTS_RAISE\nVOLUME_EXISTS_WARNING","commit_id":"f8fd238799ee5080bd9286656a0befb63d31caba"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"258c09bb1817d16637f3331816b2fadbbb3dfc3b","unresolved":false,"context_lines":[{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":688,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":689,"context_line":"        self._check_volume_exist_on_array(src_vref, \u0027raise\u0027)"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        # Form the snapshot structure."},{"line_number":692,"context_line":"        snapshot \u003d {\u0027id\u0027: uuid.uuid4().__str__(),"}],"source_content_type":"text/x-python","patch_set":24,"id":"1af94dfe_2f3623e6","line":689,"in_reply_to":"1af94dfe_d90cc93d","updated":"2016-03-17 05:00:28.000000000","message":"Done, thanks!","commit_id":"f8fd238799ee5080bd9286656a0befb63d31caba"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":844,"context_line":"        self._assert_rest_result(result, _(\u0027Remove CHAP error.\u0027))"},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"    def find_mapping_view(self, name):"},{"line_number":847,"context_line":"        if not name:"},{"line_number":848,"context_line":"            return None"},{"line_number":849,"context_line":"        \"\"\"Find mapping view.\"\"\""},{"line_number":850,"context_line":"        url \u003d \"/mappingview?range\u003d[0-8191]\""},{"line_number":851,"context_line":"        result \u003d self.call(url, None, \"GET\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_65187985","line":848,"range":{"start_line":847,"start_character":8,"end_line":848,"end_character":23},"updated":"2016-01-28 01:29:36.000000000","message":"Maybe it\u0027s not this bug\u0027s codes?","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"affa05948de724da29213b27dd1ce5562c341f66","unresolved":false,"context_lines":[{"line_number":856,"context_line":"        return self._get_id_from_result(result, name, \u0027NAME\u0027)"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    def _add_mapping_view(self, name):"},{"line_number":859,"context_line":"        if not name:"},{"line_number":860,"context_line":"            return None"},{"line_number":861,"context_line":"        url \u003d \"/mappingview\""},{"line_number":862,"context_line":"        data \u003d {\"NAME\": name, \"TYPE\": \"245\"}"},{"line_number":863,"context_line":"        result \u003d self.call(url, data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_e50c6944","line":860,"range":{"start_line":859,"start_character":8,"end_line":860,"end_character":23},"updated":"2016-01-28 01:29:36.000000000","message":"Same.","commit_id":"6a75152bb33f9bd3e6bd0b8881203cef313223b1"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"8840620f22ab5b415b2df7cfe8dbbc5ae5adef3f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":198,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":199,"context_line":"        if error_code !\u003d 0:"},{"line_number":200,"context_line":"            LOG.warning(_LW(\"Can\u0027t find lun %s on the array.\"), lun_id)"},{"line_number":201,"context_line":"            return False"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if lun_wwn and result[\u0027data\u0027][\u0027WWN\u0027] !\u003d lun_wwn:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7af24918_8f3b019c","line":200,"updated":"2016-03-02 16:07:41.000000000","message":"What do you expect the operator to do with this information? How do they know which action was checking if the lun exists?","commit_id":"01f7ce193aa04a5adb40545f3b65c7ab178c5d59"}]}
