)]}'
{"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"d384ef2d8caee9a39e405de0cdf58139860c76ff","unresolved":false,"context_lines":[{"line_number":1963,"context_line":"            ex \u003d self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":1964,"context_line":"                                   self.driver.manage_existing_snapshot,"},{"line_number":1965,"context_line":"                                   test_snapshot, external_ref)"},{"line_number":1966,"context_line":"            self.assertIsNotNone(re.search(\u0027snapshot status is not Normal\u0027,"},{"line_number":1967,"context_line":"                                           ex.msg))"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027get_snapshot_info\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_50c14e7f","line":1966,"updated":"2015-12-25 05:38:23.000000000","message":"snapshot \u003d\u003e Snapshot, Normal \u003d\u003e normal","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bae80801bc1d28537b9c747d252b57b0eb8c2259","unresolved":false,"context_lines":[{"line_number":1963,"context_line":"            ex \u003d self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":1964,"context_line":"                                   self.driver.manage_existing_snapshot,"},{"line_number":1965,"context_line":"                                   test_snapshot, external_ref)"},{"line_number":1966,"context_line":"            self.assertIsNotNone(re.search(\u0027snapshot status is not Normal\u0027,"},{"line_number":1967,"context_line":"                                           ex.msg))"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027get_snapshot_info\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_056033ce","line":1966,"in_reply_to":"1a7b0d38_50c14e7f","updated":"2016-01-11 09:16:22.000000000","message":"Done","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"87da5119cc9d0672b30a208f0dfdee4918175082","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a68dd71_735c0219","line":1,"updated":"2016-01-25 21:15:38.000000000","message":"Is there a reason for switching this back to 2015?","commit_id":"ec3bed5ba034cb5634044b7638cc493b9a0685ff"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"e5c88c619ce1dc6e1447ee234c72ca79d33c8e98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a68dd71_0fef921e","line":1,"in_reply_to":"9a68dd71_735c0219","updated":"2016-01-26 01:43:15.000000000","message":"Done","commit_id":"ec3bed5ba034cb5634044b7638cc493b9a0685ff"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"d384ef2d8caee9a39e405de0cdf58139860c76ff","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        # Check whether the LUN is Normal."},{"line_number":934,"context_line":"        if snapshot_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH:"},{"line_number":935,"context_line":"            msg \u003d _(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":936,"context_line":"                    \"snapshot status is not Normal\""},{"line_number":937,"context_line":"                    \" or running status is not online.\") % snapshot_id"},{"line_number":938,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":939,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_b0d19259","line":936,"updated":"2015-12-25 05:38:23.000000000","message":"snapshot \u003d\u003e Snapshot\nNormal \u003d\u003e normal\n( change to do in corresponding unittest too since you use re)","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bae80801bc1d28537b9c747d252b57b0eb8c2259","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        # Check whether the LUN is Normal."},{"line_number":934,"context_line":"        if snapshot_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH:"},{"line_number":935,"context_line":"            msg \u003d _(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":936,"context_line":"                    \"snapshot status is not Normal\""},{"line_number":937,"context_line":"                    \" or running status is not online.\") % snapshot_id"},{"line_number":938,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":939,"context_line":"                existing_ref\u003dexternal_ref, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_d0e1bed1","line":936,"in_reply_to":"1a7b0d38_b0d19259","updated":"2016-01-11 09:16:22.000000000","message":"Done","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"d384ef2d8caee9a39e405de0cdf58139860c76ff","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":971,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":972,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":973,"context_line":"                     \"snapshot is not belong to this volume.\"), snapshot_id)"},{"line_number":974,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":975,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_70cb2aa6","line":973,"updated":"2015-12-25 05:38:23.000000000","message":"is not \u003d\u003e does not","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bae80801bc1d28537b9c747d252b57b0eb8c2259","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":971,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":972,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":973,"context_line":"                     \"snapshot is not belong to this volume.\"), snapshot_id)"},{"line_number":974,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":975,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_a5a7e709","line":973,"in_reply_to":"1a7b0d38_70cb2aa6","updated":"2016-01-11 09:16:22.000000000","message":"Done","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":19151,"name":"Thelo Gaultier","email":"thelo.gaultier@gmail.com","username":"Thelo"},"change_message_id":"d384ef2d8caee9a39e405de0cdf58139860c76ff","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snpshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1019,"context_line":"        self.client.rename_snapshot(snapshot_id, new_name)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_d0ed3e26","line":1017,"updated":"2015-12-25 05:38:23.000000000","message":"snpshot_name \u003d\u003e snapshot_name","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"bae80801bc1d28537b9c747d252b57b0eb8c2259","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snpshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1019,"context_line":"        self.client.rename_snapshot(snapshot_id, new_name)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_45b14b46","line":1017,"in_reply_to":"1a7b0d38_d0ed3e26","updated":"2016-01-11 09:16:22.000000000","message":"Done","commit_id":"5968a6428456116719cd1e70208e3667fcc0bf18"},{"author":{"_account_id":19779,"name":"Chason Chan","display_name":"chenxing","email":"chason.chan@foxmail.com","username":"chenxing"},"change_message_id":"9e9f7852a513199bed982be9a1a083dee0a2cde0","unresolved":false,"context_lines":[{"line_number":930,"context_line":"    def _check_snapshot_valid_for_manage(self, snapshot_info, external_ref):"},{"line_number":931,"context_line":"        snapshot_id \u003d snapshot_info.get(\u0027ID\u0027)"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        # Check whether the LUN is Normal."},{"line_number":934,"context_line":"        if snapshot_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH:"},{"line_number":935,"context_line":"            msg \u003d _(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":936,"context_line":"                    \"Snapshot status is not normal\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_fba05ba1","line":933,"range":{"start_line":933,"start_character":28,"end_line":933,"end_character":31},"updated":"2015-12-25 07:38:02.000000000","message":"Check whether the snapshot status is normal.","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"093a9c2f1c33cf5ac28a8ec61ba4d018fb71a544","unresolved":false,"context_lines":[{"line_number":930,"context_line":"    def _check_snapshot_valid_for_manage(self, snapshot_info, external_ref):"},{"line_number":931,"context_line":"        snapshot_id \u003d snapshot_info.get(\u0027ID\u0027)"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        # Check whether the LUN is Normal."},{"line_number":934,"context_line":"        if snapshot_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH:"},{"line_number":935,"context_line":"            msg \u003d _(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":936,"context_line":"                    \"Snapshot status is not normal\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_886afaeb","line":933,"range":{"start_line":933,"start_character":28,"end_line":933,"end_character":31},"in_reply_to":"1a7b0d38_fba05ba1","updated":"2016-01-11 09:17:47.000000000","message":"Done","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":19779,"name":"Chason Chan","display_name":"chenxing","email":"chason.chan@foxmail.com","username":"chenxing"},"change_message_id":"9e9f7852a513199bed982be9a1a083dee0a2cde0","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1010,"context_line":"        snapshot_id \u003d self.client.get_snapshot_id_by_name(snapshot_name)"},{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_bb61733b","line":1012,"range":{"start_line":1012,"start_character":27,"end_line":1012,"end_character":64},"updated":"2015-12-25 07:38:02.000000000","message":"\"Can\u0027t find snapshot %s on the array.\"","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"093a9c2f1c33cf5ac28a8ec61ba4d018fb71a544","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1010,"context_line":"        snapshot_id \u003d self.client.get_snapshot_id_by_name(snapshot_name)"},{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_487962c7","line":1012,"range":{"start_line":1012,"start_character":27,"end_line":1012,"end_character":64},"in_reply_to":"1a7b0d38_bb61733b","updated":"2016-01-11 09:17:47.000000000","message":"Done","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":19779,"name":"Chason Chan","display_name":"chenxing","email":"chason.chan@foxmail.com","username":"chenxing"},"change_message_id":"9e9f7852a513199bed982be9a1a083dee0a2cde0","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snpshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1019,"context_line":"        self.client.rename_snapshot(snapshot_id, new_name)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_3bdd83e0","line":1017,"range":{"start_line":1017,"start_character":20,"end_line":1017,"end_character":32},"updated":"2015-12-25 07:38:02.000000000","message":"\u0027snpshot_name\u0027 \u003d\u003e \u0027snapshot_name\u0027","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"093a9c2f1c33cf5ac28a8ec61ba4d018fb71a544","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snpshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"},{"line_number":1019,"context_line":"        self.client.rename_snapshot(snapshot_id, new_name)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_087feaab","line":1017,"range":{"start_line":1017,"start_character":20,"end_line":1017,"end_character":32},"in_reply_to":"1a7b0d38_3bdd83e0","updated":"2016-01-11 09:17:47.000000000","message":"Done","commit_id":"1a4db41d91b1cfaa66de5aea088756209610a946"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5d54745ba32fa7a9a36dc55a38cc05b967863008","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":971,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":972,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":973,"context_line":"                     \"Snapshot dosen\u0027t belong to volume.\"), snapshot_id)"},{"line_number":974,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":975,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a7b0d38_d0bf5aa8","line":973,"updated":"2015-12-27 17:00:05.000000000","message":"s/dose/does","commit_id":"e04dd5a4145d22b46704c79c002ce9c215c939da"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"c27a82fc9b8dfd19405a016237e4aefa4e50083c","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":971,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":972,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":973,"context_line":"                     \"Snapshot dosen\u0027t belong to volume.\"), snapshot_id)"},{"line_number":974,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":975,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":976,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_a8149e4c","line":973,"in_reply_to":"1a7b0d38_d0bf5aa8","updated":"2016-01-11 09:19:21.000000000","message":"Done","commit_id":"e04dd5a4145d22b46704c79c002ce9c215c939da"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5d54745ba32fa7a9a36dc55a38cc05b967863008","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot %s on the array.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snapshot_name\u0027: snapshot_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a7b0d38_900b128e","line":1014,"updated":"2015-12-27 17:00:05.000000000","message":"Do you want to consider raising an error like SnapshotNotFound? Else it would be potentially considered success.","commit_id":"e04dd5a4145d22b46704c79c002ce9c215c939da"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"c27a82fc9b8dfd19405a016237e4aefa4e50083c","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot %s on the array.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snapshot_name\u0027: snapshot_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a7b0d38_479df108","line":1014,"in_reply_to":"1a7b0d38_900b128e","updated":"2016-01-11 09:19:21.000000000","message":"There is no need to export a snapshot with error if the snapshot doesn\u0027t exist on array , only need to export this snapshot from Cinder.","commit_id":"e04dd5a4145d22b46704c79c002ce9c215c939da"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8ea76d0098638b09f31e3ac394b9bde97da4cb09","unresolved":false,"context_lines":[{"line_number":977,"context_line":"        # Check whether this SNAPSHOT can be imported."},{"line_number":978,"context_line":"        self._check_snapshot_valid_for_manage(snapshot_info, existing_ref)"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        # Rename the LUN to make it manageable for Cinder."},{"line_number":981,"context_line":"        description \u003d snapshot[\u0027id\u0027]"},{"line_number":982,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":983,"context_line":"        self.client.rename_snapshot(snapshot_id, snapshot_name, description)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_5a3f53b4","line":980,"updated":"2015-12-31 07:13:30.000000000","message":"s/LUN/snapshot","commit_id":"c3d4311f5e6ae13b00a0e5b31d4fda9ce5f45def"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"b83de04472db6516499dd91e4b486657dd5a2e53","unresolved":false,"context_lines":[{"line_number":977,"context_line":"        # Check whether this SNAPSHOT can be imported."},{"line_number":978,"context_line":"        self._check_snapshot_valid_for_manage(snapshot_info, existing_ref)"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        # Rename the LUN to make it manageable for Cinder."},{"line_number":981,"context_line":"        description \u003d snapshot[\u0027id\u0027]"},{"line_number":982,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":983,"context_line":"        self.client.rename_snapshot(snapshot_id, snapshot_name, description)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_43fb83c1","line":980,"in_reply_to":"fa69d971_5a3f53b4","updated":"2016-01-11 09:25:44.000000000","message":"Done","commit_id":"c3d4311f5e6ae13b00a0e5b31d4fda9ce5f45def"},{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"409633d195e4622024ef1f6f1c826310f51ef3d8","unresolved":false,"context_lines":[{"line_number":930,"context_line":"    def _check_snapshot_valid_for_manage(self, snapshot_info, external_ref):"},{"line_number":931,"context_line":"        snapshot_id \u003d snapshot_info.get(\u0027ID\u0027)"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        # Check whether the lun is normal."},{"line_number":934,"context_line":"        if snapshot_info.get(\u0027HEALTHSTATUS\u0027) !\u003d constants.STATUS_HEALTH:"},{"line_number":935,"context_line":"            msg \u003d _(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":936,"context_line":"                    \"Snapshot status is not normal\""}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_dac79f10","line":933,"range":{"start_line":933,"start_character":28,"end_line":933,"end_character":31},"updated":"2016-01-04 01:47:25.000000000","message":"The code seems to check whether the snapshot is normal, rather than the lun.","commit_id":"237a3cd7622b285b340c7dd294fd8e0daa909b57"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"788c3d4346ef502f70c1f247e58dd44961fd7e25","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1010,"context_line":"        snapshot_id \u003d self.client.get_snapshot_id_by_name(snapshot_name)"},{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa69d971_0a753b31","line":1012,"range":{"start_line":1012,"start_character":16,"end_line":1012,"end_character":21},"updated":"2016-01-07 10:11:36.000000000","message":"s/error(_LE/warning(_LW","commit_id":"062cb0ad27be5540afa82f9ab63d7bd93543e792"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"fc2e231ddd2d9faa57cef2acfbda01d2b24a4344","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        snapshot_name \u003d huawei_utils.encode_name(snapshot[\u0027id\u0027])"},{"line_number":1010,"context_line":"        snapshot_id \u003d self.client.get_snapshot_id_by_name(snapshot_name)"},{"line_number":1011,"context_line":"        if not snapshot_id:"},{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa69d971_9dac7089","line":1012,"range":{"start_line":1012,"start_character":16,"end_line":1012,"end_character":21},"in_reply_to":"fa69d971_0a753b31","updated":"2016-01-11 13:11:37.000000000","message":"Done","commit_id":"062cb0ad27be5540afa82f9ab63d7bd93543e792"},{"author":{"_account_id":19779,"name":"Chason Chan","display_name":"chenxing","email":"chason.chan@foxmail.com","username":"chenxing"},"change_message_id":"4902933f573a8ed616783072bd9b04259229e8cb","unresolved":false,"context_lines":[{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snapshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_7cd49a46","line":1015,"range":{"start_line":1015,"start_character":20,"end_line":1015,"end_character":26},"updated":"2016-01-08 01:45:39.000000000","message":"\"unmged\" \u003d\u003e \"unmanaged\"","commit_id":"b4fc75e3717048f6922e050a2d594eb86ee91d2b"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"fde8f0ae290b440fefc4237990abaa3b3ab42eed","unresolved":false,"context_lines":[{"line_number":1012,"context_line":"            LOG.error(_LE(\"Can\u0027t find snapshot on the array: %s.\"),"},{"line_number":1013,"context_line":"                      snapshot_id)"},{"line_number":1014,"context_line":"            return"},{"line_number":1015,"context_line":"        new_name \u003d \u0027unmged_\u0027 + snapshot_name"},{"line_number":1016,"context_line":"        LOG.debug(\"Rename snapshot %(snapshot_name)s to %(new_name)s.\","},{"line_number":1017,"context_line":"                  {\u0027snapshot_name\u0027: snapshot_name,"},{"line_number":1018,"context_line":"                   \u0027new_name\u0027: new_name})"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa69d971_37cab850","line":1015,"range":{"start_line":1015,"start_character":20,"end_line":1015,"end_character":26},"in_reply_to":"fa69d971_7cd49a46","updated":"2016-01-11 08:28:38.000000000","message":"Array name length is limited, so the fixed field is not too long to ensure a certain namespace.","commit_id":"b4fc75e3717048f6922e050a2d594eb86ee91d2b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"18b882a17c4be886755fa2a39c94c5a5465551e4","unresolved":false,"context_lines":[{"line_number":989,"context_line":"                   \u0027new_name\u0027: snapshot_name})"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"        return {\u0027provider_location\u0027: snapshot_id,"},{"line_number":992,"context_line":"                \u0027lun_info\u0027: snapshot_info}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"    def manage_existing_snapshot_get_size(self, snapshot, existing_ref):"},{"line_number":995,"context_line":"        \"\"\"Get the size of the existing snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"da6ed579_4f7053a4","line":992,"range":{"start_line":992,"start_character":16,"end_line":992,"end_character":42},"updated":"2016-01-15 02:47:00.000000000","message":"Will this info will be saved into Cinder DB. I couldn\u0027t find this lun_info in Snapshot Object.","commit_id":"55b75de4c25b61cde98bbbb5a84578611b140c7e"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"087644e9f209881e038e3469c1caac5b6d4e4646","unresolved":false,"context_lines":[{"line_number":989,"context_line":"                   \u0027new_name\u0027: snapshot_name})"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"        return {\u0027provider_location\u0027: snapshot_id,"},{"line_number":992,"context_line":"                \u0027lun_info\u0027: snapshot_info}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"    def manage_existing_snapshot_get_size(self, snapshot, existing_ref):"},{"line_number":995,"context_line":"        \"\"\"Get the size of the existing snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"da6ed579_e4d12624","line":992,"range":{"start_line":992,"start_character":16,"end_line":992,"end_character":42},"in_reply_to":"da6ed579_4f7053a4","updated":"2016-01-15 07:30:25.000000000","message":"Done","commit_id":"55b75de4c25b61cde98bbbb5a84578611b140c7e"},{"author":{"_account_id":16237,"name":"venkatamahesh","email":"venkatamaheshkotha@gmail.com","username":"venkatamahesh"},"change_message_id":"2851df11fb69425eeaa1b541605a211831c5209d","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"                Volume migration support"},{"line_number":1040,"context_line":"                Volume retype support"},{"line_number":1041,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":1042,"context_line":"        2.0.1 - Manage/unmanage snapshot support"},{"line_number":1043,"context_line":"    \"\"\""},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":"    VERSION \u003d \"2.0.1\""}],"source_content_type":"text/x-python","patch_set":29,"id":"da6ed579_163f8fd7","line":1042,"range":{"start_line":1042,"start_character":8,"end_line":1042,"end_character":13},"updated":"2016-01-16 17:32:55.000000000","message":"change to 2.0.2\n2.0.1 was manage/unmanage volume support","commit_id":"76424b4396cf8d7708b6da8337775708cce65df0"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"165d17fc247e0c207c20d4b0091dbdbe7b9f316d","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"                Volume migration support"},{"line_number":1040,"context_line":"                Volume retype support"},{"line_number":1041,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":1042,"context_line":"        2.0.1 - Manage/unmanage snapshot support"},{"line_number":1043,"context_line":"    \"\"\""},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":"    VERSION \u003d \"2.0.1\""}],"source_content_type":"text/x-python","patch_set":29,"id":"da6ed579_b3179e53","line":1042,"range":{"start_line":1042,"start_character":8,"end_line":1042,"end_character":13},"in_reply_to":"da6ed579_163f8fd7","updated":"2016-01-18 06:11:15.000000000","message":"Done","commit_id":"76424b4396cf8d7708b6da8337775708cce65df0"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"6b32320f98d24ee1f69e83d7f6ae614fe7e5868d","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":1176,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":1177,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":1178,"context_line":"                     \"Snapshot doesn\u0027t belong to volume.\"), snapshot_id)"},{"line_number":1179,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":1180,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba63e191_34940e36","line":1178,"range":{"start_line":1178,"start_character":58,"end_line":1178,"end_character":59},"updated":"2016-01-19 01:34:01.000000000","message":"s/,/ %","commit_id":"c3b1eb8cbce02ebb05381134bd285dbd1b8da074"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"1c3a108e3ccd05506ca38a5e1118e40341c0c52b","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"        lun_id \u003d volume.get(\u0027provider_location\u0027)"},{"line_number":1176,"context_line":"        if lun_id !\u003d snapshot_info.get(\u0027PARENTID\u0027):"},{"line_number":1177,"context_line":"            msg \u003d (_(\"Can\u0027t import snapshot %s to Cinder. \""},{"line_number":1178,"context_line":"                     \"Snapshot doesn\u0027t belong to volume.\"), snapshot_id)"},{"line_number":1179,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":1180,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dmsg)"},{"line_number":1181,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba63e191_b486beb7","line":1178,"range":{"start_line":1178,"start_character":58,"end_line":1178,"end_character":59},"in_reply_to":"ba63e191_34940e36","updated":"2016-01-19 01:42:01.000000000","message":"Done","commit_id":"c3b1eb8cbce02ebb05381134bd285dbd1b8da074"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"6b32320f98d24ee1f69e83d7f6ae614fe7e5868d","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                Volume retype support"},{"line_number":1246,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":1247,"context_line":"        2.0.1 - Manage/unmanage volume support"},{"line_number":1248,"context_line":"        2.0.2 - Refactor HuaweiISCSIDriverDriver"},{"line_number":1249,"context_line":"        2.0.3 - Manage/unmanage snapshot support"},{"line_number":1250,"context_line":"    \"\"\""},{"line_number":1251,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba63e191_d4aa5285","line":1248,"range":{"start_line":1248,"start_character":42,"end_line":1248,"end_character":48},"updated":"2016-01-19 01:34:01.000000000","message":"delete \"Driver\".","commit_id":"c3b1eb8cbce02ebb05381134bd285dbd1b8da074"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"1c3a108e3ccd05506ca38a5e1118e40341c0c52b","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                Volume retype support"},{"line_number":1246,"context_line":"        2.0.0 - Rename to HuaweiISCSIDriver"},{"line_number":1247,"context_line":"        2.0.1 - Manage/unmanage volume support"},{"line_number":1248,"context_line":"        2.0.2 - Refactor HuaweiISCSIDriverDriver"},{"line_number":1249,"context_line":"        2.0.3 - Manage/unmanage snapshot support"},{"line_number":1250,"context_line":"    \"\"\""},{"line_number":1251,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba63e191_5493c2fa","line":1248,"range":{"start_line":1248,"start_character":42,"end_line":1248,"end_character":48},"in_reply_to":"ba63e191_d4aa5285","updated":"2016-01-19 01:42:01.000000000","message":"Done","commit_id":"c3b1eb8cbce02ebb05381134bd285dbd1b8da074"}],"releasenotes/notes/huawei-manage-unmanage-snapshot-e35ff844d72fedfb.yaml":[{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"1d0fed035f73c0172eb1e22ab744bd95e996b4dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"fa69d971_64a1aaf7","line":3,"updated":"2016-01-06 19:30:26.000000000","message":"This should be specific for the Huawei driver.\n\n\"Added manage/unmanage snapshot support to the Huawei driver.\"\n\nOtherwise when the Reno report is generated a reader won\u0027t know what driver this message is referring to.","commit_id":"c62e45c1dccb5a13f302df3008a6f828dd4ff751"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"bad7cc7ebb0a251c3035d74eb7567bfda6b50c29","unresolved":false,"context_lines":[{"line_number":1,"context_line":"features:"},{"line_number":2,"context_line":"  - Add manage/unmanage snapshot support for Huawei drivers.."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"fa69d971_814877b4","line":2,"range":{"start_line":2,"start_character":4,"end_line":2,"end_character":61},"updated":"2016-01-11 17:58:05.000000000","message":"extra period","commit_id":"6e142c8bb965295793b04edeea7064d9c96717b6"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"245f9706fbb0cb57ab4fbc02e1118c2c98b27c4a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"features:"},{"line_number":2,"context_line":"  - Add manage/unmanage snapshot support for Huawei drivers.."}],"source_content_type":"text/x-yaml","patch_set":24,"id":"da6ed579_ef40da09","line":2,"range":{"start_line":2,"start_character":4,"end_line":2,"end_character":61},"in_reply_to":"fa69d971_814877b4","updated":"2016-01-12 11:44:03.000000000","message":"Done","commit_id":"6e142c8bb965295793b04edeea7064d9c96717b6"}]}
