)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"5cb490724597337b7dc952580a3bc1b3a46c08e3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: Support backup snapshot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Huawei Driver implement attach snapshot for backup"},{"line_number":10,"context_line":"snapshot feature."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Implements: blueprint huawei-support-backup-snapshot"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aa08908_5d1fa4b6","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":17},"updated":"2016-06-14 11:27:06.000000000","message":"Implement attach snapshot for backup snapshot feature in Huawei driver.","commit_id":"621150270653f767c8205940dca4c686cc3e7d0d"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"5cb490724597337b7dc952580a3bc1b3a46c08e3","unresolved":false,"context_lines":[{"line_number":2171,"context_line":"    def test_initialize_snapshot_connection_success(self):"},{"line_number":2172,"context_line":"        iscsi_properties \u003d self.driver.initialize_connection_snapshot("},{"line_number":2173,"context_line":"            test_snap, FakeConnector)"},{"line_number":2174,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":2175,"context_line":"    def test_terminate_connection_success(self):"},{"line_number":2176,"context_line":"        self.driver.terminate_connection(test_volume, FakeConnector)"},{"line_number":2177,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_3ddf38d7","line":2174,"updated":"2016-06-14 11:27:06.000000000","message":"Need a blank line after this test case.","commit_id":"621150270653f767c8205940dca4c686cc3e7d0d"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6f0b48eba533f5235a88b15baa7bec9eec788104","unresolved":false,"context_lines":[{"line_number":2171,"context_line":"    def test_initialize_snapshot_connection_success(self):"},{"line_number":2172,"context_line":"        iscsi_properties \u003d self.driver.initialize_connection_snapshot("},{"line_number":2173,"context_line":"            test_snap, FakeConnector)"},{"line_number":2174,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":2175,"context_line":"    def test_terminate_connection_success(self):"},{"line_number":2176,"context_line":"        self.driver.terminate_connection(test_volume, FakeConnector)"},{"line_number":2177,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_64100001","line":2174,"in_reply_to":"7aa08908_3ddf38d7","updated":"2016-06-20 07:54:43.000000000","message":"Done","commit_id":"621150270653f767c8205940dca4c686cc3e7d0d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b91447604aba9655d9fc5f7ba0b5c5f95cb532a5","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"    def test_initialize_snapshot_connection_success(self):"},{"line_number":2179,"context_line":"        iscsi_properties \u003d self.driver.initialize_connection_snapshot("},{"line_number":2180,"context_line":"            self.snapshot, FakeConnector)"},{"line_number":2181,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":2182,"context_line":""},{"line_number":2183,"context_line":"    def test_terminate_snapshot_connection_success(self):"},{"line_number":2184,"context_line":"        self.driver.terminate_connection_snapshot(self.snapshot,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_54ec2729","line":2181,"updated":"2016-07-14 18:11:53.000000000","message":"Also assert that initialize_connection is called with proper arguments.","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"89eeaffce8253f8e07505dc5441d31c1af5d8ffb","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"    def test_initialize_snapshot_connection_success(self):"},{"line_number":2179,"context_line":"        iscsi_properties \u003d self.driver.initialize_connection_snapshot("},{"line_number":2180,"context_line":"            self.snapshot, FakeConnector)"},{"line_number":2181,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":2182,"context_line":""},{"line_number":2183,"context_line":"    def test_terminate_snapshot_connection_success(self):"},{"line_number":2184,"context_line":"        self.driver.terminate_connection_snapshot(self.snapshot,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_698fb775","line":2181,"in_reply_to":"1aa78d24_54ec2729","updated":"2016-07-15 05:24:32.000000000","message":"Done","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b91447604aba9655d9fc5f7ba0b5c5f95cb532a5","unresolved":false,"context_lines":[{"line_number":2182,"context_line":""},{"line_number":2183,"context_line":"    def test_terminate_snapshot_connection_success(self):"},{"line_number":2184,"context_line":"        self.driver.terminate_connection_snapshot(self.snapshot,"},{"line_number":2185,"context_line":"                                                  FakeConnector)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":""},{"line_number":2188,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_34e6bb44","line":2185,"updated":"2016-07-14 18:11:53.000000000","message":"Please assert that terminate_connection is called with proper arguments.","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"89eeaffce8253f8e07505dc5441d31c1af5d8ffb","unresolved":false,"context_lines":[{"line_number":2182,"context_line":""},{"line_number":2183,"context_line":"    def test_terminate_snapshot_connection_success(self):"},{"line_number":2184,"context_line":"        self.driver.terminate_connection_snapshot(self.snapshot,"},{"line_number":2185,"context_line":"                                                  FakeConnector)"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":""},{"line_number":2188,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_498abb65","line":2185,"in_reply_to":"1aa78d24_34e6bb44","updated":"2016-07-15 05:24:32.000000000","message":"Done","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":2286,"context_line":"                        lun_type\u003d\u002727\u0027,"},{"line_number":2287,"context_line":"                        metadata\u003dNone)"},{"line_number":2288,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":2289,"context_line":"        mock_iscsi_init.assert_called_with(volume, FakeConnector)"},{"line_number":2290,"context_line":""},{"line_number":2291,"context_line":"    def test_initialize_connection_success_multipath_portgroup(self):"},{"line_number":2292,"context_line":"        temp_connector \u003d copy.deepcopy(FakeConnector)"}],"source_content_type":"text/x-python","patch_set":26,"id":"dada55a8_a3c46392","line":2289,"range":{"start_line":2289,"start_character":24,"end_line":2289,"end_character":42},"updated":"2016-07-18 11:24:27.000000000","message":"assert_called_once_with","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":2426,"context_line":"                        provider_location\u003dself.snapshot.provider_location,"},{"line_number":2427,"context_line":"                        lun_type\u003d\u002727\u0027,"},{"line_number":2428,"context_line":"                        metadata\u003dNone)"},{"line_number":2429,"context_line":"        mock_iscsi_term.assert_called_with(volume, FakeConnector)"},{"line_number":2430,"context_line":""},{"line_number":2431,"context_line":"    def test_terminate_connection_success(self):"},{"line_number":2432,"context_line":"        self.driver.terminate_connection(self.volume, FakeConnector)"}],"source_content_type":"text/x-python","patch_set":26,"id":"dada55a8_c3bb570d","line":2429,"range":{"start_line":2429,"start_character":24,"end_line":2429,"end_character":42},"updated":"2016-07-18 11:24:27.000000000","message":"assert_called_once_with","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":3728,"context_line":"                        lun_type\u003d\u002727\u0027,"},{"line_number":3729,"context_line":"                        metadata\u003dNone)"},{"line_number":3730,"context_line":"        self.assertEqual(1, iscsi_properties[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":3731,"context_line":"        mock_fc_init.assert_called_with(volume, FakeConnector)"},{"line_number":3732,"context_line":""},{"line_number":3733,"context_line":"    def test_initialize_connection_success(self):"},{"line_number":3734,"context_line":"        iscsi_properties \u003d self.driver.initialize_connection(self.volume,"}],"source_content_type":"text/x-python","patch_set":26,"id":"dada55a8_83483f2f","line":3731,"range":{"start_line":3731,"start_character":21,"end_line":3731,"end_character":39},"updated":"2016-07-18 11:24:27.000000000","message":"assert_called_once_with","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":3772,"context_line":"                        provider_location\u003dself.snapshot.provider_location,"},{"line_number":3773,"context_line":"                        lun_type\u003d\u002727\u0027,"},{"line_number":3774,"context_line":"                        metadata\u003dNone)"},{"line_number":3775,"context_line":"        mock_fc_term.assert_called_with(volume, FakeConnector)"},{"line_number":3776,"context_line":""},{"line_number":3777,"context_line":"    def test_terminate_connection_success(self):"},{"line_number":3778,"context_line":"        self.driver.client.terminateFlag \u003d True"}],"source_content_type":"text/x-python","patch_set":26,"id":"dada55a8_235eb3e9","line":3775,"range":{"start_line":3775,"start_character":21,"end_line":3775,"end_character":39},"updated":"2016-07-18 11:24:27.000000000","message":"assert_called_once_with","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"70e76a19793145b02825bd773b9aad1487178f34","unresolved":false,"context_lines":[{"line_number":4555,"context_line":""},{"line_number":4556,"context_line":"    def test_backup_use_temp_snapshot_config(self)"},{"line_number":4557,"context_line":"        local_conf \u003d self.volume.driver.configuration.local_conf"},{"line_number":4558,"context_line":"        self.assertEqual(False, local_conf.backup_use_temp_snapshot)"},{"line_number":4559,"context_line":""},{"line_number":4560,"context_line":"    @mock.patch.object(QUOTAS, \u0027reserve\u0027,"},{"line_number":4561,"context_line":"                       side_effect \u003d OVER_SNAPSHOT_QUOTA_EXCEPTION)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1aa78d24_a9527a66","line":4558,"updated":"2016-07-14 04:59:56.000000000","message":"assertFalse","commit_id":"58e866c27f240890194f5a986d5fc40369e2b533"}],"cinder/volume/driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f7d3e7cde2d10ca967eb64eb2fe36e0bc1ea1a5c","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                    \u0027storage back-end.\u0027),"},{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027The backup use temp snapshot path will use.\u0027),"},{"line_number":264,"context_line":"]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_74fa9abe","line":263,"updated":"2016-07-12 10:18:38.000000000","message":"Please, add more user-friendly message here","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eede068acd9e7d4c6ccfe9062457d56c03dfab85","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                    \u0027storage back-end.\u0027),"},{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027The backup use temp snapshot path will use.\u0027),"},{"line_number":264,"context_line":"]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_d726ebb8","line":263,"in_reply_to":"1aa78d24_74fa9abe","updated":"2016-07-12 12:06:06.000000000","message":"Done","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6568851d1fd8a904126faf764a2ffe587a8c92f","unresolved":false,"context_lines":[{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup use temp snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will use. Otherwise, it will use backup use temp \u0027"},{"line_number":265,"context_line":"                     \u0027volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_dd4600bf","line":264,"updated":"2016-07-12 15:45:41.000000000","message":"If this is set to True, the temp snapshot will be used during the backup. Otherwise, the temp volume will be used.","commit_id":"77104edfbaa3f20e9e5d865dca0ee9a4f4c7b144"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6472f0be1f2324fc95810ad1deaf32b6e0fca5bc","unresolved":false,"context_lines":[{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup use temp snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will use. Otherwise, it will use backup use temp \u0027"},{"line_number":265,"context_line":"                     \u0027volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_6e7618a5","line":264,"in_reply_to":"1aa78d24_dd4600bf","updated":"2016-07-13 05:01:44.000000000","message":"Done","commit_id":"77104edfbaa3f20e9e5d865dca0ee9a4f4c7b144"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6568851d1fd8a904126faf764a2ffe587a8c92f","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup use temp snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will use. Otherwise, it will use backup use temp \u0027"},{"line_number":265,"context_line":"                     \u0027volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_7070d372","line":265,"updated":"2016-07-12 15:45:41.000000000","message":"Please add a unit test for this new option.","commit_id":"77104edfbaa3f20e9e5d865dca0ee9a4f4c7b144"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6568851d1fd8a904126faf764a2ffe587a8c92f","unresolved":false,"context_lines":[{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":1052,"context_line":"        if self.configuration.safe_get(\"backup_use_temp_snapshot\"):"},{"line_number":1053,"context_line":"            return True"},{"line_number":1054,"context_line":"        return False"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def snapshot_remote_attachable(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_bddfb4d4","line":1053,"updated":"2016-07-12 15:45:41.000000000","message":"Please remove lines 1052-1053 from here and add it in your driver instead.\n\nA driver that can support temp snapshot path should read this config value in the driver itself.  Otherwise driver maintainers will make a mistake and think that this works already without implementing additional code.","commit_id":"77104edfbaa3f20e9e5d865dca0ee9a4f4c7b144"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"6472f0be1f2324fc95810ad1deaf32b6e0fca5bc","unresolved":false,"context_lines":[{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":1052,"context_line":"        if self.configuration.safe_get(\"backup_use_temp_snapshot\"):"},{"line_number":1053,"context_line":"            return True"},{"line_number":1054,"context_line":"        return False"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def snapshot_remote_attachable(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_4e799c92","line":1053,"in_reply_to":"1aa78d24_bddfb4d4","updated":"2016-07-13 05:01:44.000000000","message":"Done","commit_id":"77104edfbaa3f20e9e5d865dca0ee9a4f4c7b144"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b91447604aba9655d9fc5f7ba0b5c5f95cb532a5","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                    \u0027storage back-end.\u0027),"},{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup use temp snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will be used during the backup. Otherwise, it \u0027"},{"line_number":265,"context_line":"                     \u0027will use backup use temp volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_f438b3d6","line":265,"range":{"start_line":263,"start_character":46,"end_line":265,"end_character":58},"updated":"2016-07-14 18:11:53.000000000","message":"This is confusing, could you please rephrase it?","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"89eeaffce8253f8e07505dc5441d31c1af5d8ffb","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                    \u0027storage back-end.\u0027),"},{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup use temp snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will be used during the backup. Otherwise, it \u0027"},{"line_number":265,"context_line":"                     \u0027will use backup use temp volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_89eae30c","line":265,"range":{"start_line":263,"start_character":46,"end_line":265,"end_character":58},"in_reply_to":"1aa78d24_f438b3d6","updated":"2016-07-15 05:24:32.000000000","message":"Done","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                    \u0027storage back-end.\u0027),"},{"line_number":261,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":262,"context_line":"                default\u003dFalse,"},{"line_number":263,"context_line":"                help\u003d\u0027If this is set to True, the backup_use_temp_snapshot \u0027"},{"line_number":264,"context_line":"                     \u0027path will be used during the backup. Otherwise, it \u0027"},{"line_number":265,"context_line":"                     \u0027will use backup_use_temp_volume path.\u0027),"},{"line_number":266,"context_line":"]"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":26,"id":"dada55a8_202b49ed","line":265,"range":{"start_line":263,"start_character":46,"end_line":265,"end_character":58},"updated":"2016-07-18 11:24:27.000000000","message":"this is little cryptic for an admin, you may need to mention what is \"backup use temp snapshot path\"?","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c16498456e25f5be5059b493bf6f803a5a79f90a","unresolved":false,"context_lines":[{"line_number":1164,"context_line":"        pass"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def create_export_snapshot(self, context, snapshot, connector):"},{"line_number":1167,"context_line":"        \"\"\"Export a volumez.\"\"\""},{"line_number":1168,"context_line":"        pass"},{"line_number":1169,"context_line":""},{"line_number":1170,"context_line":"    def remove_export_snapshot(self, context, snapshot):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_541f3d09","line":1167,"range":{"start_line":1167,"start_character":20,"end_line":1167,"end_character":27},"updated":"2016-07-08 01:32:36.000000000","message":"snapshot?","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a7e2c80e8415922b061ccc9a1d070618e6f133b7","unresolved":false,"context_lines":[{"line_number":1164,"context_line":"        pass"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def create_export_snapshot(self, context, snapshot, connector):"},{"line_number":1167,"context_line":"        \"\"\"Export a volumez.\"\"\""},{"line_number":1168,"context_line":"        pass"},{"line_number":1169,"context_line":""},{"line_number":1170,"context_line":"    def remove_export_snapshot(self, context, snapshot):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_be075880","line":1167,"range":{"start_line":1167,"start_character":20,"end_line":1167,"end_character":27},"in_reply_to":"1aa78d24_541f3d09","updated":"2016-07-08 05:10:26.000000000","message":"Done","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c16498456e25f5be5059b493bf6f803a5a79f90a","unresolved":false,"context_lines":[{"line_number":1861,"context_line":"        hostgroup_id \u003d self.client.add_host_to_hostgroup(host_id)"},{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        # Mapping lungroup and hostgroup to view."},{"line_number":1864,"context_line":"        self.client.do_mapping(lun_id, hostgroup_id,"},{"line_number":1865,"context_line":"                               host_id, portgroup_id,"},{"line_number":1866,"context_line":"                               lun_type\u003dlun_type)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        hostlun_id \u003d self.client.get_host_lun_id(host_id, lun_id,"},{"line_number":1869,"context_line":"                                                 lun_type\u003dlun_type)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_14e655e8","line":1866,"range":{"start_line":1864,"start_character":20,"end_line":1866,"end_character":49},"updated":"2016-07-08 01:32:36.000000000","message":"just use \"do_mapping(lun_id, hostgroup_id, host_id, portgroup_id, lun_type)\"? s/lun_type\u003dlun_type/lun_type.","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a7e2c80e8415922b061ccc9a1d070618e6f133b7","unresolved":false,"context_lines":[{"line_number":1861,"context_line":"        hostgroup_id \u003d self.client.add_host_to_hostgroup(host_id)"},{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        # Mapping lungroup and hostgroup to view."},{"line_number":1864,"context_line":"        self.client.do_mapping(lun_id, hostgroup_id,"},{"line_number":1865,"context_line":"                               host_id, portgroup_id,"},{"line_number":1866,"context_line":"                               lun_type\u003dlun_type)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        hostlun_id \u003d self.client.get_host_lun_id(host_id, lun_id,"},{"line_number":1869,"context_line":"                                                 lun_type\u003dlun_type)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_7ed7b0ed","line":1866,"range":{"start_line":1864,"start_character":20,"end_line":1866,"end_character":49},"in_reply_to":"1aa78d24_14e655e8","updated":"2016-07-08 05:10:26.000000000","message":"Done","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c16498456e25f5be5059b493bf6f803a5a79f90a","unresolved":false,"context_lines":[{"line_number":1866,"context_line":"                               lun_type\u003dlun_type)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        hostlun_id \u003d self.client.get_host_lun_id(host_id, lun_id,"},{"line_number":1869,"context_line":"                                                 lun_type\u003dlun_type)"},{"line_number":1870,"context_line":""},{"line_number":1871,"context_line":"        LOG.info(_LI(\"initialize_connection, host lun id is: %s.\"),"},{"line_number":1872,"context_line":"                 hostlun_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_b4078180","line":1869,"range":{"start_line":1869,"start_character":49,"end_line":1869,"end_character":66},"updated":"2016-07-08 01:32:36.000000000","message":"Same. Why should add lun_type\u003dlun_type, maybe it\u0027s unnecessary.","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a7e2c80e8415922b061ccc9a1d070618e6f133b7","unresolved":false,"context_lines":[{"line_number":1866,"context_line":"                               lun_type\u003dlun_type)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        hostlun_id \u003d self.client.get_host_lun_id(host_id, lun_id,"},{"line_number":1869,"context_line":"                                                 lun_type\u003dlun_type)"},{"line_number":1870,"context_line":""},{"line_number":1871,"context_line":"        LOG.info(_LI(\"initialize_connection, host lun id is: %s.\"),"},{"line_number":1872,"context_line":"                 hostlun_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_de022472","line":1869,"range":{"start_line":1869,"start_character":49,"end_line":1869,"end_character":66},"in_reply_to":"1aa78d24_b4078180","updated":"2016-07-08 05:10:26.000000000","message":"Done","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ad87d4fe15a7e5e0416b614861343a06455ee2b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":70,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":71,"context_line":"                default\u003dFalse,"},{"line_number":72,"context_line":"                help\u003d\u0027The backup use temp snapshot path will use.\u0027),"},{"line_number":73,"context_line":"]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_3578948f","line":72,"updated":"2016-07-08 12:48:05.000000000","message":"Please move this option to volume/driver.py so other drivers can use it as well.","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"0ec451d738785d83f693258dc77f84dca6206639","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":70,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":71,"context_line":"                default\u003dFalse,"},{"line_number":72,"context_line":"                help\u003d\u0027The backup use temp snapshot path will use.\u0027),"},{"line_number":73,"context_line":"]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_6c6352de","line":72,"in_reply_to":"1aa78d24_117da3e7","updated":"2016-07-09 05:40:53.000000000","message":"Done","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"630b399ffd37e7ffd7e152bf75c6f39eff289b19","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027The remote metro device pool names.\u0027),"},{"line_number":70,"context_line":"    cfg.BoolOpt(\u0027backup_use_temp_snapshot\u0027,"},{"line_number":71,"context_line":"                default\u003dFalse,"},{"line_number":72,"context_line":"                help\u003d\u0027The backup use temp snapshot path will use.\u0027),"},{"line_number":73,"context_line":"]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_117da3e7","line":72,"in_reply_to":"1aa78d24_3578948f","updated":"2016-07-08 15:10:59.000000000","message":"Thanks xing, what should i do, in my patch modify volume/driver.py or another new patch?","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ad87d4fe15a7e5e0416b614861343a06455ee2b","unresolved":false,"context_lines":[{"line_number":1823,"context_line":"                Hypermetro consistency group support"},{"line_number":1824,"context_line":"                Consistency group support"},{"line_number":1825,"context_line":"                Cgsnapshot support"},{"line_number":1826,"context_line":"        2.0.8 - Backup snapshot support"},{"line_number":1827,"context_line":"    \"\"\""},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    VERSION \u003d \"2.0.8\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_75ce9cb5","line":1826,"updated":"2016-07-08 12:48:05.000000000","message":"Backup snapshot optimal path support\n\n\nBackup snapshot should work using temp volume already.  You are adding support to use snapshot directly without creating a temp volume.","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"0ec451d738785d83f693258dc77f84dca6206639","unresolved":false,"context_lines":[{"line_number":1823,"context_line":"                Hypermetro consistency group support"},{"line_number":1824,"context_line":"                Consistency group support"},{"line_number":1825,"context_line":"                Cgsnapshot support"},{"line_number":1826,"context_line":"        2.0.8 - Backup snapshot support"},{"line_number":1827,"context_line":"    \"\"\""},{"line_number":1828,"context_line":""},{"line_number":1829,"context_line":"    VERSION \u003d \"2.0.8\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_cc6246d8","line":1826,"in_reply_to":"1aa78d24_75ce9cb5","updated":"2016-07-09 05:40:53.000000000","message":"Done","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ad87d4fe15a7e5e0416b614861343a06455ee2b","unresolved":false,"context_lines":[{"line_number":2036,"context_line":"                Hypermetro consistency group support"},{"line_number":2037,"context_line":"                Consistency group support"},{"line_number":2038,"context_line":"                Cgsnapshot support"},{"line_number":2039,"context_line":"        2.0.8 - Backup snapshot support"},{"line_number":2040,"context_line":"    \"\"\""},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    VERSION \u003d \"2.0.8\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_d5f830c7","line":2039,"updated":"2016-07-08 12:48:05.000000000","message":"Same","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"0ec451d738785d83f693258dc77f84dca6206639","unresolved":false,"context_lines":[{"line_number":2036,"context_line":"                Hypermetro consistency group support"},{"line_number":2037,"context_line":"                Consistency group support"},{"line_number":2038,"context_line":"                Cgsnapshot support"},{"line_number":2039,"context_line":"        2.0.8 - Backup snapshot support"},{"line_number":2040,"context_line":"    \"\"\""},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    VERSION \u003d \"2.0.8\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_0c9baeca","line":2039,"in_reply_to":"1aa78d24_d5f830c7","updated":"2016-07-09 05:40:53.000000000","message":"Done","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f7d3e7cde2d10ca967eb64eb2fe36e0bc1ea1a5c","unresolved":false,"context_lines":[{"line_number":1915,"context_line":"    @utils.synchronized(\u0027huawei\u0027, external\u003dTrue)"},{"line_number":1916,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1917,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":1918,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":1919,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":1920,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":1921,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_f4884a24","line":1918,"updated":"2016-07-12 10:18:38.000000000","message":"It\u0027s copy-pasted form lines #1838-1844","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eede068acd9e7d4c6ccfe9062457d56c03dfab85","unresolved":false,"context_lines":[{"line_number":1915,"context_line":"    @utils.synchronized(\u0027huawei\u0027, external\u003dTrue)"},{"line_number":1916,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1917,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":1918,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":1919,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":1920,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":1921,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_573b1bd1","line":1918,"in_reply_to":"1aa78d24_f4884a24","updated":"2016-07-12 12:06:06.000000000","message":"Done","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f7d3e7cde2d10ca967eb64eb2fe36e0bc1ea1a5c","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":2051,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":2052,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":2053,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":2054,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":2055,"context_line":"        else:"},{"line_number":2056,"context_line":"            lun_id \u003d self._check_volume_exist_on_array("}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_747d7a1b","line":2053,"updated":"2016-07-12 10:18:38.000000000","message":"The same as above","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eede068acd9e7d4c6ccfe9062457d56c03dfab85","unresolved":false,"context_lines":[{"line_number":2050,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":2051,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":2052,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":2053,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":2054,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":2055,"context_line":"        else:"},{"line_number":2056,"context_line":"            lun_id \u003d self._check_volume_exist_on_array("}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_37380fd3","line":2053,"in_reply_to":"1aa78d24_747d7a1b","updated":"2016-07-12 12:06:06.000000000","message":"Done","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f7d3e7cde2d10ca967eb64eb2fe36e0bc1ea1a5c","unresolved":false,"context_lines":[{"line_number":2198,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":2199,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":2200,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":2201,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":2202,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":2203,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":2204,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_547afe24","line":2201,"updated":"2016-07-12 10:18:38.000000000","message":"The same","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eede068acd9e7d4c6ccfe9062457d56c03dfab85","unresolved":false,"context_lines":[{"line_number":2198,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":2199,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":2200,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":2201,"context_line":"        if hasattr(volume, \u0027lun_type\u0027):"},{"line_number":2202,"context_line":"            lun_id \u003d volume.provider_location"},{"line_number":2203,"context_line":"            lun_type \u003d constants.SNAPSHOT_TYPE"},{"line_number":2204,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_973103f0","line":2201,"in_reply_to":"1aa78d24_547afe24","updated":"2016-07-12 12:06:06.000000000","message":"Done","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b91447604aba9655d9fc5f7ba0b5c5f95cb532a5","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        pass"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":1172,"context_line":"        if self.configuration.safe_get(\"backup_use_temp_snapshot\"):"},{"line_number":1173,"context_line":"            return True"},{"line_number":1174,"context_line":"        return False"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def _copy_volume(self, volume, copy_name, src_lun, tgt_lun):"},{"line_number":1177,"context_line":"        luncopy_id \u003d self.client.create_luncopy(copy_name,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_94716fab","line":1174,"range":{"start_line":1172,"start_character":7,"end_line":1174,"end_character":20},"updated":"2016-07-14 18:11:53.000000000","message":"nit:\n\nreturn self.configuration.safe_get(\"backup_use_temp_snapshot\")","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"89eeaffce8253f8e07505dc5441d31c1af5d8ffb","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        pass"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":1172,"context_line":"        if self.configuration.safe_get(\"backup_use_temp_snapshot\"):"},{"line_number":1173,"context_line":"            return True"},{"line_number":1174,"context_line":"        return False"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def _copy_volume(self, volume, copy_name, src_lun, tgt_lun):"},{"line_number":1177,"context_line":"        luncopy_id \u003d self.client.create_luncopy(copy_name,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1aa78d24_e9f1e702","line":1174,"range":{"start_line":1172,"start_character":7,"end_line":1174,"end_character":20},"in_reply_to":"1aa78d24_94716fab","updated":"2016-07-15 05:24:32.000000000","message":"Done","commit_id":"64634c39f27484d2788b929887ab95b11d2a4dde"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"cd8f756472225adcc8eb486378c3d6575229eee8","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        pass"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":1172,"context_line":"        if self.configuration.safe_get(\"backup_use_temp_snapshot\"):"},{"line_number":1173,"context_line":"            return self.configuration.safe_get(\"backup_use_temp_snapshot\")"},{"line_number":1174,"context_line":"        return False"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def _copy_volume(self, volume, copy_name, src_lun, tgt_lun):"},{"line_number":1177,"context_line":"        luncopy_id \u003d self.client.create_luncopy(copy_name,"}],"source_content_type":"text/x-python","patch_set":25,"id":"fad55976_dcc5e65b","line":1174,"range":{"start_line":1172,"start_character":0,"end_line":1174,"end_character":20},"updated":"2016-07-16 00:49:35.000000000","message":"This config option has a default to be False.  It\u0027s okay just return it. \nReplace lines 1172-1174 to this one line:\n\nreturn self.configuration.safe_get(\"backup_use_temp_snapshot\")","commit_id":"2dbec5279c01cc12df4f75162c48e27693695052"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"c16498456e25f5be5059b493bf6f803a5a79f90a","unresolved":false,"context_lines":[{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"        return lungroup_ids"},{"line_number":1491,"context_line":""},{"line_number":1492,"context_line":"    def get_lun_info(self, lun_id, lun_type \u003d constants.LUN_TYPE):"},{"line_number":1493,"context_line":"        cmd_type \u003d \u0027lun\u0027 if lun_type \u003d\u003d constants.LUN_TYPE else \u0027snapshot\u0027"},{"line_number":1494,"context_line":"        url \u003d (\"/%s/%s\" % (cmd_type, lun_id))"},{"line_number":1495,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        msg \u003d _(\u0027Get volume error.\u0027)"},{"line_number":1498,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1499,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1502,"context_line":""},{"line_number":1503,"context_line":"    def get_snapshot_info(self, snapshot_id):"},{"line_number":1504,"context_line":"        url \u003d \"/snapshot/\" + snapshot_id"},{"line_number":1505,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        msg \u003d _(\u0027Get snapshot error.\u0027)"},{"line_number":1508,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1509,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"    def extend_lun(self, lun_id, new_volume_size):"},{"line_number":1514,"context_line":"        url \u003d \"/lun/expand\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_37d9d384","line":1511,"range":{"start_line":1492,"start_character":4,"end_line":1511,"end_character":29},"updated":"2016-07-08 01:32:36.000000000","message":"Actually the function \"get_lun_info\" has the function of \"get_lun_info\" and \"get_snapshot_info\".","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a7e2c80e8415922b061ccc9a1d070618e6f133b7","unresolved":false,"context_lines":[{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"        return lungroup_ids"},{"line_number":1491,"context_line":""},{"line_number":1492,"context_line":"    def get_lun_info(self, lun_id, lun_type \u003d constants.LUN_TYPE):"},{"line_number":1493,"context_line":"        cmd_type \u003d \u0027lun\u0027 if lun_type \u003d\u003d constants.LUN_TYPE else \u0027snapshot\u0027"},{"line_number":1494,"context_line":"        url \u003d (\"/%s/%s\" % (cmd_type, lun_id))"},{"line_number":1495,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        msg \u003d _(\u0027Get volume error.\u0027)"},{"line_number":1498,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1499,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1502,"context_line":""},{"line_number":1503,"context_line":"    def get_snapshot_info(self, snapshot_id):"},{"line_number":1504,"context_line":"        url \u003d \"/snapshot/\" + snapshot_id"},{"line_number":1505,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1506,"context_line":""},{"line_number":1507,"context_line":"        msg \u003d _(\u0027Get snapshot error.\u0027)"},{"line_number":1508,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1509,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        return result[\u0027data\u0027]"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"    def extend_lun(self, lun_id, new_volume_size):"},{"line_number":1514,"context_line":"        url \u003d \"/lun/expand\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_5e3e342a","line":1511,"range":{"start_line":1492,"start_character":4,"end_line":1511,"end_character":29},"in_reply_to":"1aa78d24_37d9d384","updated":"2016-07-08 05:10:26.000000000","message":"It\u0027s only reuse code for backup snapshot, no need modify.","commit_id":"34dad7cf5772207d721954923e4e1f95134ae0af"}],"releasenotes/notes/backup-snapshot-6e7447db930c31f6.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4ad87d4fe15a7e5e0416b614861343a06455ee2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot\r"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"1aa78d24_b5cac46c","line":3,"updated":"2016-07-08 12:48:05.000000000","message":"backup snapshot optimal path","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"0ec451d738785d83f693258dc77f84dca6206639","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot\r"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"1aa78d24_ec9d82bc","line":3,"in_reply_to":"1aa78d24_b5cac46c","updated":"2016-07-09 05:40:53.000000000","message":"Done","commit_id":"9a8ec2b1b5ee4c09afb2d81753fd17561a84d030"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f7d3e7cde2d10ca967eb64eb2fe36e0bc1ea1a5c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot optimal path"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1aa78d24_d4bb8ec2","line":3,"updated":"2016-07-12 10:18:38.000000000","message":"Why is it in the upgrade section?","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"eede068acd9e7d4c6ccfe9062457d56c03dfab85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot optimal path"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1aa78d24_b7523f11","line":3,"in_reply_to":"1aa78d24_d4bb8ec2","updated":"2016-07-12 12:06:06.000000000","message":"Done","commit_id":"9d88d58582975bca455a0b4ac7073a8ed95702e5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"213bba1144d11fbbe41b244a4344ea1edc8ecdc2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot optimal path"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"dada55a8_58c5a959","line":3,"updated":"2016-07-17 20:16:44.000000000","message":"This is a little confusing. If you do another update, please change this to something like:\n\nAdded snapshot backup support for Huawei storage.","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"7426a3b32e44b80ce3ce645de7f47d032187099f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Huawei support backup snapshot optimal path"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"dada55a8_001725a4","line":3,"in_reply_to":"dada55a8_58c5a959","updated":"2016-07-18 11:24:27.000000000","message":"+1","commit_id":"3eb855260eab83a7e3fc9a098200ee852928ead5"}]}
