)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"3d03817888a285c628c05e557d1130d3a9dd4192","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the target host and the original volume is on the same array,"},{"line_number":10,"context_line":"then Huawei driver will do the migration now, instead of leave it"},{"line_number":11,"context_line":"done by the general migration progress."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ife8fca765402e95778079fb0166b3abf9684d134"},{"line_number":14,"context_line":"Implements: blueprint huawei-storage-volume-migration-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"3a50d1a3_193d11bb","line":11,"updated":"2015-07-27 15:14:11.000000000","message":"Suggestion: \"... will do the migration now instead of having it done by the general migration progress.\". \n\nAlso is \"progress\" correct or is that word supposed to be \"process\"?","commit_id":"6345a1b6693143551fe36743d9266474cbe1f2f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"67b878b81fdd7c66646e75a6ffa11f73ed0dbd21","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the target host and the original volume is on the same array,"},{"line_number":10,"context_line":"then Huawei driver will do the migration now, instead of leave it"},{"line_number":11,"context_line":"done by the general migration progress."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ife8fca765402e95778079fb0166b3abf9684d134"},{"line_number":14,"context_line":"Implements: blueprint huawei-storage-volume-migration-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"3a50d1a3_a434f4fa","line":11,"in_reply_to":"3a50d1a3_193d11bb","updated":"2015-07-27 15:41:36.000000000","message":"Done","commit_id":"6345a1b6693143551fe36743d9266474cbe1f2f4"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0132033f6821c5d72f944f8791707c2c867b7099","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                              \u0027vendor_name\u0027: None,"},{"line_number":78,"context_line":"                              \u0027thick_provisioning\u0027: True,"},{"line_number":79,"context_line":"                              \u0027thin_provisioning\u0027: True,"},{"line_number":80,"context_line":"                              \u0027storage_protocol\u0027: \u0027FC\u0027"},{"line_number":81,"context_line":"                              }"},{"line_number":82,"context_line":"             }"},{"line_number":83,"context_line":"FakeConnector \u003d {\u0027initiator\u0027: \u0027iqn.1993-08.debian:01:ec2bff7ac3a3\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_5866bd51","line":80,"updated":"2015-07-16 06:31:29.000000000","message":"Add a trailing comma please.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0132033f6821c5d72f944f8791707c2c867b7099","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        \"DATATRANSFERPOLICY\": \"0\","},{"line_number":180,"context_line":"        \"READCACHEPOLICY\": \"2\","},{"line_number":181,"context_line":"        \"WRITECACHEPOLICY\": \"5\","},{"line_number":182,"context_line":"        \"OWNINGCONTROLLER\":\"0B\""},{"line_number":183,"context_line":"    }"},{"line_number":184,"context_line":"}"},{"line_number":185,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_f858f18b","line":182,"updated":"2015-07-16 06:31:29.000000000","message":"here too.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f96af6e017d9ad0ca43970fc3dc0247245bce554","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"DATATRANSFERPOLICY\": \"0\","},{"line_number":183,"context_line":"        \"READCACHEPOLICY\": \"2\","},{"line_number":184,"context_line":"        \"WRITECACHEPOLICY\": \"5\","},{"line_number":185,"context_line":"        \"OWNINGCONTROLLER\":\"0B\""},{"line_number":186,"context_line":"    }"},{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_3301ba38","line":185,"updated":"2015-07-23 00:25:18.000000000","message":"Add trailing comma here.","commit_id":"42b7ec92841e00d3cc20ef861bab460aeb719e60"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cfcb2767bf960ea8b6b27c6f4f9b2f534ed79716","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"DATATRANSFERPOLICY\": \"0\","},{"line_number":183,"context_line":"        \"READCACHEPOLICY\": \"2\","},{"line_number":184,"context_line":"        \"WRITECACHEPOLICY\": \"5\","},{"line_number":185,"context_line":"        \"OWNINGCONTROLLER\":\"0B\""},{"line_number":186,"context_line":"    }"},{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_eec7e861","line":185,"in_reply_to":"3a50d1a3_3301ba38","updated":"2015-07-23 02:07:38.000000000","message":"This is a docstring. If I add a trailing comma here, the call method will raise a error like this \"      File \"/usr/lib/python2.7/json/decoder.py\", line 382, in raw_decode\n        obj, end \u003d self.scan_once(s, idx)\nValueError: Expecting property name: line 25 column 5 (char 617)\", maybe the json can not understand the trailing comma?","commit_id":"42b7ec92841e00d3cc20ef861bab460aeb719e60"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_1ebd6e01","line":18,"updated":"2015-07-16 12:50:46.000000000","message":"Unneeded blank line","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_b7e825b4","line":18,"in_reply_to":"9a41bdd9_1ebd6e01","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":124,"context_line":"        LOG.info(_LI(\u0027Delete volume: %(name)s, array lun id: %(lun_id)s.\u0027),"},{"line_number":125,"context_line":"                 {\u0027name\u0027: name, \u0027lun_id\u0027: lun_id},)"},{"line_number":126,"context_line":"        if lun_id:"},{"line_number":127,"context_line":"            if self.restclient.check_lun_exist(lun_id) is True:"},{"line_number":128,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_b4f4a3f0","line":126,"updated":"2015-07-16 12:50:46.000000000","message":"This is not related to the migration feature, it should go in its own change.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":124,"context_line":"        LOG.info(_LI(\u0027Delete volume: %(name)s, array lun id: %(lun_id)s.\u0027),"},{"line_number":125,"context_line":"                 {\u0027name\u0027: name, \u0027lun_id\u0027: lun_id},)"},{"line_number":126,"context_line":"        if lun_id:"},{"line_number":127,"context_line":"            if self.restclient.check_lun_exist(lun_id) is True:"},{"line_number":128,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_926c0fd1","line":126,"in_reply_to":"9a41bdd9_b4f4a3f0","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        LOG.info(_LI(\u0027Delete volume: %(name)s, array lun id: %(lun_id)s.\u0027),"},{"line_number":125,"context_line":"                 {\u0027name\u0027: name, \u0027lun_id\u0027: lun_id},)"},{"line_number":126,"context_line":"        if lun_id:"},{"line_number":127,"context_line":"            if self.restclient.check_lun_exist(lun_id) is True:"},{"line_number":128,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"                if qos_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_a1978738","line":127,"updated":"2015-07-16 12:50:46.000000000","message":"if the lun does not exist in the backend, the function will try to delete anyway whitout the log message\nelse:\n     LOG.warning(_LW(\"Can\u0027t find %(lun_id)s on the array.\"),","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        LOG.info(_LI(\u0027Delete volume: %(name)s, array lun id: %(lun_id)s.\u0027),"},{"line_number":125,"context_line":"                 {\u0027name\u0027: name, \u0027lun_id\u0027: lun_id},)"},{"line_number":126,"context_line":"        if lun_id:"},{"line_number":127,"context_line":"            if self.restclient.check_lun_exist(lun_id) is True:"},{"line_number":128,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"                if qos_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_72c2ab86","line":127,"in_reply_to":"9a41bdd9_a1978738","updated":"2015-07-16 14:31:11.000000000","message":"Sorry, I don\u0027t get your point, could you explain specificly?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"2a0aae98f7a2128462f34de5fb856bea44a6db14","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        LOG.info(_LI(\u0027Delete volume: %(name)s, array lun id: %(lun_id)s.\u0027),"},{"line_number":125,"context_line":"                 {\u0027name\u0027: name, \u0027lun_id\u0027: lun_id},)"},{"line_number":126,"context_line":"        if lun_id:"},{"line_number":127,"context_line":"            if self.restclient.check_lun_exist(lun_id) is True:"},{"line_number":128,"context_line":"                qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"                if qos_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_25025f3f","line":127,"in_reply_to":"9a41bdd9_a1978738","updated":"2015-07-17 14:51:10.000000000","message":"Sorry, I wasn\u0027t clear indeed. The sugestion is that you also print the log warning, \"Can\u0027t find the array\" in this situation, after you call  self.restclient.check_lun_exist(lun_id).","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":143,"context_line":"        else:"},{"line_number":144,"context_line":"            LOG.warning(_LW(\"Can\u0027t find %s on the array.\"), lun_id)"},{"line_number":145,"context_line":"            return False"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_61cdff64","line":144,"updated":"2015-07-16 12:50:46.000000000","message":"What\u0027s is the reason to change this?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":143,"context_line":"        else:"},{"line_number":144,"context_line":"            LOG.warning(_LW(\"Can\u0027t find %s on the array.\"), lun_id)"},{"line_number":145,"context_line":"            return False"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_72db8b7c","line":144,"in_reply_to":"9a41bdd9_61cdff64","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return True"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _delete_lun_with_check(self, dst_id):"},{"line_number":150,"context_line":"        LOG.info(_LI(\"Try to delete lun %s if it exists.\"), dst_id)"},{"line_number":151,"context_line":"        if self.restclient.check_lun_exist(dst_id):"},{"line_number":152,"context_line":"            qos_id \u003d self.restclient.get_qosid_by_lunid(dst_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_e17b4ff3","line":149,"updated":"2015-07-16 12:50:46.000000000","message":"This should be the same logic of the delete_volume shouldn\u0027t? If so, here you are not checking that the lun is removed from the QoS group in the array, why not to re-use this functions there?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return True"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _delete_lun_with_check(self, dst_id):"},{"line_number":150,"context_line":"        LOG.info(_LI(\"Try to delete lun %s if it exists.\"), dst_id)"},{"line_number":151,"context_line":"        if self.restclient.check_lun_exist(dst_id):"},{"line_number":152,"context_line":"            qos_id \u003d self.restclient.get_qosid_by_lunid(dst_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_e21028ae","line":149,"in_reply_to":"9a41bdd9_e17b4ff3","updated":"2015-07-16 14:31:11.000000000","message":"There is still some difference, we will have a discuss about it.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            def _is_lun_migration_complete():"},{"line_number":193,"context_line":"                return self._is_lun_migration_complete(src_id, dst_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"            wait_inteveal \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":196,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":197,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":198,"context_line":"                                            wait_inteveal)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_34df33d7","line":195,"updated":"2015-07-16 12:50:46.000000000","message":"wait_interval","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            def _is_lun_migration_complete():"},{"line_number":193,"context_line":"                return self._is_lun_migration_complete(src_id, dst_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"            wait_inteveal \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":196,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":197,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":198,"context_line":"                                            wait_inteveal)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_22761007","line":195,"in_reply_to":"9a41bdd9_34df33d7","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            return False"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        pool_name \u003d host[\u0027capabilities\u0027][\u0027pool_name\u0027]"},{"line_number":254,"context_line":"        if len(pool_name) \u003d\u003d 0:"},{"line_number":255,"context_line":"            return False"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_74937b5b","line":254,"updated":"2015-07-16 12:50:46.000000000","message":"Why would the poolname be empty?  Why it can not be empty?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"2a0aae98f7a2128462f34de5fb856bea44a6db14","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            return False"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        pool_name \u003d host[\u0027capabilities\u0027][\u0027pool_name\u0027]"},{"line_number":254,"context_line":"        if len(pool_name) \u003d\u003d 0:"},{"line_number":255,"context_line":"            return False"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_458683ba","line":254,"in_reply_to":"9a41bdd9_74937b5b","updated":"2015-07-17 14:51:10.000000000","message":"?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        return moved, {}"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def create_lun_with_extra_feature(self, poolinfo,"},{"line_number":321,"context_line":"                                      lun_name,"},{"line_number":322,"context_line":"                                      lun_params,"},{"line_number":323,"context_line":"                                      spec_opts):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_3445f341","line":320,"updated":"2015-07-16 12:50:46.000000000","message":"_create_lun_with_extra_feature(), private function","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        return moved, {}"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def create_lun_with_extra_feature(self, poolinfo,"},{"line_number":321,"context_line":"                                      lun_name,"},{"line_number":322,"context_line":"                                      lun_params,"},{"line_number":323,"context_line":"                                      spec_opts):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_02998c1f","line":320,"in_reply_to":"9a41bdd9_3445f341","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0132033f6821c5d72f944f8791707c2c867b7099","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                    \"DATATRANSFERPOLICY\": \u00270\u0027,"},{"line_number":338,"context_line":"                    \"READCACHEPOLICY\": lun_params[\u0027READCACHEPOLICY\u0027],"},{"line_number":339,"context_line":"                    \"WRITECACHEPOLICY\": lun_params[\u0027WRITECACHEPOLICY\u0027],"},{"line_number":340,"context_line":"                    \"OWNINGCONTROLLER\": lun_params[\u0027OWNINGCONTROLLER\u0027]}"},{"line_number":341,"context_line":"        if \u0027LUNType\u0027 in spec_opts:"},{"line_number":342,"context_line":"            lunparam[\u0027ALLOCTYPE\u0027] \u003d spec_opts[\u0027LUNType\u0027]"},{"line_number":343,"context_line":"        if spec_opts[\u0027policy\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_d8872db3","line":340,"updated":"2015-07-16 06:31:29.000000000","message":"Need a trailing comma.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        host_name_before_hash \u003d None"},{"line_number":505,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":506,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":507,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":508,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_c13c0be3","line":506,"updated":"2015-07-16 12:50:46.000000000","message":"Not related to migration, should go in a separate change.BTW, what\u0027s the meaning of this constant? Please use macros to give meaning to constant numbers. e.g. MAX_STRING_LEN \u003d 31","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        host_name_before_hash \u003d None"},{"line_number":505,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":506,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":507,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":508,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_02c0acdf","line":506,"in_reply_to":"9a41bdd9_c13c0be3","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":576,"context_line":"        # Create hostgroup if not exist."},{"line_number":577,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":578,"context_line":"        host_name_before_hash \u003d None"},{"line_number":579,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":580,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":581,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":582,"context_line":"        hostid \u003d self.restclient.add_host_with_check(host_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_618c1fda","line":579,"updated":"2015-07-16 12:50:46.000000000","message":"Not related to migration","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":576,"context_line":"        # Create hostgroup if not exist."},{"line_number":577,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":578,"context_line":"        host_name_before_hash \u003d None"},{"line_number":579,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":580,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":581,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":582,"context_line":"        hostid \u003d self.restclient.add_host_with_check(host_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_a2b46082","line":579,"in_reply_to":"9a41bdd9_618c1fda","updated":"2015-07-16 14:31:11.000000000","message":"Done","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b50f8196b9350b45d83648e509721daa093508d2","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            def _is_lun_migration_complete():"},{"line_number":192,"context_line":"                return self._is_lun_migration_complete(src_id, dst_id)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            wait_inteval \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":195,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_inteval)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_25257fc1","line":194,"updated":"2015-07-17 14:50:57.000000000","message":"wait_interval","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            def _is_lun_migration_complete():"},{"line_number":192,"context_line":"                return self._is_lun_migration_complete(src_id, dst_id)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            wait_inteval \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":195,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_inteval)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_834f8cbd","line":194,"in_reply_to":"9a41bdd9_25257fc1","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b50f8196b9350b45d83648e509721daa093508d2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            wait_inteval \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":195,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_inteval)"},{"line_number":198,"context_line":"        # Clean up if migration failed."},{"line_number":199,"context_line":"        except Exception as ex:"},{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_250c9f41","line":197,"updated":"2015-07-17 14:50:57.000000000","message":"wait_interval","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            wait_inteval \u003d constants.MIGRATION_WAIT_INTERVAL"},{"line_number":195,"context_line":"            huawei_utils.wait_for_condition(self.xml_file_path,"},{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_inteval)"},{"line_number":198,"context_line":"        # Clean up if migration failed."},{"line_number":199,"context_line":"        except Exception as ex:"},{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_234ec0c1","line":197,"in_reply_to":"9a41bdd9_250c9f41","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"16dcc7048d6d8fd80225d7ef903df26bc5234f6e","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":201,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":203,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":204,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":205,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":206,"context_line":"        self._delete_lun_with_check(dst_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_db2ef0a4","line":203,"updated":"2015-07-17 15:34:16.000000000","message":"Add a blank line.","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":201,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":203,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":204,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":205,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":206,"context_line":"        self._delete_lun_with_check(dst_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_434984b6","line":203,"in_reply_to":"9a41bdd9_db2ef0a4","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"16dcc7048d6d8fd80225d7ef903df26bc5234f6e","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        # Same protocol should be used if volume is in-use."},{"line_number":247,"context_line":"        protocol \u003d huawei_utils._get_protocol(self.xml_file_path)"},{"line_number":248,"context_line":"        if host[\u0027capabilities\u0027][\u0027storage_protocol\u0027] !\u003d protocol \\"},{"line_number":249,"context_line":"                and self._get_original_status(volume) \u003d\u003d \u0027in-use\u0027:"},{"line_number":250,"context_line":"            return False"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_f7a74809","line":248,"updated":"2015-07-17 15:34:16.000000000","message":"use () instead of \\.","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        # Same protocol should be used if volume is in-use."},{"line_number":247,"context_line":"        protocol \u003d huawei_utils._get_protocol(self.xml_file_path)"},{"line_number":248,"context_line":"        if host[\u0027capabilities\u0027][\u0027storage_protocol\u0027] !\u003d protocol \\"},{"line_number":249,"context_line":"                and self._get_original_status(volume) \u003d\u003d \u0027in-use\u0027:"},{"line_number":250,"context_line":"            return False"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_03ca9c1a","line":248,"in_reply_to":"9a41bdd9_f7a74809","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"16dcc7048d6d8fd80225d7ef903df26bc5234f6e","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            volume_type \u003d volume_types.get_volume_type(None, type_id)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        pool_name \u003d host[\u0027capabilities\u0027][\u0027pool_name\u0027]"},{"line_number":269,"context_line":"        poolinfo \u003d self.restclient._find_pool_info_for_migration(pool_name)"},{"line_number":270,"context_line":"        src_volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":271,"context_line":"        dst_volume_name \u003d str(hash(src_volume_name))"},{"line_number":272,"context_line":"        src_id \u003d volume.get(\u0027provider_location\u0027, None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_b7d8e080","line":269,"updated":"2015-07-17 15:34:16.000000000","message":"It\u0027s better to use \"pool_info\" instead of \"poolinfo\".","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            volume_type \u003d volume_types.get_volume_type(None, type_id)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        pool_name \u003d host[\u0027capabilities\u0027][\u0027pool_name\u0027]"},{"line_number":269,"context_line":"        poolinfo \u003d self.restclient._find_pool_info_for_migration(pool_name)"},{"line_number":270,"context_line":"        src_volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":271,"context_line":"        dst_volume_name \u003d str(hash(src_volume_name))"},{"line_number":272,"context_line":"        src_id \u003d volume.get(\u0027provider_location\u0027, None)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_03f13c6a","line":269,"in_reply_to":"9a41bdd9_b7d8e080","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"16dcc7048d6d8fd80225d7ef903df26bc5234f6e","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        host_name_before_hash \u003d None"},{"line_number":503,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":504,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":505,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":506,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_da08292b","line":504,"updated":"2015-07-17 15:34:16.000000000","message":"I suggest use CONSTANT instead of 31.","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8479cd8400ea629e26b4dd3a5f62849253bcb492","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        host_name_before_hash \u003d None"},{"line_number":503,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":504,"context_line":"        if host_name and (len(host_name) \u003e 31):"},{"line_number":505,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":506,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_e39458e9","line":504,"in_reply_to":"9a41bdd9_da08292b","updated":"2015-07-18 02:03:54.000000000","message":"Done","commit_id":"e0b004c9edae9ca55cf81cd3087ac014a162804e"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e4c3b083cb10c700e2e4b8d5e745d60169b2a21c","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                    \"DATATRANSFERPOLICY\": \u00270\u0027,"},{"line_number":337,"context_line":"                    \"READCACHEPOLICY\": lun_params[\u0027READCACHEPOLICY\u0027],"},{"line_number":338,"context_line":"                    \"WRITECACHEPOLICY\": lun_params[\u0027WRITECACHEPOLICY\u0027],"},{"line_number":339,"context_line":"                    \"OWNINGCONTROLLER\": lun_params[\u0027OWNINGCONTROLLER\u0027]}"},{"line_number":340,"context_line":"        if \u0027LUNType\u0027 in spec_opts:"},{"line_number":341,"context_line":"            lunparam[\u0027ALLOCTYPE\u0027] \u003d spec_opts[\u0027LUNType\u0027]"},{"line_number":342,"context_line":"        if spec_opts[\u0027policy\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_1d747d9a","line":339,"updated":"2015-07-20 07:21:12.000000000","message":"Should add trailing comma, and make a new line for the last \"}\".","commit_id":"7b7e241b4b9042784d0341fedf95d0764a2c8cb7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"ba43567f56bde5986dec14f7e95312b9f56fc36b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_interval)"},{"line_number":198,"context_line":"        # Clean up if migration failed."},{"line_number":199,"context_line":"        except Exception as ex:"},{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":201,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_f45ad582","line":199,"updated":"2015-07-21 05:04:04.000000000","message":"lun migration raises VolumeBackendException. Do you want to catch that exception specifically to initiate the cleanup?","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"6ff7b513d53606c6976fec926324379f652e13ce","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_interval)"},{"line_number":198,"context_line":"        # Clean up if migration failed."},{"line_number":199,"context_line":"        except Exception as ex:"},{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":201,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_242acfdb","line":199,"in_reply_to":"3a50d1a3_40eae310","updated":"2015-07-23 03:29:19.000000000","message":"Cleanup sounds good. thanks for explaining.","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"500394b398f52dbf585fd222fc7fd5c11f60224b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                            _is_lun_migration_complete,"},{"line_number":197,"context_line":"                                            wait_interval)"},{"line_number":198,"context_line":"        # Clean up if migration failed."},{"line_number":199,"context_line":"        except Exception as ex:"},{"line_number":200,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":201,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_40eae310","line":199,"in_reply_to":"3a50d1a3_f45ad582","updated":"2015-07-21 06:41:47.000000000","message":"I think no matter what type of exception raised, I should do the cleanup. Do you have any better suggestion?","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"ba43567f56bde5986dec14f7e95312b9f56fc36b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":203,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":206,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":207,"context_line":"        self._delete_lun_with_check(dst_id)"},{"line_number":208,"context_line":"        LOG.debug(\"Migrate lun %s successfully.\", src_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_f4441575","line":205,"updated":"2015-07-21 05:04:04.000000000","message":"The only difference between above exception handling and below success return is the raise exception statement on line 203. Do you want to consider reducing the code redundancy?","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"6ff7b513d53606c6976fec926324379f652e13ce","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":203,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":206,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":207,"context_line":"        self._delete_lun_with_check(dst_id)"},{"line_number":208,"context_line":"        LOG.debug(\"Migrate lun %s successfully.\", src_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_e4a94725","line":205,"in_reply_to":"3a50d1a3_05e86db3","updated":"2015-07-23 03:29:19.000000000","message":"Simplest way is to make a function for line 200-202 and call that from both the places. After the function execution raise exception at 203 and return True at 209","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"500394b398f52dbf585fd222fc7fd5c11f60224b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":203,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":206,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":207,"context_line":"        self._delete_lun_with_check(dst_id)"},{"line_number":208,"context_line":"        LOG.debug(\"Migrate lun %s successfully.\", src_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_05e86db3","line":205,"in_reply_to":"3a50d1a3_f4441575","updated":"2015-07-21 06:41:47.000000000","message":"I agree with you that we should reduce code redundancy here, but I don\u0027t find the way to reduce. Do you have any suggestion?","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"ba43567f56bde5986dec14f7e95312b9f56fc36b","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        def _volume_ready():"},{"line_number":217,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":218,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d \"1\":"},{"line_number":219,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d \"27\":"},{"line_number":220,"context_line":"                    return True"},{"line_number":221,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_6f51120e","line":218,"updated":"2015-07-21 05:04:04.000000000","message":"Candidate for a constant.","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"500394b398f52dbf585fd222fc7fd5c11f60224b","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        def _volume_ready():"},{"line_number":217,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":218,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d \"1\":"},{"line_number":219,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d \"27\":"},{"line_number":220,"context_line":"                    return True"},{"line_number":221,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_a52bb993","line":218,"in_reply_to":"3a50d1a3_6f51120e","updated":"2015-07-21 06:41:47.000000000","message":"Done","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"ba43567f56bde5986dec14f7e95312b9f56fc36b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        def _volume_ready():"},{"line_number":217,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":218,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d \"1\":"},{"line_number":219,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d \"27\":"},{"line_number":220,"context_line":"                    return True"},{"line_number":221,"context_line":"            return False"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_0f588e31","line":219,"updated":"2015-07-21 05:04:04.000000000","message":"ditto.","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"500394b398f52dbf585fd222fc7fd5c11f60224b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        def _volume_ready():"},{"line_number":217,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":218,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d \"1\":"},{"line_number":219,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d \"27\":"},{"line_number":220,"context_line":"                    return True"},{"line_number":221,"context_line":"            return False"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_8530fd02","line":219,"in_reply_to":"3a50d1a3_0f588e31","updated":"2015-07-21 06:41:47.000000000","message":"Done","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"c4380eb4f4dfa1c2b914ed80b7f0af0fb18590c3","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        dst_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":313,"context_line":"        self._wait_volume_ready(dst_id)"},{"line_number":314,"context_line":"        moved \u003d False"},{"line_number":315,"context_line":"        moved \u003d self._migrate_lun(src_id, dst_id, src_volume_name)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return moved, {}"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_dfef341c","line":314,"updated":"2015-07-23 03:40:47.000000000","message":"Can you please add a unit test for this case?","commit_id":"42b7ec92841e00d3cc20ef861bab460aeb719e60"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0772bdad43b98e4dd4ab16c682357059677283f5","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":210,"context_line":"                self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":211,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":212,"context_line":"            raise exception.VolumeBackendAPIException(ex)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":215,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a50d1a3_002346be","line":212,"updated":"2015-08-02 17:30:14.000000000","message":"exception.VolumeBackendAPIException(data\u003dex)","commit_id":"d680765f69d99752cfff9c12bd0d73cab60d39c4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0772bdad43b98e4dd4ab16c682357059677283f5","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        pools \u003d self.restclient.find_all_pools()"},{"line_number":280,"context_line":"        pool_info \u003d self.restclient.find_pool_info(pool_name, pools)"},{"line_number":281,"context_line":"        src_volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":282,"context_line":"        dst_volume_name \u003d str(hash(src_volume_name))"},{"line_number":283,"context_line":"        src_id \u003d volume.get(\u0027provider_location\u0027, None)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        src_lun_params \u003d self.restclient.get_lun_info(src_id)"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a50d1a3_a002920a","line":282,"updated":"2015-08-02 17:30:14.000000000","message":"Use six.text_type instead of str","commit_id":"d680765f69d99752cfff9c12bd0d73cab60d39c4"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"ed714e6e1b4d1618f5451e6599b0afa6285fc1e6","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        if qos:"},{"line_number":314,"context_line":"            LOG.info(_LI(\u0027QoS: %s\u0027), qos)"},{"line_number":315,"context_line":"            SmartQos \u003d smartx.SmartQos(self.restclient)"},{"line_number":316,"context_line":"            SmartQos.create_qos(qos, lun_id)"},{"line_number":317,"context_line":"        if opts:"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_959394a3","line":314,"updated":"2015-08-03 15:23:01.000000000","message":"Add \u0027.\u0027 in the end","commit_id":"0924ade45e77846f18b899552daefbee85d06416"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b9c1af9151ffbbab5b93e52ac55ab99e5608179a","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        if portgroup:"},{"line_number":708,"context_line":"            portgroup_id \u003d self.restclient.find_tgt_port_group(portgroup)"},{"line_number":709,"context_line":"        if host_name and (len(host_name) \u003e constants.MAX_HOSTNAME_LENGTH):"},{"line_number":710,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":711,"context_line":"        host_id \u003d self.restclient.find_host(host_name)"},{"line_number":712,"context_line":"        if host_id:"},{"line_number":713,"context_line":"            mapping_view_name \u003d constants.MAPPING_VIEW_PREFIX + host_id"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_4c033477","line":710,"updated":"2015-08-08 21:08:04.000000000","message":"str()-\u003esix.text_type()","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6011777c8a7d3e27f46670216f56a07440fff531","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        if portgroup:"},{"line_number":708,"context_line":"            portgroup_id \u003d self.restclient.find_tgt_port_group(portgroup)"},{"line_number":709,"context_line":"        if host_name and (len(host_name) \u003e constants.MAX_HOSTNAME_LENGTH):"},{"line_number":710,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":711,"context_line":"        host_id \u003d self.restclient.find_host(host_name)"},{"line_number":712,"context_line":"        if host_id:"},{"line_number":713,"context_line":"            mapping_view_name \u003d constants.MAPPING_VIEW_PREFIX + host_id"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_34094232","line":710,"in_reply_to":"1a4dcd0f_4c033477","updated":"2015-08-10 07:05:44.000000000","message":"Done","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b20f25437b4c89eb1a270014b2f2ddfa01a67f92","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        result \u003d self.restclient.get_lun_migration_task()"},{"line_number":202,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":203,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":204,"context_line":"                if ((src_id \u003d\u003d item[\u0027PARENTID\u0027])"},{"line_number":205,"context_line":"                   and (dst_id \u003d\u003d item[\u0027TARGETLUNID\u0027])):"},{"line_number":206,"context_line":"                    return True"},{"line_number":207,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_403f5e25","line":204,"updated":"2015-08-10 10:13:08.000000000","message":"Unnecessary (). keep consistent with line 184.","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e373aa630b299ed82564ef3999ee5fcf767381be","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        result \u003d self.restclient.get_lun_migration_task()"},{"line_number":202,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":203,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":204,"context_line":"                if ((src_id \u003d\u003d item[\u0027PARENTID\u0027])"},{"line_number":205,"context_line":"                   and (dst_id \u003d\u003d item[\u0027TARGETLUNID\u0027])):"},{"line_number":206,"context_line":"                    return True"},{"line_number":207,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_5f59708d","line":204,"in_reply_to":"1a4dcd0f_403f5e25","updated":"2015-08-10 13:22:14.000000000","message":"Done","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b20f25437b4c89eb1a270014b2f2ddfa01a67f92","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        def _volume_ready():"},{"line_number":239,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":240,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d constants.STATUS_HEALTH:"},{"line_number":241,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d constants.STATUS_VOLUME_READY:"},{"line_number":242,"context_line":"                    return True"},{"line_number":243,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_60861abb","line":240,"updated":"2015-08-10 10:13:08.000000000","message":"Suggest using:\nif (a and b):\n    return True\nreturn False","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e373aa630b299ed82564ef3999ee5fcf767381be","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        def _volume_ready():"},{"line_number":239,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":240,"context_line":"            if result[\u0027HEALTHSTATUS\u0027] \u003d\u003d constants.STATUS_HEALTH:"},{"line_number":241,"context_line":"                if result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d constants.STATUS_VOLUME_READY:"},{"line_number":242,"context_line":"                    return True"},{"line_number":243,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_f38518cf","line":240,"in_reply_to":"1a4dcd0f_60861abb","updated":"2015-08-10 13:22:14.000000000","message":"Done","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"344219f1db5a135280c0b667e27d5941b6a2b3fa","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":207,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":208,"context_line":"                if (src_id \u003d\u003d item[\u0027PARENTID\u0027]"},{"line_number":209,"context_line":"                   and dst_id \u003d\u003d item[\u0027TARGETLUNID\u0027]):"},{"line_number":210,"context_line":"                    return True"},{"line_number":211,"context_line":"        return False"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"1a4dcd0f_af1298b2","line":209,"updated":"2015-08-11 08:26:37.000000000","message":"keep consistent with line 185.","commit_id":"752349d0716835256a6f2a55738e5c011c6999e7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"344219f1db5a135280c0b667e27d5941b6a2b3fa","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        def _volume_ready():"},{"line_number":243,"context_line":"            result \u003d self.restclient.get_lun_info(lun_id)"},{"line_number":244,"context_line":"            if (result[\u0027HEALTHSTATUS\u0027] \u003d\u003d constants.STATUS_HEALTH"},{"line_number":245,"context_line":"               and result[\u0027RUNNINGSTATUS\u0027] \u003d\u003d constants.STATUS_VOLUME_READY):"},{"line_number":246,"context_line":"                    return True"},{"line_number":247,"context_line":"            return False"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"1a4dcd0f_afee1889","line":245,"updated":"2015-08-11 08:26:37.000000000","message":"Add 4 blank space before \"and\".","commit_id":"752349d0716835256a6f2a55738e5c011c6999e7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"f810c66e7f2b534694005deb907182cf4f3c0bcd","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            smartcache.add(opts, lun_id)"},{"line_number":119,"context_line":"        except Exception as err:"},{"line_number":120,"context_line":"            if lun_id:"},{"line_number":121,"context_line":"                if self.restclient.check_lun_exist(lun_id):"},{"line_number":122,"context_line":"                    qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":123,"context_line":"                    if qos_id:"},{"line_number":124,"context_line":"                        self.remove_qos_lun(lun_id, qos_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_ea07801b","line":121,"updated":"2015-08-14 05:20:03.000000000","message":"You can call \n\n_delete_lun_with_check(lun_id)","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"494368b6118494c582d46f23661d2a61c62c178b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            smartcache.add(opts, lun_id)"},{"line_number":119,"context_line":"        except Exception as err:"},{"line_number":120,"context_line":"            if lun_id:"},{"line_number":121,"context_line":"                if self.restclient.check_lun_exist(lun_id):"},{"line_number":122,"context_line":"                    qos_id \u003d self.restclient.get_qosid_by_lunid(lun_id)"},{"line_number":123,"context_line":"                    if qos_id:"},{"line_number":124,"context_line":"                        self.remove_qos_lun(lun_id, qos_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_b3bd6cd9","line":121,"in_reply_to":"1a4dcd0f_ea07801b","updated":"2015-08-16 12:54:51.000000000","message":"Done","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"f810c66e7f2b534694005deb907182cf4f3c0bcd","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":229,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dex)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":232,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":233,"context_line":"        self._delete_lun_with_check(dst_id)"},{"line_number":234,"context_line":"        LOG.debug(\"Migrate lun %s successfully.\", src_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_a5b44b35","line":231,"updated":"2015-08-14 05:20:03.000000000","message":"Since the processing is same for success case and exception case. I would suggest move it to finally.","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"494368b6118494c582d46f23661d2a61c62c178b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._delete_lun_with_check(dst_id)"},{"line_number":229,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dex)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if self._is_lun_migration_exist(src_id, dst_id):"},{"line_number":232,"context_line":"            self.restclient.delete_lun_migration(src_id, dst_id)"},{"line_number":233,"context_line":"        self._delete_lun_with_check(dst_id)"},{"line_number":234,"context_line":"        LOG.debug(\"Migrate lun %s successfully.\", src_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_98e132ff","line":231,"in_reply_to":"1a4dcd0f_a5b44b35","updated":"2015-08-16 12:54:51.000000000","message":"Good suggestion! Have done, thanks!","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"f810c66e7f2b534694005deb907182cf4f3c0bcd","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                  {\u0027current_name\u0027: current_name,"},{"line_number":275,"context_line":"                   \u0027original_name\u0027: original_name})"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        return model_update"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_c5c2b786","line":277,"updated":"2015-08-14 05:20:03.000000000","message":"Is None expected?","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"494368b6118494c582d46f23661d2a61c62c178b","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                  {\u0027current_name\u0027: current_name,"},{"line_number":275,"context_line":"                   \u0027original_name\u0027: original_name})"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        return model_update"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"1a4dcd0f_58ebaadc","line":277,"in_reply_to":"1a4dcd0f_c5c2b786","updated":"2015-08-16 12:54:51.000000000","message":"Yes, it\u0027s just None when success.","commit_id":"a7d43330e8856caac552f6b921adf862b065e33b"}],"cinder/volume/drivers/huawei/huawei_utils.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"89d6ecef254209a819a9c2afb9487fba339f261c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            words \u003d value.split()"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":119,"context_line":"                LOG.error(_LE(\u0027Replication must be specified as \u0027"},{"line_number":120,"context_line":"                              \u0027\\\u0027\u003cis\u003e True\\\u0027 or \\\u0027\u003cis\u003e False\\\u0027.\u0027))"},{"line_number":121,"context_line":"            else:"},{"line_number":122,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_3fc20335","line":119,"updated":"2015-07-15 03:30:40.000000000","message":"The function doesn\u0027t looks like \"Replication\".","commit_id":"5c4e70795208325b226dfd30dfa9d09ca1370b09"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0132033f6821c5d72f944f8791707c2c867b7099","unresolved":false,"context_lines":[{"line_number":23,"context_line":"try:"},{"line_number":24,"context_line":"    from oslo_service import loopingcall"},{"line_number":25,"context_line":"except ImportError:"},{"line_number":26,"context_line":"    from cinder.openstack.common import loopingcall"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_581ebd70","line":26,"updated":"2015-07-16 06:31:29.000000000","message":"I feel it better to import this module and handle the possible exception at where we use it.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"try:"},{"line_number":24,"context_line":"    from oslo_service import loopingcall"},{"line_number":25,"context_line":"except ImportError:"},{"line_number":26,"context_line":"    from cinder.openstack.common import loopingcall"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_f779cd93","line":26,"in_reply_to":"9a41bdd9_581ebd70","updated":"2015-07-16 14:31:11.000000000","message":"In the least version, this will raise a error if we not use try...except.","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e4c3b083cb10c700e2e4b8d5e745d60169b2a21c","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":326,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":327,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":328,"context_line":"            LOG.error(err_msg)"},{"line_number":329,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":330,"context_line":"    return luntype"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_3da059f4","line":328,"updated":"2015-07-20 07:21:12.000000000","message":"Use _LE here.","commit_id":"7b7e241b4b9042784d0341fedf95d0764a2c8cb7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e4c3b083cb10c700e2e4b8d5e745d60169b2a21c","unresolved":false,"context_lines":[{"line_number":509,"context_line":"    protocol \u003d root.findtext(\u0027Storage/Protocol\u0027)"},{"line_number":510,"context_line":"    if not protocol:"},{"line_number":511,"context_line":"        err_msg \u003d (_(\u0027Get protocol from huawei conf file error.\u0027))"},{"line_number":512,"context_line":"        LOG.error(err_msg)"},{"line_number":513,"context_line":"        raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    return protocol"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_fda991e0","line":512,"updated":"2015-07-20 07:21:12.000000000","message":"Use _LE here","commit_id":"7b7e241b4b9042784d0341fedf95d0764a2c8cb7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"ba43567f56bde5986dec14f7e95312b9f56fc36b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":327,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":328,"context_line":"            LOG.error(err_msg)"},{"line_number":329,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":330,"context_line":"    return luntype"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_ef1c4215","line":329,"updated":"2015-07-21 05:04:04.000000000","message":"InvalidInputException","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"500394b398f52dbf585fd222fc7fd5c11f60224b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":327,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":328,"context_line":"            LOG.error(err_msg)"},{"line_number":329,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":330,"context_line":"    return luntype"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_20455716","line":329,"in_reply_to":"3a50d1a3_ef1c4215","updated":"2015-07-21 06:41:47.000000000","message":"Done","commit_id":"bc778d991c2ae12ac6ce88ffbd1c8faec4175d93"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"127b883cae86a2d93608b6d3c98c7bf8f64d420f","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            luntype \u003d luntype.strip()"},{"line_number":331,"context_line":"            if luntype \u003d\u003d \u0027Thick\u0027:"},{"line_number":332,"context_line":"                luntype \u003d 0"},{"line_number":333,"context_line":"            if luntype \u003d\u003d \u0027Thin\u0027:"},{"line_number":334,"context_line":"                luntype \u003d 1"},{"line_number":335,"context_line":"        elif luntype is not \u0027\u0027 and luntype is not None:"},{"line_number":336,"context_line":"            err_msg \u003d (_("}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_efe75b44","line":333,"updated":"2015-07-31 13:08:32.000000000","message":"using \"if, elif\"? if luntype is \"Thick\", it also execute \"if luntype  \u003d\u003d \u0027Thin\u0027:\".","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b30f6a1b3b51f94daa41996df4643e53c0bb0ca0","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            luntype \u003d luntype.strip()"},{"line_number":331,"context_line":"            if luntype \u003d\u003d \u0027Thick\u0027:"},{"line_number":332,"context_line":"                luntype \u003d 0"},{"line_number":333,"context_line":"            if luntype \u003d\u003d \u0027Thin\u0027:"},{"line_number":334,"context_line":"                luntype \u003d 1"},{"line_number":335,"context_line":"        elif luntype is not \u0027\u0027 and luntype is not None:"},{"line_number":336,"context_line":"            err_msg \u003d (_("}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_4d6bf485","line":333,"in_reply_to":"3a50d1a3_efe75b44","updated":"2015-07-31 14:24:02.000000000","message":"Done","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0772bdad43b98e4dd4ab16c682357059677283f5","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                luntype \u003d 0"},{"line_number":333,"context_line":"            elif luntype \u003d\u003d \u0027Thin\u0027:"},{"line_number":334,"context_line":"                luntype \u003d 1"},{"line_number":335,"context_line":"        elif luntype is not \u0027\u0027 and luntype is not None:"},{"line_number":336,"context_line":"            err_msg \u003d (_("},{"line_number":337,"context_line":"                \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":338,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"3a50d1a3_403ceee0","line":335,"updated":"2015-08-02 17:30:14.000000000","message":"elif not luntype:","commit_id":"d680765f69d99752cfff9c12bd0d73cab60d39c4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b9c1af9151ffbbab5b93e52ac55ab99e5608179a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            words \u003d value.split()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":116,"context_line":"                LOG.error(_LE(\"Replication must be specified as \""},{"line_number":117,"context_line":"                              \"\u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e False\u0027.\"))"},{"line_number":118,"context_line":"            else:"},{"line_number":119,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_4cdc9418","line":116,"updated":"2015-08-08 21:08:04.000000000","message":"Why are you checking replication here?  I  don\u0027t think your driver supports replication.","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6011777c8a7d3e27f46670216f56a07440fff531","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            words \u003d value.split()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":116,"context_line":"                LOG.error(_LE(\"Replication must be specified as \""},{"line_number":117,"context_line":"                              \"\u0027\u003cis\u003e True\u0027 or \u0027\u003cis\u003e False\u0027.\"))"},{"line_number":118,"context_line":"            else:"},{"line_number":119,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_a833b6f5","line":116,"in_reply_to":"1a4dcd0f_4cdc9418","updated":"2015-08-10 07:05:44.000000000","message":"Have updated this message, thanks!","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b9c1af9151ffbbab5b93e52ac55ab99e5608179a","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":339,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":340,"context_line":"            LOG.error(err_msg)"},{"line_number":341,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":342,"context_line":"    else:"},{"line_number":343,"context_line":"        luntype \u003d 0"},{"line_number":344,"context_line":"    return luntype"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_0c344c48","line":341,"updated":"2015-08-08 21:08:04.000000000","message":"You should add an else block and set luntype\u003d0, otherwise you could get unsupported luntype.","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"6011777c8a7d3e27f46670216f56a07440fff531","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":339,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":340,"context_line":"            LOG.error(err_msg)"},{"line_number":341,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":342,"context_line":"    else:"},{"line_number":343,"context_line":"        luntype \u003d 0"},{"line_number":344,"context_line":"    return luntype"}],"source_content_type":"text/x-python","patch_set":35,"id":"1a4dcd0f_777347b5","line":341,"in_reply_to":"1a4dcd0f_0c344c48","updated":"2015-08-10 07:05:44.000000000","message":"Done","commit_id":"18d0f57616e182534bab60e76519ad43fbebb91c"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b20f25437b4c89eb1a270014b2f2ddfa01a67f92","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                luntype \u003d 1"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            err_msg \u003d (_("},{"line_number":338,"context_line":"                \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":339,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":340,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":341,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_ab72c3ab","line":338,"updated":"2015-08-10 10:13:08.000000000","message":"keep consistent with line 282 about \"\" or \u0027\u0027.","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e373aa630b299ed82564ef3999ee5fcf767381be","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                luntype \u003d 1"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            err_msg \u003d (_("},{"line_number":338,"context_line":"                \u0027Config file is wrong. LUNType must be \"Thin\"\u0027"},{"line_number":339,"context_line":"                \u0027 or \"Thick\". LUNType: %(fetchtype)s.\u0027)"},{"line_number":340,"context_line":"                % {\u0027fetchtype\u0027: luntype})"},{"line_number":341,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_dfc7c062","line":338,"in_reply_to":"1a4dcd0f_ab72c3ab","updated":"2015-08-10 13:22:14.000000000","message":"Done","commit_id":"7917a3e974988fd7f7bd9ac72ad93547f0399ce4"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                           \"ID\": qos_id})"},{"line_number":1196,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1199,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def change_lun_priority(self, lunid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_57e0b928","line":1198,"updated":"2015-07-16 12:50:46.000000000","message":"Associates","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"41769d750205af41d4342ef2125d19e3638da4b2","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                           \"ID\": qos_id})"},{"line_number":1196,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1199,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def change_lun_priority(self, lunid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_e5fd9209","line":1198,"in_reply_to":"9a41bdd9_57e0b928","updated":"2015-07-16 14:31:11.000000000","message":"Why this should be \"Associates\"?","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"2a0aae98f7a2128462f34de5fb856bea44a6db14","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                           \"ID\": qos_id})"},{"line_number":1196,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1199,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def change_lun_priority(self, lunid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_2096cd94","line":1198,"in_reply_to":"9a41bdd9_e5fd9209","updated":"2015-07-17 14:51:10.000000000","message":"That\u0027s because is the conjugation in 3rd person. Is the same as in:\n\"It associates a lun...\", so, he,she, it, always cause the verb to use the \u0027s\u0027, or \u0027es\u0027","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1199,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def change_lun_priority(self, lunid):"},{"line_number":1202,"context_line":"        \"\"\"Change lun priority to high.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_17e6b143","line":1199,"updated":"2015-07-16 12:50:46.000000000","message":"...","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                           \"TYPE\": 230,"},{"line_number":1340,"context_line":"                           \"ID\": qos_id})"},{"line_number":1341,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1342,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1343,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":"    def add_lun_to_cache(self, lun_id, cache_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_374f3535","line":1342,"updated":"2015-07-16 12:50:46.000000000","message":"...","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ad7f48c0f3948a1043be8bbe8fe577c770b2bb65","unresolved":false,"context_lines":[{"line_number":1340,"context_line":"                           \"ID\": qos_id})"},{"line_number":1341,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":1342,"context_line":"        self._assert_rest_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1343,"context_line":"        self._assert_data_in_result(result, \u0027Asscioate lun to Qos error.\u0027)"},{"line_number":1344,"context_line":""},{"line_number":1345,"context_line":"    def add_lun_to_cache(self, lun_id, cache_id):"},{"line_number":1346,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_975641cc","line":1343,"updated":"2015-07-16 12:50:46.000000000","message":"...","commit_id":"2020765f6618173cdbd258ea10f6911573f73a08"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e4c3b083cb10c700e2e4b8d5e745d60169b2a21c","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            pool_name \u003d root.findtext(\u0027Storage/StoragePool\u0027)"},{"line_number":167,"context_line":"        if not pool_name:"},{"line_number":168,"context_line":"            err_msg \u003d (_(\"Invalid resource pool: %s.\") % pool_name)"},{"line_number":169,"context_line":"            LOG.error(err_msg)"},{"line_number":170,"context_line":"            raise exception.InvalidInput(err_msg)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        url \u003d self.url + \"/storagepool\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_fd80b148","line":169,"updated":"2015-07-20 07:21:12.000000000","message":"please use _LE here.","commit_id":"7b7e241b4b9042784d0341fedf95d0764a2c8cb7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e4c3b083cb10c700e2e4b8d5e745d60169b2a21c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                    break"},{"line_number":184,"context_line":"        if not poolinfo:"},{"line_number":185,"context_line":"            msg \u003d (_(\u0027Get pool info error, pool name is: %s.\u0027) % pool_name)"},{"line_number":186,"context_line":"            LOG.error(msg)"},{"line_number":187,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":188,"context_line":"        return poolinfo"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_7d8d817a","line":186,"updated":"2015-07-20 07:21:12.000000000","message":"here too.","commit_id":"7b7e241b4b9042784d0341fedf95d0764a2c8cb7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"496c56c4b3c1c3b89cf4b63236054747d25f7e93","unresolved":false,"context_lines":[{"line_number":1281,"context_line":"    def get_partition_id_by_name(self, name):"},{"line_number":1282,"context_line":"        url \u003d self.url + \"/cachepartition\""},{"line_number":1283,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1284,"context_line":"        self._assert_rest_result(result, \u0027Get partition by name error!\u0027)"},{"line_number":1285,"context_line":""},{"line_number":1286,"context_line":"        return self._get_id_from_result(result, name, \u0027NAME\u0027)"},{"line_number":1287,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_6c14809f","line":1284,"updated":"2015-07-22 04:01:57.000000000","message":"why change \".\" to \"!\"? And I see other msg also use \".\"","commit_id":"57a9990d56c6f4c57f28ec68851d161291472b71"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        res_json \u003d None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            socket.setdefaulttimeout(720)"},{"line_number":58,"context_line":"            req \u003d urllib.request.Request(url, data, self.headers)"},{"line_number":59,"context_line":"            if method:"},{"line_number":60,"context_line":"                req.get_method \u003d lambda: method"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_166c9733","line":57,"updated":"2015-07-23 09:43:22.000000000","message":"change 720 to CONSTANT.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        res_json \u003d None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            socket.setdefaulttimeout(720)"},{"line_number":58,"context_line":"            req \u003d urllib.request.Request(url, data, self.headers)"},{"line_number":59,"context_line":"            if method:"},{"line_number":60,"context_line":"                req.get_method \u003d lambda: method"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_6892d7f7","line":57,"in_reply_to":"3a50d1a3_166c9733","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1321,"context_line":"        self._assert_rest_result(result, \u0027Get lungroup id by lun id error.\u0027)"},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"        lun_group_id \u003d None"},{"line_number":1324,"context_line":"        # Lun only in one lungroup."},{"line_number":1325,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1326,"context_line":"            for item in result[\u0027data\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_96f4275b","line":1323,"updated":"2015-07-23 09:43:22.000000000","message":"use lungroup_id is better.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1321,"context_line":"        self._assert_rest_result(result, \u0027Get lungroup id by lun id error.\u0027)"},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"        lun_group_id \u003d None"},{"line_number":1324,"context_line":"        # Lun only in one lungroup."},{"line_number":1325,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1326,"context_line":"            for item in result[\u0027data\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_dd1e430b","line":1323,"in_reply_to":"3a50d1a3_96f4275b","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1385,"context_line":""},{"line_number":1386,"context_line":"        if \"data\" in result:"},{"line_number":1387,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1388,"context_line":"                LOG.debug((\u0027get_partition_id_by_name item %(item)s\u0027)"},{"line_number":1389,"context_line":"                          % {\u0027item\u0027: item})"},{"line_number":1390,"context_line":"                if name \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":1391,"context_line":"                    return item[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_b657e324","line":1388,"updated":"2015-07-23 09:43:22.000000000","message":". at EOL.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1385,"context_line":""},{"line_number":1386,"context_line":"        if \"data\" in result:"},{"line_number":1387,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1388,"context_line":"                LOG.debug((\u0027get_partition_id_by_name item %(item)s\u0027)"},{"line_number":1389,"context_line":"                          % {\u0027item\u0027: item})"},{"line_number":1390,"context_line":"                if name \u003d\u003d item[\u0027NAME\u0027]:"},{"line_number":1391,"context_line":"                    return item[\u0027ID\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_1ddfcb3a","line":1388,"in_reply_to":"3a50d1a3_b657e324","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        return None"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def get_partition_info_by_id(self, partitionid):"},{"line_number":1396,"context_line":""},{"line_number":1397,"context_line":"        url \u003d self.url + \"/cachepartition/\" + partitionid"},{"line_number":1398,"context_line":"        data \u003d json.dumps({\"TYPE\": \"268\","}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_f60fab34","line":1395,"updated":"2015-07-23 09:43:22.000000000","message":"It\u0027s better to use parititon_id. keep consistent with other function, eg, line 1407.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        return None"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def get_partition_info_by_id(self, partitionid):"},{"line_number":1396,"context_line":""},{"line_number":1397,"context_line":"        url \u003d self.url + \"/cachepartition/\" + partitionid"},{"line_number":1398,"context_line":"        data \u003d json.dumps({\"TYPE\": \"268\","}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_3dbde7d7","line":1395,"in_reply_to":"3a50d1a3_f60fab34","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"    def get_cache_id_by_name(self, name):"},{"line_number":1424,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION\""},{"line_number":1425,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1426,"context_line":"        self._assert_rest_result(result, \u0027Get cache by name error!\u0027)"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"        if \"data\" in result:"},{"line_number":1429,"context_line":"            for item in result[\u0027data\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_71ec052a","line":1426,"updated":"2015-07-23 09:43:22.000000000","message":"! -\u003e .","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"    def get_cache_id_by_name(self, name):"},{"line_number":1424,"context_line":"        url \u003d self.url + \"/SMARTCACHEPARTITION\""},{"line_number":1425,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1426,"context_line":"        self._assert_rest_result(result, \u0027Get cache by name error!\u0027)"},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"        if \"data\" in result:"},{"line_number":1429,"context_line":"            for item in result[\u0027data\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_bdd1f724","line":1426,"in_reply_to":"3a50d1a3_71ec052a","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        return None"},{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1435,"context_line":"        \"\"\"\"Find available QoS in array.\"\"\""},{"line_number":1436,"context_line":"        qos_id \u003d None"},{"line_number":1437,"context_line":"        lunlist \u003d []"},{"line_number":1438,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_f199f5c4","line":1435,"updated":"2015-07-23 09:43:22.000000000","message":"in array -\u003e on array.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        return None"},{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"    def find_available_qos(self, qos):"},{"line_number":1435,"context_line":"        \"\"\"\"Find available QoS in array.\"\"\""},{"line_number":1436,"context_line":"        qos_id \u003d None"},{"line_number":1437,"context_line":"        lunlist \u003d []"},{"line_number":1438,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_9dc2fb51","line":1435,"in_reply_to":"3a50d1a3_f199f5c4","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b99ce74ecc3cede9a8ca96fbe862616b6643b0a8","unresolved":false,"context_lines":[{"line_number":1440,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1441,"context_line":"        self._assert_rest_result(result, \u0027Get QoS information error.\u0027)"},{"line_number":1442,"context_line":""},{"line_number":1443,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1444,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1445,"context_line":"                qos_flag \u003d 0"},{"line_number":1446,"context_line":"                for key in qos:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_b154cdc9","line":1443,"updated":"2015-07-23 09:43:22.000000000","message":"\u0027data\u0027 or \"data\"， please keep consistent.","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"861ec1004164e7ee4c0cd6f8511b9ae9465766e9","unresolved":false,"context_lines":[{"line_number":1440,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1441,"context_line":"        self._assert_rest_result(result, \u0027Get QoS information error.\u0027)"},{"line_number":1442,"context_line":""},{"line_number":1443,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":1444,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1445,"context_line":"                qos_flag \u003d 0"},{"line_number":1446,"context_line":"                for key in qos:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_9d70bb41","line":1443,"in_reply_to":"3a50d1a3_b154cdc9","updated":"2015-07-23 12:53:52.000000000","message":"Done","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"127b883cae86a2d93608b6d3c98c7bf8f64d420f","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                           \"WORKMODE\": 0})"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1342,"context_line":"        msg \u003d \u0027Create lun migration error.\u0027"},{"line_number":1343,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1344,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1345,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_4febefdc","line":1342,"updated":"2015-07-31 13:08:32.000000000","message":"missing _()","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b30f6a1b3b51f94daa41996df4643e53c0bb0ca0","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"                           \"WORKMODE\": 0})"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1342,"context_line":"        msg \u003d \u0027Create lun migration error.\u0027"},{"line_number":1343,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1344,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1345,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_6dfd90b0","line":1342,"in_reply_to":"3a50d1a3_4febefdc","updated":"2015-07-31 14:24:02.000000000","message":"Done","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"127b883cae86a2d93608b6d3c98c7bf8f64d420f","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"    def delete_lun_migration(self, src_id, dst_id):"},{"line_number":1353,"context_line":"        url \u003d self.url + \u0027/LUN_MIGRATION/\u0027 + src_id"},{"line_number":1354,"context_line":"        result \u003d self.call(url, None, \"DELETE\")"},{"line_number":1355,"context_line":"        msg \u003d \u0027Delete lun migration error.\u0027"},{"line_number":1356,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1357,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_2fc78365","line":1355,"updated":"2015-07-31 13:08:32.000000000","message":"missing _()","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b30f6a1b3b51f94daa41996df4643e53c0bb0ca0","unresolved":false,"context_lines":[{"line_number":1352,"context_line":"    def delete_lun_migration(self, src_id, dst_id):"},{"line_number":1353,"context_line":"        url \u003d self.url + \u0027/LUN_MIGRATION/\u0027 + src_id"},{"line_number":1354,"context_line":"        result \u003d self.call(url, None, \"DELETE\")"},{"line_number":1355,"context_line":"        msg \u003d \u0027Delete lun migration error.\u0027"},{"line_number":1356,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1357,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1358,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_0d2bac34","line":1355,"in_reply_to":"3a50d1a3_2fc78365","updated":"2015-07-31 14:24:02.000000000","message":"Done","commit_id":"135e09f3d2ed2153e84172668a3ee78d8b800949"}],"cinder/volume/drivers/huawei/smartx.py":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"bfd7a8068b2bf3c277b13a9f287b05b860c996f9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            return"},{"line_number":92,"context_line":"        if not opts[\u0027cachename\u0027]:"},{"line_number":93,"context_line":"            raise exception.InvalidInput("},{"line_number":94,"context_line":"                reason\u003d_(\u0027Cache name is None, please set \u0027"},{"line_number":95,"context_line":"                         \u0027SmartCache:cachename in key.\u0027))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        cache_id \u003d self.client.get_cache_id_by_name(opts[\u0027cachename\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_f37fbd12","line":94,"updated":"2015-07-23 09:23:55.000000000","message":"None  --\u003e none","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"bfd7a8068b2bf3c277b13a9f287b05b860c996f9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        if opts[\u0027smartcache\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":153,"context_line":"            if not opts[\u0027cachename\u0027]:"},{"line_number":154,"context_line":"                raise exception.InvalidInput("},{"line_number":155,"context_line":"                    reason\u003d_(\u0027Cache name is None, please set \u0027"},{"line_number":156,"context_line":"                             \u0027smartcache:cachename in key.\u0027))"},{"line_number":157,"context_line":"        else:"},{"line_number":158,"context_line":"            opts[\u0027cachename\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_53ad5199","line":155,"updated":"2015-07-23 09:23:55.000000000","message":"None  --\u003e none","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"bfd7a8068b2bf3c277b13a9f287b05b860c996f9","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        if opts[\u0027smartpartition\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":164,"context_line":"            if not opts[\u0027partitionname\u0027]:"},{"line_number":165,"context_line":"                raise exception.InvalidInput("},{"line_number":166,"context_line":"                    reason\u003d_(\u0027Partition name is None, please set \u0027"},{"line_number":167,"context_line":"                             \u0027smartpartition:partitionname in key.\u0027))"},{"line_number":168,"context_line":"        else:"},{"line_number":169,"context_line":"            opts[\u0027partitionname\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_1394a940","line":166,"updated":"2015-07-23 09:23:55.000000000","message":"None  --\u003e none","commit_id":"eacc8f1c063fc7b490082ff1471b2a831afd153d"}]}
