)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"cdd42cccceaa48ef05bae5b4ec3dc0f9098a8b5c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Liu Xinguo \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-22 16:01:33 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add hypermetro support for huawei volume driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hypermetro is a key storage feature and a requirement for"},{"line_number":10,"context_line":"features such as high-availability and disaster recovery of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_3ced22b7","line":7,"updated":"2015-07-22 15:42:40.000000000","message":"Capitalize \"huawei\".","commit_id":"35b597f16d0033dc6197729021bc14f3c3e5b2a5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d420da4d8f05384b9b9f3141058f0a78814de711","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Liu Xinguo \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-22 16:01:33 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add hypermetro support for huawei volume driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hypermetro is a key storage feature and a requirement for"},{"line_number":10,"context_line":"features such as high-availability and disaster recovery of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_0b8b2669","line":7,"in_reply_to":"3a50d1a3_3ced22b7","updated":"2015-07-23 01:55:42.000000000","message":"Done","commit_id":"35b597f16d0033dc6197729021bc14f3c3e5b2a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Liu Xinguo \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-23 12:02:14 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add hypermetro support for huawei volume driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hypermetro is a key storage feature and a requirement for"},{"line_number":10,"context_line":"features such as high-availability and disaster recovery of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_f911e952","line":7,"updated":"2015-07-23 06:25:54.000000000","message":"s/huawei/Huawei","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Liu Xinguo \u003c295988511@qq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-23 12:02:14 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add hypermetro support for huawei volume driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hypermetro is a key storage feature and a requirement for"},{"line_number":10,"context_line":"features such as high-availability and disaster recovery of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a50d1a3_9c753333","line":7,"in_reply_to":"3a50d1a3_f911e952","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"c756c122015b712020611c4868d09f73a3788850","unresolved":false,"context_lines":[{"line_number":10,"context_line":"features such as high-availability and disaster recovery of"},{"line_number":11,"context_line":"applications running on OpenStack clouds. This patch will"},{"line_number":12,"context_line":"add initial support for volume hypermetro in Huawei driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint support-hypermetro-for-huawei-volume-driver"},{"line_number":15,"context_line":"Change-Id: Ibbdecccafd63a11a28c3ab12893756f23c38082a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":55,"id":"5a2ca52d_bb1bb81a","line":13,"updated":"2015-10-15 13:32:44.000000000","message":"I think this needs a DocImpact tag since you are adding capabilities to the driver.","commit_id":"d8922914d9db83321dc056e20597c2029f87dce6"}],"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \"UserName\": \"admin\","},{"line_number":39,"context_line":"        \"UserPassword\": \"Admin@storage1\","},{"line_number":40,"context_line":"        \"StoragePool\": \"StoragePool001\","},{"line_number":41,"context_line":"        \"domain_name\": \"hypermeto-domain\","},{"line_number":42,"context_line":"        \"remote_target_ip\": \"111.111.101.241\""},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3a2d1a95","line":41,"updated":"2015-07-15 12:25:05.000000000","message":"hypermeto -\u003e hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \"UserName\": \"admin\","},{"line_number":39,"context_line":"        \"UserPassword\": \"Admin@storage1\","},{"line_number":40,"context_line":"        \"StoragePool\": \"StoragePool001\","},{"line_number":41,"context_line":"        \"domain_name\": \"hypermeto-domain\","},{"line_number":42,"context_line":"        \"remote_target_ip\": \"111.111.101.241\""},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d7494032","line":41,"in_reply_to":"9a41bdd9_3a2d1a95","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0588f2f89d2a19aecb101ab4d49bfbccce8b62ed","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"                                       mock_all_pool_info,"},{"line_number":1346,"context_line":"                                       mock_pool_info,"},{"line_number":1347,"context_line":"                                       mock_create_volume,"},{"line_number":1348,"context_line":"                                       mock_hyper_domain,):"},{"line_number":1349,"context_line":"        self.driver.restclient.login()"},{"line_number":1350,"context_line":"        metadata \u003d {\"hypermetro_id\": \u00271\u0027,"},{"line_number":1351,"context_line":"                    \"remote_lun_id\": \u002711\u0027}"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_8f1fb76f","line":1348,"updated":"2015-07-31 13:37:49.000000000","message":"extra comma?","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8cf2def716592daa9c76bce282fd0adb1758c792","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"                                       mock_all_pool_info,"},{"line_number":1346,"context_line":"                                       mock_pool_info,"},{"line_number":1347,"context_line":"                                       mock_create_volume,"},{"line_number":1348,"context_line":"                                       mock_hyper_domain,):"},{"line_number":1349,"context_line":"        self.driver.restclient.login()"},{"line_number":1350,"context_line":"        metadata \u003d {\"hypermetro_id\": \u00271\u0027,"},{"line_number":1351,"context_line":"                    \"remote_lun_id\": \u002711\u0027}"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_d06c77d2","line":1348,"in_reply_to":"3a50d1a3_8f1fb76f","updated":"2015-07-31 15:24:36.000000000","message":"Done","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"9e6232841595fc677c2ee8ab579099ba8366a409","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                \u0027volume_metadata\u0027: [{\u0027key\u0027: \u0027hypermetro_id\u0027,"},{"line_number":95,"context_line":"                                     \u0027value\u0027: \u00271\u0027},"},{"line_number":96,"context_line":"                                    {\u0027key\u0027: \u0027remote_lun_id\u0027,"},{"line_number":97,"context_line":"                                     \u0027value\u0027: \u002711\u0027}]"},{"line_number":98,"context_line":"                }"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"error_volume \u003d {\u0027name\u0027: \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0637\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_c2684b8a","line":97,"updated":"2015-08-24 03:03:01.000000000","message":"the last element need a comma, ?","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4ddd6772a77038a9a0a8eb8e9d86b8e43c7b67f9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                \u0027volume_metadata\u0027: [{\u0027key\u0027: \u0027hypermetro_id\u0027,"},{"line_number":95,"context_line":"                                     \u0027value\u0027: \u00271\u0027},"},{"line_number":96,"context_line":"                                    {\u0027key\u0027: \u0027remote_lun_id\u0027,"},{"line_number":97,"context_line":"                                     \u0027value\u0027: \u002711\u0027}]"},{"line_number":98,"context_line":"                }"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"error_volume \u003d {\u0027name\u0027: \u0027volume-21ec7341-9256-497b-97d9-ef48edcf0637\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_24eef4ec","line":97,"in_reply_to":"fa1b9901_c2684b8a","updated":"2015-08-24 07:23:49.000000000","message":"Done","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f785a274dcbfda2e4f6a09095b8eb70d8040bb33","unresolved":false,"context_lines":[{"line_number":1914,"context_line":"                       return_value\u003dNone)"},{"line_number":1915,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027logout\u0027,"},{"line_number":1916,"context_line":"                       return_value\u003dNone)"},{"line_number":1917,"context_line":"    def test_delete_hypermetro_succuss(self, mock_login_info,"},{"line_number":1918,"context_line":"                                       mock_lun_exit,"},{"line_number":1919,"context_line":"                                       mock_check_hyermetro,"},{"line_number":1920,"context_line":"                                       mock_metro_info,"}],"source_content_type":"text/x-python","patch_set":50,"id":"9a1a9d01_0dabb88a","line":1917,"updated":"2015-10-03 00:36:57.000000000","message":"succuss -\u003e success","commit_id":"118ea0d50f9cfacdd00aba4ed1d7bfcce22152d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"bdcba98f68c24729257ee54752d04c1d225aee95","unresolved":false,"context_lines":[{"line_number":1914,"context_line":"                       return_value\u003dNone)"},{"line_number":1915,"context_line":"    @mock.patch.object(rest_client.RestClient, \u0027logout\u0027,"},{"line_number":1916,"context_line":"                       return_value\u003dNone)"},{"line_number":1917,"context_line":"    def test_delete_hypermetro_succuss(self, mock_login_info,"},{"line_number":1918,"context_line":"                                       mock_lun_exit,"},{"line_number":1919,"context_line":"                                       mock_check_hyermetro,"},{"line_number":1920,"context_line":"                                       mock_metro_info,"}],"source_content_type":"text/x-python","patch_set":50,"id":"9a1a9d01_912122ff","line":1917,"in_reply_to":"9a1a9d01_0dabb88a","updated":"2015-10-03 02:30:41.000000000","message":"Done","commit_id":"118ea0d50f9cfacdd00aba4ed1d7bfcce22152d5"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"f785a274dcbfda2e4f6a09095b8eb70d8040bb33","unresolved":false,"context_lines":[{"line_number":1924,"context_line":"        self.driver.restclient.login()"},{"line_number":1925,"context_line":"        result \u003d self.driver.delete_volume(hyper_volume)"},{"line_number":1926,"context_line":"        self.assertTrue(result)"},{"line_number":1927,"context_line":""},{"line_number":1928,"context_line":"    def create_fake_conf_file(self):"},{"line_number":1929,"context_line":"        \"\"\"Create a fake Config file."},{"line_number":1930,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"9a1a9d01_6d8b541f","line":1927,"updated":"2015-10-03 00:36:57.000000000","message":"Wouldn\u0027t it also be good to add some test cases for failures? Just to make sure that they are handled well and that it doesn\u0027t completely break.","commit_id":"118ea0d50f9cfacdd00aba4ed1d7bfcce22152d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"bdcba98f68c24729257ee54752d04c1d225aee95","unresolved":false,"context_lines":[{"line_number":1924,"context_line":"        self.driver.restclient.login()"},{"line_number":1925,"context_line":"        result \u003d self.driver.delete_volume(hyper_volume)"},{"line_number":1926,"context_line":"        self.assertTrue(result)"},{"line_number":1927,"context_line":""},{"line_number":1928,"context_line":"    def create_fake_conf_file(self):"},{"line_number":1929,"context_line":"        \"\"\"Create a fake Config file."},{"line_number":1930,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"9a1a9d01_312056f7","line":1927,"in_reply_to":"9a1a9d01_6d8b541f","updated":"2015-10-03 02:30:41.000000000","message":"Sure, will add the tests latter, thanks!","commit_id":"118ea0d50f9cfacdd00aba4ed1d7bfcce22152d5"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"21aafe7cce333c3ca3a19597309afe243f335615","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        \"code\":0"},{"line_number":1022,"context_line":"    },"},{"line_number":1023,"context_line":"    \"data\":{"},{"line_number":1024,"context_line":"\"\"\""},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"FAKE_CONNECT_FC_RESPONCE \u003d {"},{"line_number":1027,"context_line":"    \"driver_volume_type\": \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a2fa921_da45d36e","line":1024,"updated":"2015-10-10 10:06:04.000000000","message":"lack of \"}\" ?","commit_id":"412ef98ac7832e3e10854aa4c2466cc16c5f20ef"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f78b36bdc6aaaaf7e8eb4ac3438d9882c7b50bb4","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"        lun_info \u003d self.driver.extend_volume(test_volume, 3)"},{"line_number":1618,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"    def test_extend_volume_fail(self):"},{"line_number":1621,"context_line":"        self.driver.restclient.login()"},{"line_number":1622,"context_line":"        tmp_volume \u003d {\u0027size\u0027: \u002712\u0027,"},{"line_number":1623,"context_line":"                      \u0027id\u0027: \u002721ec7341-9256-497b-97d9-ef48edcf0111\u0027,"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_dc511310","line":1620,"updated":"2015-10-13 03:01:55.000000000","message":"This is not related to hypermetro.  Can you add this change in the commit message?","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86e3674ab6c113bdd6a69130b9e29c73781f1b4e","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"        lun_info \u003d self.driver.extend_volume(test_volume, 3)"},{"line_number":1618,"context_line":"        self.assertEqual(\u00271\u0027, lun_info[\u0027provider_location\u0027])"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"    def test_extend_volume_fail(self):"},{"line_number":1621,"context_line":"        self.driver.restclient.login()"},{"line_number":1622,"context_line":"        tmp_volume \u003d {\u0027size\u0027: \u002712\u0027,"},{"line_number":1623,"context_line":"                      \u0027id\u0027: \u002721ec7341-9256-497b-97d9-ef48edcf0111\u0027,"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_488696ba","line":1620,"in_reply_to":"7a2fa921_dc511310","updated":"2015-10-13 08:00:24.000000000","message":"We can add these code in another patch, thanks!","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":42,"context_line":"HUAWEI_VALID_KEYS \u003d [\u0027maxIOPS\u0027, \u0027minIOPS\u0027, \u0027minBandWidth\u0027,"},{"line_number":43,"context_line":"                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"HYPERMETRO_DEVICES \u003d \"\"\"{"},{"line_number":46,"context_line":"    \"remote_device\": {"},{"line_number":47,"context_line":"        \"RestURL\": \"100.97.10.38\","},{"line_number":48,"context_line":"        \"UserName\": \"admin\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dff0a0ff","line":45,"updated":"2015-07-15 12:25:05.000000000","message":"It\u0027s debug information?","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":42,"context_line":"HUAWEI_VALID_KEYS \u003d [\u0027maxIOPS\u0027, \u0027minIOPS\u0027, \u0027minBandWidth\u0027,"},{"line_number":43,"context_line":"                     \u0027maxBandWidth\u0027, \u0027latency\u0027, \u0027IOType\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"HYPERMETRO_DEVICES \u003d \"\"\"{"},{"line_number":46,"context_line":"    \"remote_device\": {"},{"line_number":47,"context_line":"        \"RestURL\": \"100.97.10.38\","},{"line_number":48,"context_line":"        \"UserName\": \"admin\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f70d64e8","line":45,"in_reply_to":"9a41bdd9_dff0a0ff","updated":"2015-07-16 05:17:01.000000000","message":"This is used for var initialize, thanks.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0588f2f89d2a19aecb101ab4d49bfbccce8b62ed","unresolved":false,"context_lines":[{"line_number":35,"context_line":"HYPERMETRO_RUNNSTATUS_STOP \u003d 41"},{"line_number":36,"context_line":"HYPERMETRO_RUNNSTATUS_NORMAL \u003d 1"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"OS_TYPE \u003d {\u0027Linux\u0027: \u00270\u0027,"},{"line_number":41,"context_line":"           \u0027Windows\u0027: \u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_9a1e135e","line":38,"updated":"2015-07-31 13:37:49.000000000","message":"LENGTH? or LEN?","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8cf2def716592daa9c76bce282fd0adb1758c792","unresolved":false,"context_lines":[{"line_number":35,"context_line":"HYPERMETRO_RUNNSTATUS_STOP \u003d 41"},{"line_number":36,"context_line":"HYPERMETRO_RUNNSTATUS_NORMAL \u003d 1"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"MAX_HOSTNAME_LENTH \u003d 31"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"OS_TYPE \u003d {\u0027Linux\u0027: \u00270\u0027,"},{"line_number":41,"context_line":"           \u0027Windows\u0027: \u00271\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_83530b6c","line":38,"in_reply_to":"3a50d1a3_9a1e135e","updated":"2015-07-31 15:24:36.000000000","message":"Done","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"10eee36a9c6eb2595bd597083a6235753bfaef10","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027MAXBANDWidth\u0027, \u0027LATENCY\u0027, \u0027IOTYPE\u0027]"},{"line_number":69,"context_line":"HYPERMETRO_CLASS \u003d \"cinder.volume.drivers.huawei.replication.HuaweiHyperMetro\""},{"line_number":70,"context_line":"MAX_LUN_NUM_IN_QOS \u003d 64"},{"line_number":71,"context_line":"HYPERMETRO_CLASS \u003d \"cinder.volume.drivers.huawei.hypermetro.HuaweiHyperMetro\""}],"source_content_type":"text/x-python","patch_set":52,"id":"7a2fa921_dae95380","line":71,"updated":"2015-10-10 09:58:57.000000000","message":"The same as line 69.","commit_id":"412ef98ac7832e3e10854aa4c2466cc16c5f20ef"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"7f8076b7c3f133a1ba98d0ad4ef71ad8215005e6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":45,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":46,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":47,"context_line":"HYPERMETRO_RUNNSTATUS_STOP \u003d 41"},{"line_number":48,"context_line":"HYPERMETRO_RUNNSTATUS_NORMAL \u003d 1"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"THICK_LUNTYPE \u003d 0"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a2fa921_ff08b3db","line":47,"updated":"2015-10-12 01:15:27.000000000","message":"RUNNSTATUS -\u003e RUNSTATUS","commit_id":"6ed981c88c57260398ead9e71687a19d29154c5a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"7f8076b7c3f133a1ba98d0ad4ef71ad8215005e6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":46,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":47,"context_line":"HYPERMETRO_RUNNSTATUS_STOP \u003d 41"},{"line_number":48,"context_line":"HYPERMETRO_RUNNSTATUS_NORMAL \u003d 1"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"THICK_LUNTYPE \u003d 0"},{"line_number":51,"context_line":"THIN_LUNTYPE \u003d 1"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a2fa921_9f0dffea","line":48,"updated":"2015-10-12 01:15:27.000000000","message":"RUNNSTATUS -\u003e RUNSTATUS","commit_id":"6ed981c88c57260398ead9e71687a19d29154c5a"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                       None,"},{"line_number":149,"context_line":"                                                       self.configuration)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"                    plugin.delete_hypermeto(volume)"},{"line_number":152,"context_line":"                except ImportError:"},{"line_number":153,"context_line":"                    LOG.info(_LW(\u0027Import the hypermetro class error,\u0027"},{"line_number":154,"context_line":"                                 \u0027 Not support the feature\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3f8f4c2b","line":151,"updated":"2015-07-15 12:25:05.000000000","message":"hypermeto -\u003e hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                       None,"},{"line_number":149,"context_line":"                                                       self.configuration)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"                    plugin.delete_hypermeto(volume)"},{"line_number":152,"context_line":"                except ImportError:"},{"line_number":153,"context_line":"                    LOG.info(_LW(\u0027Import the hypermetro class error,\u0027"},{"line_number":154,"context_line":"                                 \u0027 Not support the feature\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b7ea7cd9","line":151,"in_reply_to":"9a41bdd9_3f8f4c2b","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"                plugin.connect_volume_iscsi(volume, connector)"},{"line_number":646,"context_line":"            except ImportError:"},{"line_number":647,"context_line":"                LOG.info(_LW(\u0027Import the hypermeto class error\u0027))"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        return HuaweiBaseDriver.initialize_connection_iscsi(self,"},{"line_number":650,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1f912847","line":647,"updated":"2015-07-15 12:25:05.000000000","message":"1)hypermeto -\u003e hypermetro\n2)The log info doesn\u0027t match the function.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":644,"context_line":""},{"line_number":645,"context_line":"                plugin.connect_volume_iscsi(volume, connector)"},{"line_number":646,"context_line":"            except ImportError:"},{"line_number":647,"context_line":"                LOG.info(_LW(\u0027Import the hypermeto class error\u0027))"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        return HuaweiBaseDriver.initialize_connection_iscsi(self,"},{"line_number":650,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_77c71464","line":647,"in_reply_to":"9a41bdd9_1f912847","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":663,"context_line":""},{"line_number":664,"context_line":"                plugin.disconnect_volume_iscsi(volume, connector)"},{"line_number":665,"context_line":"            except ImportError:"},{"line_number":666,"context_line":"                LOG.info(_LW(\u0027Import the hypermetro class error\u0027))"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        return HuaweiBaseDriver.terminate_connection_iscsi(self,"},{"line_number":669,"context_line":"                                                           volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3f32ec5f","line":666,"updated":"2015-07-15 12:25:05.000000000","message":"The log info doesn\u0027t match the function.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":663,"context_line":""},{"line_number":664,"context_line":"                plugin.disconnect_volume_iscsi(volume, connector)"},{"line_number":665,"context_line":"            except ImportError:"},{"line_number":666,"context_line":"                LOG.info(_LW(\u0027Import the hypermetro class error\u0027))"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        return HuaweiBaseDriver.terminate_connection_iscsi(self,"},{"line_number":669,"context_line":"                                                           volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_97c2d851","line":666,"in_reply_to":"9a41bdd9_3f32ec5f","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":714,"context_line":"                fc_info[\u0027data\u0027][\u0027target_wwn\u0027] \u003d loc_tgt_wwn + rem_tgt_wwn"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"            except ImportError as err:"},{"line_number":717,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":718,"context_line":"                          \u0027 %(err)s\u0027), {\u0027err\u0027: err})"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        LOG.info(_LI(\"Return FC info is: %s.\"), fc_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bfafdc28","line":717,"updated":"2015-07-15 12:25:05.000000000","message":"The log info doesn\u0027t match the function.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                plugin.disconnect_volume_fc(volume, connector)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"            except ImportError as err:"},{"line_number":740,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":741,"context_line":"                          \u0027 %(err)s\u0027), {\u0027err\u0027: err})"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1f336815","line":740,"updated":"2015-07-15 12:25:05.000000000","message":"The log info doesn\u0027t match the function.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"610f30497a8521e3c19a1f4055013189a879eeca","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":40,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":41,"context_line":"               help\u003d\u0027Config the valid repliation devices.\u0027), ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"},{"line_number":44,"context_line":"CONF.register_opts(huawei_opt)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_569cb15c","line":41,"updated":"2015-07-22 02:47:55.000000000","message":"\"replication\"  ?","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"dadd2ab8bf38f84faac961869d4d2b6efa1a1b50","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":40,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":41,"context_line":"               help\u003d\u0027Config the valid repliation devices.\u0027), ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"},{"line_number":44,"context_line":"CONF.register_opts(huawei_opt)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_a9e35aa3","line":41,"in_reply_to":"3a50d1a3_569cb15c","updated":"2015-07-22 03:29:18.000000000","message":"Done","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":40,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":41,"context_line":"               help\u003d\u0027Config the valid replication devices.\u0027), ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"},{"line_number":44,"context_line":"CONF.register_opts(huawei_opt)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f87e0618","line":41,"updated":"2015-07-22 06:25:11.000000000","message":"Help string needs an update.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":40,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":41,"context_line":"               help\u003d\u0027Config the valid replication devices.\u0027), ]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"},{"line_number":44,"context_line":"CONF.register_opts(huawei_opt)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_3ef9b7c7","line":41,"in_reply_to":"3a50d1a3_f87e0618","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Update the medatata."},{"line_number":100,"context_line":"        LOG.info(_LI(\u0027Create Volume option: %(opts)s\u0027), {\u0027opts\u0027: opts})"},{"line_number":101,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":102,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":103,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f8ccc66b","line":100,"updated":"2015-07-22 06:25:11.000000000","message":"s/Volume/volume","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Update the medatata."},{"line_number":100,"context_line":"        LOG.info(_LI(\u0027Create Volume option: %(opts)s\u0027), {\u0027opts\u0027: opts})"},{"line_number":101,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":102,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":103,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_5e24c35e","line":100,"in_reply_to":"3a50d1a3_f8ccc66b","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                 \u0027remote_lun_id\u0027: remote_lun_id})"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            except ImportError as err:"},{"line_number":121,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":122,"context_line":"                          \u0027 %(err)s\u0027), {\u0027err\u0027: err})"},{"line_number":123,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_18d172fa","line":121,"updated":"2015-07-22 06:25:11.000000000","message":"Why \\n ?","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                 \u0027remote_lun_id\u0027: remote_lun_id})"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            except ImportError as err:"},{"line_number":121,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":122,"context_line":"                          \u0027 %(err)s\u0027), {\u0027err\u0027: err})"},{"line_number":123,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_fec34f55","line":121,"in_reply_to":"3a50d1a3_18d172fa","updated":"2015-07-22 07:29:07.000000000","message":"will remove it.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"                    plugin.delete_hypermetro(volume)"},{"line_number":152,"context_line":"                except ImportError:"},{"line_number":153,"context_line":"                    LOG.info(_LI(\u0027Import hypermetro class error,\u0027"},{"line_number":154,"context_line":"                                 \u0027 Not support the feature.\u0027))"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            if self.restclient.check_lun_exist(lun_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_18265215","line":153,"updated":"2015-07-22 06:25:11.000000000","message":"LOG.error","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"                    plugin.delete_hypermetro(volume)"},{"line_number":152,"context_line":"                except ImportError:"},{"line_number":153,"context_line":"                    LOG.info(_LI(\u0027Import hypermetro class error,\u0027"},{"line_number":154,"context_line":"                                 \u0027 Not support the feature.\u0027))"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            if self.restclient.check_lun_exist(lun_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_de9d3367","line":153,"in_reply_to":"3a50d1a3_18265215","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"                plugin.connect_volume_iscsi(volume, connector)"},{"line_number":644,"context_line":"            except ImportError:"},{"line_number":645,"context_line":"                LOG.info(_LI(\u0027Import hypermetro class error.\u0027))"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        return HuaweiBaseDriver.initialize_connection_iscsi(self,"},{"line_number":648,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f84126aa","line":645,"updated":"2015-07-22 06:25:11.000000000","message":"LOG.error","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"                plugin.connect_volume_iscsi(volume, connector)"},{"line_number":644,"context_line":"            except ImportError:"},{"line_number":645,"context_line":"                LOG.info(_LI(\u0027Import hypermetro class error.\u0027))"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"        return HuaweiBaseDriver.initialize_connection_iscsi(self,"},{"line_number":648,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_7e85ff04","line":645,"in_reply_to":"3a50d1a3_f84126aa","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":660,"context_line":""},{"line_number":661,"context_line":"                plugin.disconnect_volume_iscsi(volume, connector)"},{"line_number":662,"context_line":"            except ImportError:"},{"line_number":663,"context_line":"                LOG.info(_LI(\u0027Import hypermetro class error.\u0027))"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        return HuaweiBaseDriver.terminate_connection_iscsi(self,"},{"line_number":666,"context_line":"                                                           volume,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_183f3225","line":663,"updated":"2015-07-22 06:25:11.000000000","message":"ditto.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":660,"context_line":""},{"line_number":661,"context_line":"                plugin.disconnect_volume_iscsi(volume, connector)"},{"line_number":662,"context_line":"            except ImportError:"},{"line_number":663,"context_line":"                LOG.info(_LI(\u0027Import hypermetro class error.\u0027))"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        return HuaweiBaseDriver.terminate_connection_iscsi(self,"},{"line_number":666,"context_line":"                                                           volume,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_3e7c571e","line":663,"in_reply_to":"3a50d1a3_183f3225","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":711,"context_line":"                fc_info[\u0027data\u0027][\u0027target_wwn\u0027] \u003d loc_tgt_wwn + rem_tgt_wwn"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"            except ImportError as err:"},{"line_number":714,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":715,"context_line":"                          \u0027 %(err)s.\u0027), {\u0027err\u0027: err})"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"        LOG.info(_LI(\"Return FC info is: %s.\"), fc_info)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_b8471ebb","line":714,"updated":"2015-07-22 06:25:11.000000000","message":"Why \\n?","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                plugin.disconnect_volume_fc(volume, connector)"},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"            except ImportError as err:"},{"line_number":736,"context_line":"                LOG.error(_LE(\u0027\\n Import hypermetro class error:\u0027"},{"line_number":737,"context_line":"                          \u0027 %(err)s.\u0027), {\u0027err\u0027: err})"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_981902da","line":736,"updated":"2015-07-22 06:25:11.000000000","message":"ditto.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"cdd42cccceaa48ef05bae5b4ec3dc0f9098a8b5c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Update the medatata."},{"line_number":101,"context_line":"        LOG.info(_LI(\u0027Create volume option: %(opts)s\u0027), {\u0027opts\u0027: opts})"},{"line_number":102,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":103,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":104,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_aba24efa","line":101,"updated":"2015-07-22 15:42:40.000000000","message":"Missing \".\" at EOL.","commit_id":"35b597f16d0033dc6197729021bc14f3c3e5b2a5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d420da4d8f05384b9b9f3141058f0a78814de711","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        lun_id \u003d lun_info[\u0027ID\u0027]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Update the medatata."},{"line_number":101,"context_line":"        LOG.info(_LI(\u0027Create volume option: %(opts)s\u0027), {\u0027opts\u0027: opts})"},{"line_number":102,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":103,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":104,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_4b24cec3","line":101,"in_reply_to":"3a50d1a3_aba24efa","updated":"2015-07-23 01:55:42.000000000","message":"Done","commit_id":"35b597f16d0033dc6197729021bc14f3c3e5b2a5"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                    plugin.delete_hypermetro(volume)"},{"line_number":153,"context_line":"                except ImportError:"},{"line_number":154,"context_line":"                    LOG.error(_LE(\u0027Import hypermetro class error,\u0027"},{"line_number":155,"context_line":"                                  \u0027 Not support the feature.\u0027))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            if self.restclient.check_lun_exist(lun_id):"},{"line_number":158,"context_line":"                self.restclient.delete_lun(lun_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_993305f6","line":155,"updated":"2015-07-23 06:25:54.000000000","message":"\"feature not supported\"","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                    plugin.delete_hypermetro(volume)"},{"line_number":153,"context_line":"                except ImportError:"},{"line_number":154,"context_line":"                    LOG.error(_LE(\u0027Import hypermetro class error,\u0027"},{"line_number":155,"context_line":"                                  \u0027 Not support the feature.\u0027))"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            if self.restclient.check_lun_exist(lun_id):"},{"line_number":158,"context_line":"                self.restclient.delete_lun(lun_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_fc24770d","line":155,"in_reply_to":"3a50d1a3_993305f6","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0588f2f89d2a19aecb101ab4d49bfbccce8b62ed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"huawei_opt \u003d ["},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027cinder_huawei_conf_file\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027/etc/cinder/cinder_huawei_conf.xml\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":42,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":43,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_fa839753","line":40,"updated":"2015-07-31 13:37:49.000000000","message":"Missing period after \"driver\".","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8cf2def716592daa9c76bce282fd0adb1758c792","unresolved":false,"context_lines":[{"line_number":37,"context_line":"huawei_opt \u003d ["},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027cinder_huawei_conf_file\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027/etc/cinder/cinder_huawei_conf.xml\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver\u0027),"},{"line_number":41,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":42,"context_line":"               default\u003dconstants.HYPERMETRO_DEVICES,"},{"line_number":43,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_e3a0cf44","line":40,"in_reply_to":"3a50d1a3_fa839753","updated":"2015-07-31 15:24:36.000000000","message":"Done","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"4be9f0907e7e654e1838bf488641a3ed9cc27345","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            except ImportError as err:"},{"line_number":131,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":132,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":133,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        return {\u0027provider_location\u0027: lun_info[\u0027ID\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a50d1a3_0f3db98d","line":132,"updated":"2015-08-02 09:39:56.000000000","message":"have space char in above line is better","commit_id":"266f1de010d2d6d1adc7a5d1b9f88ed95240fec4"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"4be9f0907e7e654e1838bf488641a3ed9cc27345","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                    plugin.delete_hypermetro(volume)"},{"line_number":162,"context_line":"                except ImportError:"},{"line_number":163,"context_line":"                    LOG.error(_LE(\"Import hypermetro class error.\""},{"line_number":164,"context_line":"                                  \" Feature not supported.\"))"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            if self.restclient.check_lun_exist(lun_id):"},{"line_number":167,"context_line":"                self.restclient.delete_lun(lun_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a50d1a3_ef488d2f","line":164,"updated":"2015-08-02 09:39:56.000000000","message":"have space in above line is better","commit_id":"266f1de010d2d6d1adc7a5d1b9f88ed95240fec4"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"4be9f0907e7e654e1838bf488641a3ed9cc27345","unresolved":false,"context_lines":[{"line_number":748,"context_line":""},{"line_number":749,"context_line":"            except ImportError as err:"},{"line_number":750,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":751,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a50d1a3_8f51c9db","line":751,"updated":"2015-08-02 09:39:56.000000000","message":"have space in above line is better","commit_id":"266f1de010d2d6d1adc7a5d1b9f88ed95240fec4"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"9e6232841595fc677c2ee8ab579099ba8366a409","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            except ImportError as err:"},{"line_number":153,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":154,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":155,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            except Exception as err:"},{"line_number":158,"context_line":"                LOG.error(_LE(\u0027Create hypermetro class error: %(err)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_c29b6b71","line":155,"updated":"2015-08-24 03:03:01.000000000","message":"This except need to remove qos, like the next except statement.","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4ddd6772a77038a9a0a8eb8e9d86b8e43c7b67f9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            except ImportError as err:"},{"line_number":153,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":154,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":155,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            except Exception as err:"},{"line_number":158,"context_line":"                LOG.error(_LE(\u0027Create hypermetro class error: %(err)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_7857afca","line":155,"in_reply_to":"fa1b9901_c29b6b71","updated":"2015-08-24 07:23:49.000000000","message":"Done","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        # Update the medatata."},{"line_number":131,"context_line":"        LOG.info(_LI(\u0027Create volume option: %s.\u0027), opts)"},{"line_number":132,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":133,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                plugin \u003d importutils.import_object(constants.HYPERMETRO_CLASS,"},{"line_number":136,"context_line":"                                                   self.restclient,"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_a5c07ce1","line":133,"updated":"2015-08-28 14:10:56.000000000","message":"Could simplify to:\n\nif opts.get(\u0027hypermetro\u0027):","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e292430ef073334e51e77c74453282bf2c5ba872","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        # Update the medatata."},{"line_number":131,"context_line":"        LOG.info(_LI(\u0027Create volume option: %s.\u0027), opts)"},{"line_number":132,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":133,"context_line":"        if \u0027hypermetro\u0027 in opts and opts[\u0027hypermetro\u0027]:"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                plugin \u003d importutils.import_object(constants.HYPERMETRO_CLASS,"},{"line_number":136,"context_line":"                                                   self.restclient,"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_4aeba8b0","line":133,"in_reply_to":"da20952f_a5c07ce1","updated":"2015-08-29 05:35:46.000000000","message":"Done, thanks!","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":153,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":154,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            except Exception as err:"},{"line_number":157,"context_line":"                LOG.error(_LE(\u0027Create hypermetro class error: %(err)s.\u0027),"},{"line_number":158,"context_line":"                          {\u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_65482488","line":155,"updated":"2015-08-28 14:10:56.000000000","message":"Raise here? If you get an ImportError you will log the error, delete the lun, but then fall through and return the deleted LUN information.","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e292430ef073334e51e77c74453282bf2c5ba872","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                LOG.error(_LE(\"Import hypermetro class error:\""},{"line_number":153,"context_line":"                              \" %(err)s.\"), {\u0027err\u0027: err})"},{"line_number":154,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            except Exception as err:"},{"line_number":157,"context_line":"                LOG.error(_LE(\u0027Create hypermetro class error: %(err)s.\u0027),"},{"line_number":158,"context_line":"                          {\u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_0de4ea0a","line":155,"in_reply_to":"da20952f_65482488","updated":"2015-08-29 05:35:46.000000000","message":"Yes, I think there really need a raise, thanks!","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                        LOG.error(_LE(\"Import hypermetro class error. \""},{"line_number":195,"context_line":"                                      \"Feature not supported.\"))"},{"line_number":196,"context_line":"                        self.restclient.delete_lun(lun_id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                    except Exception as err:"},{"line_number":199,"context_line":"                        LOG.error(_LE(\u0027Delete hypermetro class error: \u0027"},{"line_number":200,"context_line":"                                      \u0027%(err)s.\u0027), {\u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_050e083b","line":197,"updated":"2015-08-28 14:10:56.000000000","message":"return? Or remove delete_lun call and fall through to the delete_lun below.","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e292430ef073334e51e77c74453282bf2c5ba872","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                        LOG.error(_LE(\"Import hypermetro class error. \""},{"line_number":195,"context_line":"                                      \"Feature not supported.\"))"},{"line_number":196,"context_line":"                        self.restclient.delete_lun(lun_id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                    except Exception as err:"},{"line_number":199,"context_line":"                        LOG.error(_LE(\u0027Delete hypermetro class error: \u0027"},{"line_number":200,"context_line":"                                      \u0027%(err)s.\u0027), {\u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_0d3cea2d","line":197,"in_reply_to":"da20952f_050e083b","updated":"2015-08-29 05:35:46.000000000","message":"I think probably we can raise here too, thanks!","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"            except Exception as err:"},{"line_number":1292,"context_line":"                plugin.rmt_client.logout()"},{"line_number":1293,"context_line":"                LOG.error(_LE(\"Attach hypermetro volume: %s.\"), err)"},{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        LOG.info(_LI(\"Return FC info is: %s.\"), fc_info)"},{"line_number":1296,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_80752699","line":1293,"updated":"2015-08-28 14:10:56.000000000","message":"Return or raise from these exceptions?","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e292430ef073334e51e77c74453282bf2c5ba872","unresolved":false,"context_lines":[{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"            except Exception as err:"},{"line_number":1292,"context_line":"                plugin.rmt_client.logout()"},{"line_number":1293,"context_line":"                LOG.error(_LE(\"Attach hypermetro volume: %s.\"), err)"},{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        LOG.info(_LI(\"Return FC info is: %s.\"), fc_info)"},{"line_number":1296,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_8886a863","line":1293,"in_reply_to":"da20952f_80752699","updated":"2015-08-29 05:35:46.000000000","message":"I think we should raise to keep consistent.","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"            except ImportError as err:"},{"line_number":1336,"context_line":"                LOG.error(_LE(\"Import hypermetro class error: %s.\"), err)"},{"line_number":1337,"context_line":"            except Exception as err:"},{"line_number":1338,"context_line":"                LOG.error(_LE(\"Detach hypermetro error: %s.\"), err)"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        return fc_info"}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_406f0ec5","line":1338,"updated":"2015-08-28 14:10:56.000000000","message":"Return or raise from these exceptions?","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"7940d5977bfbd0a0df53ff691fe03ae71f3d046d","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            except Exception as err:"},{"line_number":153,"context_line":"                msg \u003d _(\u0027Create hypermetro class error: %s.\u0027) % err"},{"line_number":154,"context_line":"                LOG.error(msg)"},{"line_number":155,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":156,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_d31e9e62","line":154,"updated":"2015-09-28 15:45:28.000000000","message":"Should we use LOG.exception?","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"72ac4091ecf37a70db320ae77f08d7e340d71de8","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            except Exception as err:"},{"line_number":153,"context_line":"                msg \u003d _(\u0027Create hypermetro class error: %s.\u0027) % err"},{"line_number":154,"context_line":"                LOG.error(msg)"},{"line_number":155,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":156,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_3ce0f5f9","line":154,"in_reply_to":"9a1a9d01_d31e9e62","updated":"2015-09-29 02:58:55.000000000","message":"Done","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"15aea673262c481ca4d36b7064c8eed9ec49ea89","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":46,"context_line":"               default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_ce18e0d5","line":47,"updated":"2015-10-09 09:31:03.000000000","message":"be used?","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fbddc73eb4d2884632395f9731982baf76046e8f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The configuration file for the Cinder Huawei driver.\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027hypermetro_devices\u0027,"},{"line_number":46,"context_line":"               default\u003dNone,"},{"line_number":47,"context_line":"               help\u003d\u0027The remote device hypermetro will use.\u0027),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_84dc0747","line":47,"in_reply_to":"7a2fa921_ce18e0d5","updated":"2015-10-10 01:57:11.000000000","message":"It means \"hypermetro will use the remote device\" and I think it\u0027s OK, thanks.","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"9ce375f6ae4595a0116531745749d5137997c54f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                metadata.update({\u0027hypermetro_id\u0027: metro_id,"},{"line_number":155,"context_line":"                                 \u0027remote_lun_id\u0027: remote_lun_id})"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            except Exception as err:"},{"line_number":158,"context_line":"                msg \u003d _(\u0027Create hypermetro class error: %s.\u0027) % err"},{"line_number":159,"context_line":"                LOG.exception(msg)"},{"line_number":160,"context_line":"                self._delete_lun_with_check(lun_id)"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_0ea57845","line":157,"updated":"2015-10-09 09:33:26.000000000","message":"Could we handle more specific exception here and below?","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"9ce375f6ae4595a0116531745749d5137997c54f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":187,"context_line":"                if \u0027hypermetro_id\u0027 in metadata:"},{"line_number":188,"context_line":"                    try:"},{"line_number":189,"context_line":"                        plugin \u003d importutils.import_object("},{"line_number":190,"context_line":"                            constants.HYPERMETRO_CLASS, self.restclient, None,"},{"line_number":191,"context_line":"                            self.configuration)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_6e3aece8","line":189,"updated":"2015-10-09 09:33:26.000000000","message":"Why do we import this using importutils?","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fbddc73eb4d2884632395f9731982baf76046e8f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":187,"context_line":"                if \u0027hypermetro_id\u0027 in metadata:"},{"line_number":188,"context_line":"                    try:"},{"line_number":189,"context_line":"                        plugin \u003d importutils.import_object("},{"line_number":190,"context_line":"                            constants.HYPERMETRO_CLASS, self.restclient, None,"},{"line_number":191,"context_line":"                            self.configuration)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_03f1aa6a","line":189,"in_reply_to":"7a2fa921_6e3aece8","updated":"2015-10-10 01:57:11.000000000","message":"Maybe we did not need importutils here, thanks!","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"10eee36a9c6eb2595bd597083a6235753bfaef10","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            raise exception.InvalidInput("},{"line_number":134,"context_line":"                reason\u003d_(\u0027Create volume error. Because %s.\u0027) % err)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # Update the medatata."},{"line_number":137,"context_line":"        LOG.info(_LI(\u0027Create volume option: %s.\u0027), opts)"},{"line_number":138,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":139,"context_line":"        if opts.get(\u0027hypermetro\u0027):"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a2fa921_1a9b4b19","line":136,"updated":"2015-10-10 09:58:57.000000000","message":"medatata -\u003e metadata","commit_id":"412ef98ac7832e3e10854aa4c2466cc16c5f20ef"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"298a848a1f81acfffcb1a1c8a3af16015de6716a","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            try:"},{"line_number":143,"context_line":"                metro_id, remote_lun_id \u003d hyperm.create_hypermetro(lun_id,"},{"line_number":144,"context_line":"                                                                   lun_param)"},{"line_number":145,"context_line":"            except Exception as err:"},{"line_number":146,"context_line":"                msg \u003d _(\u0027Create hypermetro class error: %s.\u0027) % err"},{"line_number":147,"context_line":"                LOG.exception(msg)"},{"line_number":148,"context_line":"                self._delete_lun_with_check(lun_id)"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a2fa921_14f48258","line":145,"updated":"2015-10-10 06:33:48.000000000","message":"Since HuaweiHyperMetor.create_hypermetro only raise exception.VolumeBackendAPIException, I feel here no need to use Exception, could instead of VolumeBackendAPIException.","commit_id":"412ef98ac7832e3e10854aa4c2466cc16c5f20ef"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"298a848a1f81acfffcb1a1c8a3af16015de6716a","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                metro_id, remote_lun_id \u003d hyperm.create_hypermetro(lun_id,"},{"line_number":144,"context_line":"                                                                   lun_param)"},{"line_number":145,"context_line":"            except Exception as err:"},{"line_number":146,"context_line":"                msg \u003d _(\u0027Create hypermetro class error: %s.\u0027) % err"},{"line_number":147,"context_line":"                LOG.exception(msg)"},{"line_number":148,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":149,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":52,"id":"7a2fa921_149b2219","line":146,"updated":"2015-10-10 06:33:48.000000000","message":"Feel this msg not right, you have initialize the class before try catch block, so here should be \u0027Create hypermetro error\u0027.","commit_id":"412ef98ac7832e3e10854aa4c2466cc16c5f20ef"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"7f8076b7c3f133a1ba98d0ad4ef71ad8215005e6","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            raise exception.InvalidInput("},{"line_number":134,"context_line":"                reason\u003d_(\u0027Create volume error. Because %s.\u0027) % err)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # Update the medatata."},{"line_number":137,"context_line":"        LOG.info(_LI(\u0027Create volume option: %s.\u0027), opts)"},{"line_number":138,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":139,"context_line":"        if opts.get(\u0027hypermetro\u0027):"}],"source_content_type":"text/x-python","patch_set":53,"id":"7a2fa921_9f565fcd","line":136,"updated":"2015-10-12 01:15:27.000000000","message":"medatata -\u003e metadata","commit_id":"6ed981c88c57260398ead9e71687a19d29154c5a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f78b36bdc6aaaaf7e8eb4ac3438d9882c7b50bb4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                msg \u003d _(\u0027Create hypermetro error: %s.\u0027) % err"},{"line_number":147,"context_line":"                LOG.exception(msg)"},{"line_number":148,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":149,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            LOG.info(_LI(\"Hypermetro id: %(metro_id)s. \""},{"line_number":152,"context_line":"                         \"Remote lun id: %(remote_lun_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_11069420","line":149,"updated":"2015-10-13 03:01:55.000000000","message":"This should just be a \"raise\".","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86e3674ab6c113bdd6a69130b9e29c73781f1b4e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                msg \u003d _(\u0027Create hypermetro error: %s.\u0027) % err"},{"line_number":147,"context_line":"                LOG.exception(msg)"},{"line_number":148,"context_line":"                self._delete_lun_with_check(lun_id)"},{"line_number":149,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            LOG.info(_LI(\"Hypermetro id: %(metro_id)s. \""},{"line_number":152,"context_line":"                         \"Remote lun id: %(remote_lun_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_c84e2696","line":149,"in_reply_to":"7a2fa921_11069420","updated":"2015-10-13 08:00:24.000000000","message":"Done","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f78b36bdc6aaaaf7e8eb4ac3438d9882c7b50bb4","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                        msg \u003d _(\u0027Delete hypermetro error: %s.\u0027) % err"},{"line_number":190,"context_line":"                        LOG.exception(msg)"},{"line_number":191,"context_line":"                        self.restclient.delete_lun(lun_id)"},{"line_number":192,"context_line":"                        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":195,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_bcfe9703","line":192,"updated":"2015-10-13 03:01:55.000000000","message":"Same here.","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"}],"cinder/volume/drivers/huawei/huawei_utils.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"755c0cd7b8c48c194debd78e42d8bb43aa968cac","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        return metadata"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    return{}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_5f3250f3","line":471,"updated":"2015-07-15 12:25:05.000000000","message":"just return","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":500,"context_line":""},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def get_remote_device_info(valid_replication_devices):"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    remote_device_info \u003d {}"},{"line_number":505,"context_line":"    try:"},{"line_number":506,"context_line":"        if valid_replication_devices:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_d9fc9240","line":503,"updated":"2015-08-11 07:48:45.000000000","message":"extra blank line","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":500,"context_line":""},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def get_remote_device_info(valid_replication_devices):"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    remote_device_info \u003d {}"},{"line_number":505,"context_line":"    try:"},{"line_number":506,"context_line":"        if valid_replication_devices:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_7499c56d","line":503,"in_reply_to":"1a4dcd0f_d9fc9240","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"def get_volume_metadata(volume):"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    if volume.get(\u0027volume_metadata\u0027):"},{"line_number":523,"context_line":"        metadata \u003d volume.get(\u0027volume_metadata\u0027)"},{"line_number":524,"context_line":"        return {item[\u0027key\u0027]: item[\u0027value\u0027] for item in metadata}"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_f9f70e57","line":521,"updated":"2015-08-11 07:48:45.000000000","message":"extra blank line","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"def get_volume_metadata(volume):"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    if volume.get(\u0027volume_metadata\u0027):"},{"line_number":523,"context_line":"        metadata \u003d volume.get(\u0027volume_metadata\u0027)"},{"line_number":524,"context_line":"        return {item[\u0027key\u0027]: item[\u0027value\u0027] for item in metadata}"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_949c915e","line":521,"in_reply_to":"1a4dcd0f_f9f70e57","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e2d97b8568d4733befeb25a577c5cbecbd42ce50","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        raise"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    if len(remote_device_info) \u003d\u003d 1:"},{"line_number":546,"context_line":"        for device_key, device_value in six.iteritems(remote_device_info):"},{"line_number":547,"context_line":"            return remote_device_info.get(device_key)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"da20952f_a0edca26","line":546,"updated":"2015-08-28 14:10:56.000000000","message":"I believe we\u0027ve been preferring just doing remote_device_info.items rather than using six.iteritems.","commit_id":"de35df976c937c908298e96a10e87a3002f5b3d5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"7940d5977bfbd0a0df53ff691fe03ae71f3d046d","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        else:"},{"line_number":540,"context_line":"            return"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    except Exception as err:"},{"line_number":543,"context_line":"        msg \u003d _(\"Get remote device info error. %s.\") % err"},{"line_number":544,"context_line":"        LOG.error(msg)"},{"line_number":545,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_d391be9a","line":542,"updated":"2015-09-28 15:45:28.000000000","message":"Please, catch more specific exception here","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"72ac4091ecf37a70db320ae77f08d7e340d71de8","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        else:"},{"line_number":540,"context_line":"            return"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    except Exception as err:"},{"line_number":543,"context_line":"        msg \u003d _(\"Get remote device info error. %s.\") % err"},{"line_number":544,"context_line":"        LOG.error(msg)"},{"line_number":545,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_53e037fa","line":542,"in_reply_to":"9a1a9d01_d391be9a","updated":"2015-09-29 02:58:55.000000000","message":"Done","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"7940d5977bfbd0a0df53ff691fe03ae71f3d046d","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    if len(remote_device_info) \u003d\u003d 1:"},{"line_number":548,"context_line":"        for device_key, device_value in remote_device_info.items():"},{"line_number":549,"context_line":"            return remote_device_info.get(device_key)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_134df63d","line":548,"updated":"2015-09-28 15:45:28.000000000","message":"This code could be simplified to:\nreturn remote_device_info.values()[0]","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"72ac4091ecf37a70db320ae77f08d7e340d71de8","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    if len(remote_device_info) \u003d\u003d 1:"},{"line_number":548,"context_line":"        for device_key, device_value in remote_device_info.items():"},{"line_number":549,"context_line":"            return remote_device_info.get(device_key)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_537fd765","line":548,"in_reply_to":"9a1a9d01_134df63d","updated":"2015-09-29 02:58:55.000000000","message":"In python3, remote_device_info.values()[0] will raise a error because remote_device_info.values() is really a object and does not support indexing. It can be changed to a list type, but after that, the value we get is not the first item of the value, maybe the second or the last. Thanks.","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"7940d5977bfbd0a0df53ff691fe03ae71f3d046d","unresolved":false,"context_lines":[{"line_number":550,"context_line":""},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"def get_volume_metadata(volume):"},{"line_number":553,"context_line":"    if volume.get(\u0027volume_metadata\u0027):"},{"line_number":554,"context_line":"        metadata \u003d volume.get(\u0027volume_metadata\u0027)"},{"line_number":555,"context_line":"        return {item[\u0027key\u0027]: item[\u0027value\u0027] for item in metadata}"},{"line_number":556,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_336fda93","line":553,"updated":"2015-09-28 15:45:28.000000000","message":"if \u0027volume_metadata\u0027 in volume:","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"72ac4091ecf37a70db320ae77f08d7e340d71de8","unresolved":false,"context_lines":[{"line_number":550,"context_line":""},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"def get_volume_metadata(volume):"},{"line_number":553,"context_line":"    if volume.get(\u0027volume_metadata\u0027):"},{"line_number":554,"context_line":"        metadata \u003d volume.get(\u0027volume_metadata\u0027)"},{"line_number":555,"context_line":"        return {item[\u0027key\u0027]: item[\u0027value\u0027] for item in metadata}"},{"line_number":556,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_fce6fd13","line":553,"in_reply_to":"9a1a9d01_336fda93","updated":"2015-09-29 02:58:55.000000000","message":"Done","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"}],"cinder/volume/drivers/huawei/hypermetro.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"7940d5977bfbd0a0df53ff691fe03ae71f3d046d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                domain_name \u003d device_info[\u0027domain_name\u0027]"},{"line_number":59,"context_line":"                domain_id \u003d self.rmt_client.get_hyper_domain_id(domain_name)"},{"line_number":60,"context_line":"            except Exception as err:"},{"line_number":61,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":62,"context_line":"                msg \u003d _(\"Domain name %s not exist.\") % domain_name"},{"line_number":63,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_d3f21ed2","line":60,"updated":"2015-09-28 15:45:28.000000000","message":"Please, catch more specific exception here and below","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"72ac4091ecf37a70db320ae77f08d7e340d71de8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                domain_name \u003d device_info[\u0027domain_name\u0027]"},{"line_number":59,"context_line":"                domain_id \u003d self.rmt_client.get_hyper_domain_id(domain_name)"},{"line_number":60,"context_line":"            except Exception as err:"},{"line_number":61,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":62,"context_line":"                msg \u003d _(\"Domain name %s not exist.\") % domain_name"},{"line_number":63,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":47,"id":"9a1a9d01_b34753bb","line":60,"in_reply_to":"9a1a9d01_d3f21ed2","updated":"2015-09-29 02:58:55.000000000","message":"I\u0027m not very sure which type of exception will raise here, I think use \"Exception\" is more safe for now, thanks!","commit_id":"b4c48f89aedcb5598a3774050970c32ca39a4e51"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"15aea673262c481ca4d36b7064c8eed9ec49ea89","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            except Exception as err:"},{"line_number":67,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":68,"context_line":"                msg \u003d _(\u0027Create hypermetro error. %s.\u0027) % err"},{"line_number":69,"context_line":"                LOG.error(msg)"},{"line_number":70,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_4e95b084","line":69,"updated":"2015-10-09 09:31:03.000000000","message":"Seems this err message will be logged twice. I think it is not necessary.","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fbddc73eb4d2884632395f9731982baf76046e8f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            except Exception as err:"},{"line_number":67,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":68,"context_line":"                msg \u003d _(\u0027Create hypermetro error. %s.\u0027) % err"},{"line_number":69,"context_line":"                LOG.error(msg)"},{"line_number":70,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_a49b4365","line":69,"in_reply_to":"7a2fa921_4e95b084","updated":"2015-10-10 01:57:11.000000000","message":"Done","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"15aea673262c481ca4d36b7064c8eed9ec49ea89","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":83,"context_line":"        remote_lun_id \u003d metadata[\u0027remote_lun_id\u0027]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if metro_id:"},{"line_number":86,"context_line":"            exst_flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":87,"context_line":"            if exst_flag:"},{"line_number":88,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_ced9c058","line":85,"updated":"2015-10-09 09:31:03.000000000","message":"What\u0027s the default value for metro_id?","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"fbddc73eb4d2884632395f9731982baf76046e8f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":83,"context_line":"        remote_lun_id \u003d metadata[\u0027remote_lun_id\u0027]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if metro_id:"},{"line_number":86,"context_line":"            exst_flag \u003d self.client.check_hypermetro_exist(metro_id)"},{"line_number":87,"context_line":"            if exst_flag:"},{"line_number":88,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"}],"source_content_type":"text/x-python","patch_set":51,"id":"7a2fa921_63f65e5e","line":85,"in_reply_to":"7a2fa921_ced9c058","updated":"2015-10-10 01:57:11.000000000","message":"None or \u0027\u0027.","commit_id":"968121ad508fde68935af4c3b08e108ea283cdc5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f78b36bdc6aaaaf7e8eb4ac3438d9882c7b50bb4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":68,"context_line":"                msg \u003d _(\u0027Create hypermetro error. %s.\u0027) % err"},{"line_number":69,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        except Exception as err:"},{"line_number":72,"context_line":"            msg \u003d _(\"Create remote LUN error. %s.\") % err"},{"line_number":73,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_b1ec8090","line":70,"updated":"2015-10-13 03:01:55.000000000","message":"Can you add the following before \"except Exception\"?  You just raised VolumeBackendAPIException at line 69, so here you should handle this specific exception first.\n\nexcept exception.VolumeBackendAPIException:\n    raise","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86e3674ab6c113bdd6a69130b9e29c73781f1b4e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                self.rmt_client.delete_lun(remote_lun_id)"},{"line_number":68,"context_line":"                msg \u003d _(\u0027Create hypermetro error. %s.\u0027) % err"},{"line_number":69,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        except Exception as err:"},{"line_number":72,"context_line":"            msg \u003d _(\"Create remote LUN error. %s.\") % err"},{"line_number":73,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_e33303f5","line":70,"in_reply_to":"7a2fa921_b1ec8090","updated":"2015-10-13 08:00:24.000000000","message":"Done","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f78b36bdc6aaaaf7e8eb4ac3438d9882c7b50bb4","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                  hostgroup_id,"},{"line_number":192,"context_line":"                                                  host_id)"},{"line_number":193,"context_line":"            host_lun_id \u003d self.rmt_client.find_host_lun_id(host_id, lun_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        except Exception as err:"},{"line_number":196,"context_line":"            msg \u003d _(\"Connect volume fc: connect volume error. %s.\") % err"},{"line_number":197,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_317e30af","line":194,"updated":"2015-10-13 03:01:55.000000000","message":"Same comment as line 70.","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"86e3674ab6c113bdd6a69130b9e29c73781f1b4e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                  hostgroup_id,"},{"line_number":192,"context_line":"                                                  host_id)"},{"line_number":193,"context_line":"            host_lun_id \u003d self.rmt_client.find_host_lun_id(host_id, lun_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        except Exception as err:"},{"line_number":196,"context_line":"            msg \u003d _(\"Connect volume fc: connect volume error. %s.\") % err"},{"line_number":197,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":54,"id":"7a2fa921_a3e8ab17","line":194,"in_reply_to":"7a2fa921_317e30af","updated":"2015-10-13 08:00:24.000000000","message":"Done","commit_id":"4d223e9c2c5e2545740e693c685057d2166d98df"}],"cinder/volume/drivers/huawei/replication.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_replication_status(self, volume):"},{"line_number":56,"context_line":"        return None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def get_replication_info(self):"},{"line_number":59,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dc38aef0","line":56,"updated":"2015-07-15 12:08:06.000000000","message":"return None -\u003e just return","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        pass"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_replication_status(self, volume):"},{"line_number":56,"context_line":"        return None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def get_replication_info(self):"},{"line_number":59,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_926666b9","line":56,"in_reply_to":"9a41bdd9_dc38aef0","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def get_replication_info(self):"},{"line_number":59,"context_line":"        return {}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def reenable_replication(self, volume):"},{"line_number":62,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7c2ac291","line":59,"updated":"2015-07-15 12:08:06.000000000","message":"just return","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            domain_name \u003d device_info[\"domain_name\"]"},{"line_number":91,"context_line":"            domain_id \u003d self.remote_client.get_hyper_domain_id(domain_name)"},{"line_number":92,"context_line":"        except Exception as err:"},{"line_number":93,"context_line":"            msg \u003d (_LE(\"create_hypermetro prepare hypermetro error. %s\") % err)"},{"line_number":94,"context_line":"            LOG.error(msg)"},{"line_number":95,"context_line":"            raise"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9c60e602","line":93,"updated":"2015-07-15 12:08:06.000000000","message":"prepare hypermetro ?","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            domain_name \u003d device_info[\"domain_name\"]"},{"line_number":91,"context_line":"            domain_id \u003d self.remote_client.get_hyper_domain_id(domain_name)"},{"line_number":92,"context_line":"        except Exception as err:"},{"line_number":93,"context_line":"            msg \u003d (_LE(\"create_hypermetro prepare hypermetro error. %s\") % err)"},{"line_number":94,"context_line":"            LOG.error(msg)"},{"line_number":95,"context_line":"            raise"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d2ccee8a","line":93,"in_reply_to":"9a41bdd9_9c60e602","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            LOG.error(msg)"},{"line_number":95,"context_line":"            raise"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        LOG.info(_LI(\u0027create_hypermeto: domain_id:%(domain_id)s\u0027),"},{"line_number":98,"context_line":"                 {\u0027domain_id\u0027: domain_id})"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9c98e6c1","line":97,"updated":"2015-07-15 12:08:06.000000000","message":"hypermeto -\u003e hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            LOG.error(msg)"},{"line_number":95,"context_line":"            raise"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        LOG.info(_LI(\u0027create_hypermeto: domain_id:%(domain_id)s\u0027),"},{"line_number":98,"context_line":"                 {\u0027domain_id\u0027: domain_id})"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f2a9f290","line":97,"in_reply_to":"9a41bdd9_9c98e6c1","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            return {hypermetro[\u0027ID\u0027], remotelun_id}"},{"line_number":106,"context_line":"        except Exception as err:"},{"line_number":107,"context_line":"            self.remote_client.delete_lun(remotelun_id)"},{"line_number":108,"context_line":"            self.remote_client.login_out()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            msg \u003d (_LE(\"_create_hyperclusterpair error. %s\") % err)"},{"line_number":111,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3c32fa5f","line":108,"updated":"2015-07-15 12:08:06.000000000","message":"login_out -\u003e logout","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            return {hypermetro[\u0027ID\u0027], remotelun_id}"},{"line_number":106,"context_line":"        except Exception as err:"},{"line_number":107,"context_line":"            self.remote_client.delete_lun(remotelun_id)"},{"line_number":108,"context_line":"            self.remote_client.login_out()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            msg \u003d (_LE(\"_create_hyperclusterpair error. %s\") % err)"},{"line_number":111,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b2fb6a78","line":108,"in_reply_to":"9a41bdd9_3c32fa5f","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            LOG.error(msg)"},{"line_number":112,"context_line":"            raise"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.remote_client.login_out()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def delete_hypermeto(self, volume):"},{"line_number":117,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bc3e0a26","line":114,"updated":"2015-07-15 12:08:06.000000000","message":"login_out -\u003e logout","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            LOG.error(msg)"},{"line_number":112,"context_line":"            raise"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.remote_client.login_out()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def delete_hypermeto(self, volume):"},{"line_number":117,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d2f62e8e","line":114,"in_reply_to":"9a41bdd9_bc3e0a26","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.remote_client.login_out()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def delete_hypermeto(self, volume):"},{"line_number":117,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":118,"context_line":"        metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":119,"context_line":"        remote_lun_id \u003d metadata[\u0027remote_lun_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bcdcca73","line":116,"updated":"2015-07-15 12:08:06.000000000","message":"hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.remote_client.login_out()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def delete_hypermeto(self, volume):"},{"line_number":117,"context_line":"        metadata \u003d huawei_utils.get_volume_metadata(volume)"},{"line_number":118,"context_line":"        metro_id \u003d metadata[\u0027hypermetro_id\u0027]"},{"line_number":119,"context_line":"        remote_lun_id \u003d metadata[\u0027remote_lun_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_92ec26bc","line":116,"in_reply_to":"9a41bdd9_bcdcca73","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":125,"context_line":"                metro_status \u003d int(metro_info[\u0027data\u0027][\u0027RUNNINGSTATUS\u0027])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"                LOG.debug(_LI(\u0027the metro status is: %s.\u0027) % metro_status)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"                if constants.HYPERMETRO_RUNNSTATUS_STOP \u003d\u003d metro_status:"},{"line_number":130,"context_line":"                    self.client.delete_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7c6722b7","line":127,"updated":"2015-07-15 12:08:06.000000000","message":"% -\u003e ,","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                metro_info \u003d self.client.get_hypermetro_by_id(metro_id)"},{"line_number":125,"context_line":"                metro_status \u003d int(metro_info[\u0027data\u0027][\u0027RUNNINGSTATUS\u0027])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"                LOG.debug(_LI(\u0027the metro status is: %s.\u0027) % metro_status)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"                if constants.HYPERMETRO_RUNNSTATUS_STOP \u003d\u003d metro_status:"},{"line_number":130,"context_line":"                    self.client.delete_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f2333260","line":127,"in_reply_to":"9a41bdd9_7c6722b7","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                if self.remote_client.check_lun_exist(remote_lun_id) is True:"},{"line_number":145,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":146,"context_line":"            except Exception as err:"},{"line_number":147,"context_line":"                self.remote_client.login_out()"},{"line_number":148,"context_line":"                msg \u003d (_LE(\"delete_hypermeto:Delete remote lun err. %s\") % err)"},{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1c14d69d","line":147,"updated":"2015-07-15 12:08:06.000000000","message":"login_out -\u003e logout","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                if self.remote_client.check_lun_exist(remote_lun_id) is True:"},{"line_number":145,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":146,"context_line":"            except Exception as err:"},{"line_number":147,"context_line":"                self.remote_client.login_out()"},{"line_number":148,"context_line":"                msg \u003d (_LE(\"delete_hypermeto:Delete remote lun err. %s\") % err)"},{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b2428aac","line":147,"in_reply_to":"9a41bdd9_1c14d69d","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":146,"context_line":"            except Exception as err:"},{"line_number":147,"context_line":"                self.remote_client.login_out()"},{"line_number":148,"context_line":"                msg \u003d (_LE(\"delete_hypermeto:Delete remote lun err. %s\") % err)"},{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dcc74e96","line":148,"updated":"2015-07-15 12:08:06.000000000","message":"hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":146,"context_line":"            except Exception as err:"},{"line_number":147,"context_line":"                self.remote_client.login_out()"},{"line_number":148,"context_line":"                msg \u003d (_LE(\"delete_hypermeto:Delete remote lun err. %s\") % err)"},{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9243c6ae","line":148,"in_reply_to":"9a41bdd9_dcc74e96","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            self.remote_client.login_out()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remotelun_id):"},{"line_number":155,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bc25aa09","line":152,"updated":"2015-07-15 12:08:06.000000000","message":"login_out -\u003e logout","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                LOG.error(msg)"},{"line_number":150,"context_line":"                raise"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            self.remote_client.login_out()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remotelun_id):"},{"line_number":155,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f20a5278","line":152,"in_reply_to":"9a41bdd9_bc25aa09","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                     \"REMOTEOBJID\": remotelun_id,"},{"line_number":163,"context_line":"                     \"SPEED\": \"2\"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        return self.client.create_hypermeto_pair(hcp_param)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def connect_volume_iscsi(self, volume, connector):"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1c3936a4","line":165,"updated":"2015-07-15 12:08:06.000000000","message":"hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                     \"REMOTEOBJID\": remotelun_id,"},{"line_number":163,"context_line":"                     \"SPEED\": \"2\"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        return self.client.create_hypermeto_pair(hcp_param)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def connect_volume_iscsi(self, volume, connector):"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_921ae6c4","line":165,"in_reply_to":"9a41bdd9_1c3936a4","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            {\u0027initiator_name\u0027: initiator_name,"},{"line_number":184,"context_line":"             \u0027volume\u0027: volume_name},)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        (iscsi_iqn, target_ip, portgroup_id) \u003d \\"},{"line_number":187,"context_line":"            self.remote_client.get_iscsi_params(self.xml_file_path, connector)"},{"line_number":188,"context_line":"        LOG.info(_LI(\u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":189,"context_line":"                     \u0027target_ip: %(target_ip)s, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3c967a3f","line":186,"updated":"2015-07-15 12:08:06.000000000","message":"use () instead of \\","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                                                          portgroup_id)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        del connector[\u0027remote_target_ip\u0027]"},{"line_number":218,"context_line":"        self.remote_client.login_out()"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def connect_volume_fc(self, volume, connector):"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7cbf22aa","line":218,"updated":"2015-07-15 12:08:06.000000000","message":"login_out? should be logout.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3d30670d996ead32be20182064ec451070cc51ee","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        return False"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def get_hypermeto_stats(self, hypermeto_id):"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        pass"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1c6056a4","line":348,"updated":"2015-07-15 12:08:06.000000000","message":"hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        return False"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def get_hypermeto_stats(self, hypermeto_id):"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        pass"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_52669e51","line":348,"in_reply_to":"9a41bdd9_1c6056a4","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            hypermetro \u003d self._create_hypermetro_pair(domain_id,"},{"line_number":100,"context_line":"                                                      local_lun_id,"},{"line_number":101,"context_line":"                                                      remotelun_id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            return {hypermetro[\u0027ID\u0027], remotelun_id}"},{"line_number":104,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_0472d87c","line":101,"updated":"2015-07-17 06:07:22.000000000","message":"remotelun_id -\u003e remote_lun_id? keep consistent \"local_lun_id\"","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            hypermetro \u003d self._create_hypermetro_pair(domain_id,"},{"line_number":100,"context_line":"                                                      local_lun_id,"},{"line_number":101,"context_line":"                                                      remotelun_id)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            return {hypermetro[\u0027ID\u0027], remotelun_id}"},{"line_number":104,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_6320484a","line":101,"in_reply_to":"9a41bdd9_0472d87c","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":142,"context_line":"            except Exception as err:"},{"line_number":143,"context_line":"                self.remote_client.logout()"},{"line_number":144,"context_line":"                LOG.error(_LE(\"delete_hypermetro:Delete remote lun err. %s.\"),"},{"line_number":145,"context_line":"                          err)"},{"line_number":146,"context_line":"                raise"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_842b4833","line":144,"updated":"2015-07-17 06:07:22.000000000","message":"Need a blank space after \"delete_hypermetro:\"","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    self.remote_client.delete_lun(remote_lun_id)"},{"line_number":142,"context_line":"            except Exception as err:"},{"line_number":143,"context_line":"                self.remote_client.logout()"},{"line_number":144,"context_line":"                LOG.error(_LE(\"delete_hypermetro:Delete remote lun err. %s.\"),"},{"line_number":145,"context_line":"                          err)"},{"line_number":146,"context_line":"                raise"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_231a4018","line":144,"in_reply_to":"9a41bdd9_842b4833","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self.remote_client.logout()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remotelun_id):"},{"line_number":151,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""},{"line_number":152,"context_line":"        hcp_param \u003d {\"DOMAINID\": domain_id,"},{"line_number":153,"context_line":"                     \"HCRESOURCETYPE\": \"1\","}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_241d9c0f","line":150,"updated":"2015-07-17 06:07:22.000000000","message":"remotelun_id -\u003e remote_lun_id","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self.remote_client.logout()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remotelun_id):"},{"line_number":151,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""},{"line_number":152,"context_line":"        hcp_param \u003d {\"DOMAINID\": domain_id,"},{"line_number":153,"context_line":"                     \"HCRESOURCETYPE\": \"1\","}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_03d61c27","line":150,"in_reply_to":"9a41bdd9_241d9c0f","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                  \u0027target_ip\u0027: target_ip,"},{"line_number":187,"context_line":"                  \u0027portgroup_id\u0027: portgroup_id})"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # Create host_group if not exist."},{"line_number":190,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":191,"context_line":"        host_name_before_hash \u003d None"},{"line_number":192,"context_line":"        if host_name and (len(host_name) \u003e 32):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_a4be8cd2","line":189,"updated":"2015-07-17 06:07:22.000000000","message":"s/host_group/hostgroup, just keep consistent.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                  \u0027target_ip\u0027: target_ip,"},{"line_number":187,"context_line":"                  \u0027portgroup_id\u0027: portgroup_id})"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # Create host_group if not exist."},{"line_number":190,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":191,"context_line":"        host_name_before_hash \u003d None"},{"line_number":192,"context_line":"        if host_name and (len(host_name) \u003e 32):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_a3dc1047","line":189,"in_reply_to":"9a41bdd9_a4be8cd2","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        # Create host_group if not exist."},{"line_number":190,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":191,"context_line":"        host_name_before_hash \u003d None"},{"line_number":192,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":193,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":194,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_64e164fe","line":192,"updated":"2015-07-17 06:07:22.000000000","message":"len(host_name) \u003e 31 ? keep consistent.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        # Create host_group if not exist."},{"line_number":190,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":191,"context_line":"        host_name_before_hash \u003d None"},{"line_number":192,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":193,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":194,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_c3dfd438","line":192,"in_reply_to":"9a41bdd9_64e164fe","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        host_name_before_hash \u003d None"},{"line_number":231,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":232,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_e4c49460","line":232,"updated":"2015-07-17 06:07:22.000000000","message":"the same as above.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        host_name_before_hash \u003d None"},{"line_number":231,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":232,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_63e7e812","line":232,"in_reply_to":"9a41bdd9_e4c49460","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        # Create host_group if not exist."},{"line_number":237,"context_line":"        hostid \u003d self.remote_client.add_host_with_check(host_name,"},{"line_number":238,"context_line":"                                                        host_name_before_hash)"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_64af2495","line":236,"updated":"2015-07-17 06:07:22.000000000","message":"s/host_group/hostgroup, just keep consistent.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        # Create host_group if not exist."},{"line_number":237,"context_line":"        hostid \u003d self.remote_client.add_host_with_check(host_name,"},{"line_number":238,"context_line":"                                                        host_name_before_hash)"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_23f1e0cd","line":236,"in_reply_to":"9a41bdd9_64af2495","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"a578ac6b758d84e935c74f9e52d45d624d68af4d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                if lungroupid is None:"},{"line_number":304,"context_line":"                    LOG.info(_LI(\"Can\u0027t find lun in lungroup.\"))"},{"line_number":305,"context_line":"                else:"},{"line_number":306,"context_line":"                    self.remote_client.remove_lun_from_lungroup(lungroupid,"},{"line_number":307,"context_line":"                                                                lun_id)"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.warning(_LW(\"Can\u0027t find lun on the array.\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_a4ba0cbf","line":306,"updated":"2015-07-17 06:07:22.000000000","message":"both lungroup_id and lun_id, or both lungroupid and lunid. Keep consistent. It\u0027s better to use lungroup_id and lun_id.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                if lungroupid is None:"},{"line_number":304,"context_line":"                    LOG.info(_LI(\"Can\u0027t find lun in lungroup.\"))"},{"line_number":305,"context_line":"                else:"},{"line_number":306,"context_line":"                    self.remote_client.remove_lun_from_lungroup(lungroupid,"},{"line_number":307,"context_line":"                                                                lun_id)"},{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                LOG.warning(_LW(\"Can\u0027t find lun on the array.\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_a3b3b009","line":306,"in_reply_to":"9a41bdd9_a4ba0cbf","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b56ad918d5b6403562b62f57e73d6410e904e128","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        host_name_before_hash \u003d None"},{"line_number":231,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":232,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_09d12efa","line":232,"updated":"2015-07-22 03:20:54.000000000","message":"\"len(host_name) \u003e 32\" keep consistent with line 192.","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"dadd2ab8bf38f84faac961869d4d2b6efa1a1b50","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        host_name_before_hash \u003d None"},{"line_number":231,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":232,"context_line":"        if host_name and (len(host_name) \u003e 32):"},{"line_number":233,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":234,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c9f7c657","line":232,"in_reply_to":"3a50d1a3_09d12efa","updated":"2015-07-22 03:29:18.000000000","message":"Done","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        pool \u003d self.remote_client.find_pool_info_by_name(config_pool,"},{"line_number":80,"context_line":"                                                         remote_pool)"},{"line_number":81,"context_line":"        # Create remote lun"},{"line_number":82,"context_line":"        lun_param[\"PARENTID\"] \u003d pool[\u0027ID\u0027]"},{"line_number":83,"context_line":"        remotelun_info \u003d self.remote_client.create_volume(lun_param)"},{"line_number":84,"context_line":"        remote_lun_id \u003d remotelun_info[\u0027ID\u0027]"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_d8e0ea98","line":82,"updated":"2015-07-22 06:25:11.000000000","message":"For consistency use either \u0027 or \"","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        pool \u003d self.remote_client.find_pool_info_by_name(config_pool,"},{"line_number":80,"context_line":"                                                         remote_pool)"},{"line_number":81,"context_line":"        # Create remote lun"},{"line_number":82,"context_line":"        lun_param[\"PARENTID\"] \u003d pool[\u0027ID\u0027]"},{"line_number":83,"context_line":"        remotelun_info \u003d self.remote_client.create_volume(lun_param)"},{"line_number":84,"context_line":"        remote_lun_id \u003d remotelun_info[\u0027ID\u0027]"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_01c49e5c","line":82,"in_reply_to":"3a50d1a3_d8e0ea98","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # Create hypermetro"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            domain_name \u003d device_info[\"domain_name\"]"},{"line_number":89,"context_line":"            domain_id \u003d self.remote_client.get_hyper_domain_id(domain_name)"},{"line_number":90,"context_line":"        except Exception as err:"},{"line_number":91,"context_line":"            LOG.error(_LE(\"create_hypermetro: Prepare hypermetro error. %s.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_78f0b667","line":88,"updated":"2015-07-22 06:25:11.000000000","message":"For consistency use either \u0027 or \"","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # Create hypermetro"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            domain_name \u003d device_info[\"domain_name\"]"},{"line_number":89,"context_line":"            domain_id \u003d self.remote_client.get_hyper_domain_id(domain_name)"},{"line_number":90,"context_line":"        except Exception as err:"},{"line_number":91,"context_line":"            LOG.error(_LE(\"create_hypermetro: Prepare hypermetro error. %s.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4195c63c","line":88,"in_reply_to":"3a50d1a3_78f0b667","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            self.remote_client.logout()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remote_lun_id):"},{"line_number":151,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""},{"line_number":152,"context_line":"        hcp_param \u003d {\"DOMAINID\": domain_id,"},{"line_number":153,"context_line":"                     \"HCRESOURCETYPE\": \"1\","},{"line_number":154,"context_line":"                     \"ISFIRSTSYNC\": False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_58b93a78","line":151,"updated":"2015-07-22 06:25:11.000000000","message":"Please use the docstring consistently throughout.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            self.remote_client.logout()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_hypermetro_pair(self, domain_id, lun_id, remote_lun_id):"},{"line_number":151,"context_line":"        \"\"\"Create a HyperMetroPair.\"\"\""},{"line_number":152,"context_line":"        hcp_param \u003d {\"DOMAINID\": domain_id,"},{"line_number":153,"context_line":"                     \"HCRESOURCETYPE\": \"1\","},{"line_number":154,"context_line":"                     \"ISFIRSTSYNC\": False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_a12daaff","line":151,"in_reply_to":"3a50d1a3_58b93a78","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        host_lun_id \u003d self.remote_client.find_host_lun_id(hostid, lun_id)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        tgt_port_wwns \u003d []"},{"line_number":256,"context_line":"        for wwn in wwns:"},{"line_number":257,"context_line":"            tgtwwpns \u003d self.remote_client.get_fc_target_wwpns(wwn)"},{"line_number":258,"context_line":"            if tgtwwpns:"},{"line_number":259,"context_line":"                tgt_port_wwns.append(tgtwwpns)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f87926c9","line":256,"updated":"2015-07-22 06:25:11.000000000","message":"You can possibly consolidate for loop from line 246 with this one.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        host_lun_id \u003d self.remote_client.find_host_lun_id(hostid, lun_id)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        tgt_port_wwns \u003d []"},{"line_number":256,"context_line":"        for wwn in wwns:"},{"line_number":257,"context_line":"            tgtwwpns \u003d self.remote_client.get_fc_target_wwpns(wwn)"},{"line_number":258,"context_line":"            if tgtwwpns:"},{"line_number":259,"context_line":"                tgt_port_wwns.append(tgtwwpns)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4413945b","line":256,"in_reply_to":"3a50d1a3_f87926c9","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.remote_client.delete_lun(remote_lun_id)"},{"line_number":107,"context_line":"            self.remote_client.logout()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            LOG.error(_LE(\"_create_hyperclusterpair error. %s.\"), err)"},{"line_number":110,"context_line":"            raise"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.remote_client.logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_59d6dd28","line":109,"updated":"2015-07-23 06:25:54.000000000","message":"Function name is _create_hypermetro_pair","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.remote_client.delete_lun(remote_lun_id)"},{"line_number":107,"context_line":"            self.remote_client.logout()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            LOG.error(_LE(\"_create_hyperclusterpair error. %s.\"), err)"},{"line_number":110,"context_line":"            raise"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.remote_client.logout()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_fc523766","line":109,"in_reply_to":"3a50d1a3_59d6dd28","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                LOG.debug(\u0027Hypermetro status is: %s.\u0027, metro_status)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                if constants.HYPERMETRO_RUNNSTATUS_STOP \u003d\u003d metro_status:"},{"line_number":129,"context_line":"                    self.client.delete_hypermetro(metro_id)"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_398511ce","line":128,"updated":"2015-07-23 06:25:54.000000000","message":"If and else case has common code \n\n\u003e\u003e self.client.delete_hypermetro(metro_id)","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"                LOG.debug(\u0027Hypermetro status is: %s.\u0027, metro_status)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                if constants.HYPERMETRO_RUNNSTATUS_STOP \u003d\u003d metro_status:"},{"line_number":129,"context_line":"                    self.client.delete_hypermetro(metro_id)"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    self.client.stop_hypermetro(metro_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_bcf6ef5a","line":128,"in_reply_to":"3a50d1a3_398511ce","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        LOG.info(_LI("},{"line_number":178,"context_line":"            \u0027initiator name: %(initiator_name)s, \u0027"},{"line_number":179,"context_line":"            \u0027volume name: %(volume)s.\u0027),"},{"line_number":180,"context_line":"            {\u0027initiator_name\u0027: initiator_name,"},{"line_number":181,"context_line":"             \u0027volume\u0027: volume_name})"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_99e465ac","line":178,"updated":"2015-07-23 06:25:54.000000000","message":"initiator[_]name:","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        volume_name \u003d huawei_utils.encode_name(volume[\u0027id\u0027])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        LOG.info(_LI("},{"line_number":178,"context_line":"            \u0027initiator name: %(initiator_name)s, \u0027"},{"line_number":179,"context_line":"            \u0027volume name: %(volume)s.\u0027),"},{"line_number":180,"context_line":"            {\u0027initiator_name\u0027: initiator_name,"},{"line_number":181,"context_line":"             \u0027volume\u0027: volume_name})"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_5fec7d29","line":178,"in_reply_to":"3a50d1a3_99e465ac","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        LOG.info(_LI(\"connect_volume_fc, return data is: %s.\"), info)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        return info"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def disconnect_volume_fc(self, volume, connector):"},{"line_number":281,"context_line":"        \"\"\"Delete map between a volume and a host for FC.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_396f51fd","line":278,"updated":"2015-07-23 06:25:54.000000000","message":"self.remote_client.logout() ??","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        LOG.info(_LI(\"connect_volume_fc, return data is: %s.\"), info)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        return info"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def disconnect_volume_fc(self, volume, connector):"},{"line_number":281,"context_line":"        \"\"\"Delete map between a volume and a host for FC.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_20a2ad99","line":278,"in_reply_to":"3a50d1a3_396f51fd","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"914aa8b50d15cc0b67f9de1378a9bb44070ab60b","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                    \u0027data\u0027: {\u0027target_wwn\u0027: tgt_port_wwns,"},{"line_number":337,"context_line":"                             \u0027initiator_target_map\u0027: init_targ_map}, }"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        return info"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def retype(self, volume, new_type):"},{"line_number":342,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_f97569ca","line":339,"updated":"2015-07-23 06:25:54.000000000","message":"self.remote_client.logout() ??","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"f492f74bfcafc955a05bf430bd3e8b9858c16f12","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                    \u0027data\u0027: {\u0027target_wwn\u0027: tgt_port_wwns,"},{"line_number":337,"context_line":"                             \u0027initiator_target_map\u0027: init_targ_map}, }"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        return info"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def retype(self, volume, new_type):"},{"line_number":342,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_609bd566","line":339,"in_reply_to":"3a50d1a3_f97569ca","updated":"2015-07-23 09:00:31.000000000","message":"Done","commit_id":"3ef1a8a12d8badf70274a7e320ef4243e25791f4"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"4474faae478c4ddc8548cc9055af207e66e6cede","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @staticmethod"},{"line_number":35,"context_line":"    def factory(driver):"},{"line_number":36,"context_line":"        \"\"\"Use replication methods for the requested mode.\"\"\""},{"line_number":37,"context_line":"        stretch \u003d driver.configuration.storwize_svc_stretched_cluster_partner"},{"line_number":38,"context_line":"        if stretch:"},{"line_number":39,"context_line":"            return HuaweiBaseReplication(driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b1028db2","line":36,"updated":"2015-07-23 09:52:57.000000000","message":"why  use  methods?    should be method?","commit_id":"7ffe19789a8dbd56197d65fa1589fd2a87cf3399"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0588f2f89d2a19aecb101ab4d49bfbccce8b62ed","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        host_name \u003d connector[\u0027host\u0027]"},{"line_number":182,"context_line":"        if host_name and (len(host_name) \u003e constants.MAX_HOSTNAME_LENTH):"},{"line_number":183,"context_line":"            host_name_before_hash \u003d host_name"},{"line_number":184,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        # Create hostgroup if not exist."},{"line_number":187,"context_line":"        hostid \u003d self.remote_client.add_host_with_check(host_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_da2fbba5","line":184,"updated":"2015-07-31 13:37:49.000000000","message":"Replace (str, unicode) with six.string_types.","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"0588f2f89d2a19aecb101ab4d49bfbccce8b62ed","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        # Create hostgroup if not exist."},{"line_number":187,"context_line":"        hostid \u003d self.remote_client.add_host_with_check(host_name,"},{"line_number":188,"context_line":"                                                        host_name_before_hash)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # Add host into hostgroup."}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_55129c59","line":187,"updated":"2015-07-31 13:37:49.000000000","message":"suggest using \"host_id\".","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8cf2def716592daa9c76bce282fd0adb1758c792","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            host_name \u003d str(hash(host_name))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        # Create hostgroup if not exist."},{"line_number":187,"context_line":"        hostid \u003d self.remote_client.add_host_with_check(host_name,"},{"line_number":188,"context_line":"                                                        host_name_before_hash)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # Add host into hostgroup."}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_a3588758","line":187,"in_reply_to":"3a50d1a3_55129c59","updated":"2015-07-31 15:24:36.000000000","message":"Done","commit_id":"2eb9f02f071639d3a4570c8e17b69fbb3b91fab8"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.remote_client.delete_lun(remote_lun_id)"},{"line_number":107,"context_line":"            self.remote_client.logout()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            LOG.error(_LE(\u0027_create_hypermetro error. %s.\u0027), err)"},{"line_number":110,"context_line":"            raise"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.remote_client.logout()"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_395a5651","line":109,"updated":"2015-08-11 07:48:45.000000000","message":"s/_create_hypermetro/_create_hypermetro_pair?","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            self.remote_client.delete_lun(remote_lun_id)"},{"line_number":107,"context_line":"            self.remote_client.logout()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"            LOG.error(_LE(\u0027_create_hypermetro error. %s.\u0027), err)"},{"line_number":110,"context_line":"            raise"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.remote_client.logout()"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_b4b66dda","line":109,"in_reply_to":"1a4dcd0f_395a5651","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            self.remote_client.logout()"},{"line_number":227,"context_line":"        except Exception as err:"},{"line_number":228,"context_line":"            self.remote_client.logout()"},{"line_number":229,"context_line":"            LOG.error(_LE(\"Create hypermetro: prepare hypermetro error. %s.\"),"},{"line_number":230,"context_line":"                      err)"},{"line_number":231,"context_line":"            raise"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_f434f5de","line":229,"updated":"2015-08-11 07:48:45.000000000","message":"Connect volume fc: connect volume error?","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            self.remote_client.logout()"},{"line_number":227,"context_line":"        except Exception as err:"},{"line_number":228,"context_line":"            self.remote_client.logout()"},{"line_number":229,"context_line":"            LOG.error(_LE(\"Create hypermetro: prepare hypermetro error. %s.\"),"},{"line_number":230,"context_line":"                      err)"},{"line_number":231,"context_line":"            raise"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_d47c59ed","line":229,"in_reply_to":"1a4dcd0f_f434f5de","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                      \u0027wwns\u0027: wwns,"},{"line_number":269,"context_line":"                      \u0027lunid\u0027: lun_id},)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            if host_name and (len(host_name) \u003e 31):"},{"line_number":272,"context_line":"                host_name \u003d str(hash(host_name))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            hostid \u003d self.remote_client.find_host(host_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_1447214c","line":271,"updated":"2015-08-11 07:48:45.000000000","message":"using MAX_HOSTNAME_LENGTH instead of 31.","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                      \u0027wwns\u0027: wwns,"},{"line_number":269,"context_line":"                      \u0027lunid\u0027: lun_id},)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            if host_name and (len(host_name) \u003e 31):"},{"line_number":272,"context_line":"                host_name \u003d str(hash(host_name))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            hostid \u003d self.remote_client.find_host(host_name)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_74e8e57c","line":271,"in_reply_to":"1a4dcd0f_1447214c","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                      \u0027lunid\u0027: lun_id},)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            if host_name and (len(host_name) \u003e 31):"},{"line_number":272,"context_line":"                host_name \u003d str(hash(host_name))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            hostid \u003d self.remote_client.find_host(host_name)"},{"line_number":275,"context_line":"            if hostid:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_145e4112","line":272,"updated":"2015-08-11 07:48:45.000000000","message":"s/str/six.text_type","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                      \u0027lunid\u0027: lun_id},)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            if host_name and (len(host_name) \u003e 31):"},{"line_number":272,"context_line":"                host_name \u003d str(hash(host_name))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            hostid \u003d self.remote_client.find_host(host_name)"},{"line_number":275,"context_line":"            if hostid:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_d4f1b96b","line":272,"in_reply_to":"1a4dcd0f_145e4112","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"80fd617d647fd90ed04b99f902d8fd14eb64161f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                 {\u0027domain_id\u0027: domain_id})"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            time.sleep(1)"},{"line_number":99,"context_line":"            hypermetro \u003d self._create_hypermetro_pair(domain_id,"},{"line_number":100,"context_line":"                                                      local_lun_id,"},{"line_number":101,"context_line":"                                                      remote_lun_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_652b9f83","line":98,"updated":"2015-08-17 19:50:18.000000000","message":"why?","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e4568bcd9951910a07112b5cc1ae94bdfe357cc8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                 {\u0027domain_id\u0027: domain_id})"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            time.sleep(1)"},{"line_number":99,"context_line":"            hypermetro \u003d self._create_hypermetro_pair(domain_id,"},{"line_number":100,"context_line":"                                                      local_lun_id,"},{"line_number":101,"context_line":"                                                      remote_lun_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_70b914e9","line":98,"in_reply_to":"fa1b9901_652b9f83","updated":"2015-08-18 01:31:57.000000000","message":"Sleep here is just to wait the newly created volume at line 80 to be ready, and now we have changed it to looping call, thanks!","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e0b14c7cd5d19a2d385e6fc5a5b8c81a340d42d4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_replication_info(self):"},{"line_number":53,"context_line":"        return {}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def reenable_replication(self, volume):"},{"line_number":56,"context_line":"        pass"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"da20952f_791b1a81","line":55,"updated":"2015-09-02 20:20:57.000000000","message":"I don\u0027t understand the purpose of this patch.  If you want to add replication support, you should implement replication V2.\n\nhttps://review.openstack.org/#/c/200269/","commit_id":"02541b3dd1e69c630ba4d11c7d239d2873e82a4a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cddb9d0dca486dcb7f0789cbe47aa87bbad5f948","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_replication_info(self):"},{"line_number":53,"context_line":"        return {}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def reenable_replication(self, volume):"},{"line_number":56,"context_line":"        pass"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"da20952f_742ec1fb","line":55,"in_reply_to":"da20952f_791b1a81","updated":"2015-09-02 20:39:51.000000000","message":"xing-yang, this is not a replication support, and I have amend the code, please check, thanks!","commit_id":"02541b3dd1e69c630ba4d11c7d239d2873e82a4a"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        raise exception.CinderException(msg)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"the input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_29a39eb3","line":116,"updated":"2015-07-15 11:53:13.000000000","message":"First, Log in -\u003e Login, keep consistent. Second, the comment of the function is same with \"def login(self)\".","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        raise exception.CinderException(msg)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"the input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_928d06d5","line":116,"in_reply_to":"9a41bdd9_29a39eb3","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"the input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":120,"context_line":"        url_list \u003d urlstr.split(\";\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_298abe1b","line":117,"updated":"2015-07-15 11:53:13.000000000","message":"the -\u003e The","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"the input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":120,"context_line":"        url_list \u003d urlstr.split(\";\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_72e402ab","line":117,"in_reply_to":"9a41bdd9_298abe1b","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            return deviceid"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        msg \u003d _(\"Login Error: Can\u0027t connect server with ip.\")"},{"line_number":143,"context_line":"        LOG.error(msg)"},{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_29df1e0e","line":142,"updated":"2015-07-15 11:53:13.000000000","message":"Can\u0027t connect to server with ip.","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            return deviceid"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        msg \u003d _(\"Login Error: Can\u0027t connect server with ip.\")"},{"line_number":143,"context_line":"        LOG.error(msg)"},{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_52c21eea","line":142,"in_reply_to":"9a41bdd9_29df1e0e","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"        return domain_id"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def create_hypermeto_pair(self, hcp_param):"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        url \u003d self.url + \"/HyperMetroPair\""},{"line_number":1277,"context_line":"        data \u003d json.dumps(hcp_param)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_49514235","line":1274,"updated":"2015-07-15 11:53:13.000000000","message":"hypermeto -\u003e hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"        return domain_id"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def create_hypermeto_pair(self, hcp_param):"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"        url \u003d self.url + \"/HyperMetroPair\""},{"line_number":1277,"context_line":"        data \u003d json.dumps(hcp_param)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_92a4264b","line":1274,"in_reply_to":"9a41bdd9_49514235","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"        data \u003d json.dumps(hcp_param)"},{"line_number":1278,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"        msg \u003d \u0027create_hyperclusterpair error.\u0027"},{"line_number":1281,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1282,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1283,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_093edad9","line":1280,"updated":"2015-07-15 11:53:13.000000000","message":"create_hyperclusterpair -\u003e create_hypermetro_pair","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"        data \u003d json.dumps(hcp_param)"},{"line_number":1278,"context_line":"        result \u003d self.call(url, data, \"POST\")"},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"        msg \u003d \u0027create_hyperclusterpair error.\u0027"},{"line_number":1281,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1282,"context_line":"        self._assert_data_in_result(result, msg)"},{"line_number":1283,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_32667a2a","line":1280,"in_reply_to":"9a41bdd9_093edad9","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":1288,"context_line":"        url \u003d self.url + \"/HyperMetroPair/\" + metro_id"},{"line_number":1289,"context_line":"        result \u003d self.call(url, None, \"DELETE\")"},{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"        msg \u003d \u0027_delete_hypermeto error.\u0027"},{"line_number":1292,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def sync_hypermetro(self, metro_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7c188275","line":1291,"updated":"2015-07-15 11:53:13.000000000","message":"_delete_hypermeto -\u003e delete_hypermetro","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":1288,"context_line":"        url \u003d self.url + \"/HyperMetroPair/\" + metro_id"},{"line_number":1289,"context_line":"        result \u003d self.call(url, None, \"DELETE\")"},{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"        msg \u003d \u0027_delete_hypermeto error.\u0027"},{"line_number":1292,"context_line":"        self._assert_rest_result(result, msg)"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def sync_hypermetro(self, metro_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7280828b","line":1291,"in_reply_to":"9a41bdd9_7c188275","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":1327,"context_line":""},{"line_number":1328,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or \\"},{"line_number":1331,"context_line":"           error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":1332,"context_line":"            LOG.error(_LE(\"cant\u0027t open the recent url, relogin.\"))"},{"line_number":1333,"context_line":"            self.login()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9c3c66c9","line":1330,"updated":"2015-07-15 11:53:13.000000000","message":"use () instead of \\","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":1327,"context_line":""},{"line_number":1328,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or \\"},{"line_number":1331,"context_line":"           error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":1332,"context_line":"            LOG.error(_LE(\"cant\u0027t open the recent url, relogin.\"))"},{"line_number":1333,"context_line":"            self.login()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1246d67a","line":1330,"in_reply_to":"9a41bdd9_9c3c66c9","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"61fc0bb0dd1c9d9a053a0ab29636f619eb4033a1","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"            result \u003d self.call(url, None, \"GET\")"},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1337,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or \\"},{"line_number":1338,"context_line":"           error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":1339,"context_line":"            msg \u003d _(\u0027\\nCheck hypermetro exist error.\u0027)"},{"line_number":1340,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1c7616a4","line":1337,"updated":"2015-07-15 11:53:13.000000000","message":"use () instead of \\","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"ed23a5f10d43d5594c966e96c4e65c9803eb5964","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"            result \u003d self.call(url, None, \"GET\")"},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1337,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or \\"},{"line_number":1338,"context_line":"           error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":1339,"context_line":"            msg \u003d _(\u0027\\nCheck hypermetro exist error.\u0027)"},{"line_number":1340,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b2612a07","line":1337,"in_reply_to":"9a41bdd9_1c7616a4","updated":"2015-07-16 05:17:01.000000000","message":"Done","commit_id":"a907c3b6464f1927d1133437037bbdd7f11ab1cc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"428dc6c9f6d9261843ca75175c50f7d9614bebb4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def logout(self):"},{"line_number":147,"context_line":"        \"\"\"logout the session.\"\"\""},{"line_number":148,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":149,"context_line":"        if self.url:"},{"line_number":150,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_dea6fd52","line":147,"updated":"2015-07-17 04:13:40.000000000","message":"s/logout/Logout of","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def logout(self):"},{"line_number":147,"context_line":"        \"\"\"logout the session.\"\"\""},{"line_number":148,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":149,"context_line":"        if self.url:"},{"line_number":150,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_63ce0885","line":147,"in_reply_to":"9a41bdd9_dea6fd52","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"428dc6c9f6d9261843ca75175c50f7d9614bebb4","unresolved":false,"context_lines":[{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or"},{"line_number":1334,"context_line":"                error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":1335,"context_line":"            LOG.error(_LE(\"Cant\u0027t open the recent url, login again.\"))"},{"line_number":1336,"context_line":"            self.login()"},{"line_number":1337,"context_line":"            result \u003d self.call(url, None, \"GET\")"},{"line_number":1338,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_5e3f4dd6","line":1335,"updated":"2015-07-17 04:13:40.000000000","message":"s/Cant\u0027t/Can\u0027t","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or"},{"line_number":1334,"context_line":"                error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":1335,"context_line":"            LOG.error(_LE(\"Cant\u0027t open the recent url, login again.\"))"},{"line_number":1336,"context_line":"            self.login()"},{"line_number":1337,"context_line":"            result \u003d self.call(url, None, \"GET\")"},{"line_number":1338,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_43c3c457","line":1335,"in_reply_to":"9a41bdd9_5e3f4dd6","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"428dc6c9f6d9261843ca75175c50f7d9614bebb4","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1340,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or"},{"line_number":1341,"context_line":"                error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":1342,"context_line":"            msg \u003d _(\u0027Check hypermetro exist error.\u0027)"},{"line_number":1343,"context_line":"            LOG.error(msg)"},{"line_number":1344,"context_line":"            raise exception.CinderException(msg)"},{"line_number":1345,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_fe0bc129","line":1342,"updated":"2015-07-17 04:13:40.000000000","message":"msg \u003d \u0027check_hypermetro_exist error\u0027. Keep consistent with other msg.","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"87a2c85c6691cf92e21ad8a34776e11aba14517c","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":1340,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER or"},{"line_number":1341,"context_line":"                error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":1342,"context_line":"            msg \u003d _(\u0027Check hypermetro exist error.\u0027)"},{"line_number":1343,"context_line":"            LOG.error(msg)"},{"line_number":1344,"context_line":"            raise exception.CinderException(msg)"},{"line_number":1345,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_c3ad949c","line":1342,"in_reply_to":"9a41bdd9_fe0bc129","updated":"2015-07-18 01:45:06.000000000","message":"Done","commit_id":"e1b6737e2a943055185c1fe63f0ff55425aec1c7"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"610f30497a8521e3c19a1f4055013189a879eeca","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":149,"context_line":"        if self.url:"},{"line_number":150,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"},{"line_number":151,"context_line":"            self._assert_rest_result(result, \u0027Logout of session error.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _assert_rest_result(self, result, err_str):"},{"line_number":154,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_f6ddbde0","line":151,"updated":"2015-07-22 02:47:55.000000000","message":"\u0027Logout of session error.\u0027    syntax error","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"dadd2ab8bf38f84faac961869d4d2b6efa1a1b50","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":149,"context_line":"        if self.url:"},{"line_number":150,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"},{"line_number":151,"context_line":"            self._assert_rest_result(result, \u0027Logout of session error.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _assert_rest_result(self, result, err_str):"},{"line_number":154,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_49a2d64c","line":151,"in_reply_to":"3a50d1a3_f6ddbde0","updated":"2015-07-22 03:29:18.000000000","message":"Done","commit_id":"b50376ed79c98c7a4f2a9a1c3f4ff33833c60a09"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Login 18000 array with the specific URL.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"The input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":120,"context_line":"        url_list \u003d urlstr.split(\";\")"},{"line_number":121,"context_line":"        for item_url in url_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_7833d614","line":118,"updated":"2015-07-22 06:25:11.000000000","message":"Why error?","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    def login_with_ip(self, login_info):"},{"line_number":116,"context_line":"        \"\"\"Login 18000 array with the specific URL.\"\"\""},{"line_number":117,"context_line":"        msg \u003d (_(\"The input info is: %s.\") % login_info)"},{"line_number":118,"context_line":"        LOG.error(msg)"},{"line_number":119,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":120,"context_line":"        url_list \u003d urlstr.split(\";\")"},{"line_number":121,"context_line":"        for item_url in url_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_645570f8","line":118,"in_reply_to":"3a50d1a3_7833d614","updated":"2015-07-22 07:29:07.000000000","message":"Sorry, we should remove this.","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"d2c89ecb9cd96ce029cc8b5485a427f115f290e4","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            return deviceid"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        msg \u003d _(\"Login error: Can\u0027t connect to server with ip.\")"},{"line_number":143,"context_line":"        LOG.error(msg)"},{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_3810ee58","line":142,"updated":"2015-07-22 06:25:11.000000000","message":"This message is incomplete without mentioning \"ip\"","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"c54a4d19382f41dcae90c7223a81bc1e19028a23","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            return deviceid"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        msg \u003d _(\"Login error: Can\u0027t connect to server with ip.\")"},{"line_number":143,"context_line":"        LOG.error(msg)"},{"line_number":144,"context_line":"        raise exception.CinderException(msg)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_c496c43e","line":142,"in_reply_to":"3a50d1a3_3810ee58","updated":"2015-07-22 07:29:07.000000000","message":"Done","commit_id":"7697a26f36a39112803c5434a2895a05873198e2"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"        self._assert_rest_result(result, _(\u0027Remove iscsi from host error.\u0027))"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"    def get_hyper_domain_id(self, domain_name):"},{"line_number":1499,"context_line":""},{"line_number":1500,"context_line":"        url \u003d self.url + \"/HyperMetroDomain?range\u003d[0-100]\""},{"line_number":1501,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1502,"context_line":"        domain_id \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_d4d3f95d","line":1499,"updated":"2015-08-11 07:48:45.000000000","message":"extra blank line","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"        self._assert_rest_result(result, _(\u0027Remove iscsi from host error.\u0027))"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"    def get_hyper_domain_id(self, domain_name):"},{"line_number":1499,"context_line":""},{"line_number":1500,"context_line":"        url \u003d self.url + \"/HyperMetroDomain?range\u003d[0-100]\""},{"line_number":1501,"context_line":"        result \u003d self.call(url, None, \"GET\")"},{"line_number":1502,"context_line":"        domain_id \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_743b05ec","line":1499,"in_reply_to":"1a4dcd0f_d4d3f95d","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e2d7583036b2cd9e85901a9867a11adb0a2bf4b9","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"        return domain_id"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    def create_hypermetro(self, hcp_param):"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"        url \u003d self.url + \"/HyperMetroPair\""},{"line_number":1517,"context_line":"        data \u003d json.dumps(hcp_param)"},{"line_number":1518,"context_line":"        result \u003d self.call(url, data, \"POST\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_94cd71b9","line":1515,"updated":"2015-08-11 07:48:45.000000000","message":"extra blank line","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e109ab00b5b32f07566c84c50329efbdc4894071","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"        return domain_id"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"    def create_hypermetro(self, hcp_param):"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"        url \u003d self.url + \"/HyperMetroPair\""},{"line_number":1517,"context_line":"        data \u003d json.dumps(hcp_param)"},{"line_number":1518,"context_line":"        result \u003d self.call(url, data, \"POST\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_943ed1d8","line":1515,"in_reply_to":"1a4dcd0f_94cd71b9","updated":"2015-08-11 08:01:03.000000000","message":"Done","commit_id":"719c8a1b0db5711f40b7be171d5fb438c94e32c7"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"80fd617d647fd90ed04b99f902d8fd14eb64161f","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                continue"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\u0027data\u0027 not in result):"},{"line_number":133,"context_line":"                msg \u003d (_(\"Login error, reason is: %s.\") % result)"},{"line_number":134,"context_line":"                LOG.error(msg)"},{"line_number":135,"context_line":"                raise exception.CinderException(msg)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_32172f53","line":133,"updated":"2015-08-17 19:50:18.000000000","message":"_LE","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e4568bcd9951910a07112b5cc1ae94bdfe357cc8","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                continue"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\u0027data\u0027 not in result):"},{"line_number":133,"context_line":"                msg \u003d (_(\"Login error, reason is: %s.\") % result)"},{"line_number":134,"context_line":"                LOG.error(msg)"},{"line_number":135,"context_line":"                raise exception.CinderException(msg)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_50fe506c","line":133,"in_reply_to":"fa1b9901_32172f53","updated":"2015-08-18 01:31:57.000000000","message":"The log marker functions (_LI(), _LW(), _LE(), and _LC()) must only be used when the message is only sent directly to the log. I did it this way according to the following guide, please tell me if I\u0027m wrong, thanks! http://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"80fd617d647fd90ed04b99f902d8fd14eb64161f","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"            return device_id"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        msg \u003d _(\"Login error: Can not connect to server.\")"},{"line_number":144,"context_line":"        LOG.error(msg)"},{"line_number":145,"context_line":"        raise exception.CinderException(msg)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_5218a384","line":143,"updated":"2015-08-17 19:50:18.000000000","message":"_LE","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"e4568bcd9951910a07112b5cc1ae94bdfe357cc8","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"            return device_id"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        msg \u003d _(\"Login error: Can not connect to server.\")"},{"line_number":144,"context_line":"        LOG.error(msg)"},{"line_number":145,"context_line":"        raise exception.CinderException(msg)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_70035474","line":143,"in_reply_to":"fa1b9901_5218a384","updated":"2015-08-18 01:31:57.000000000","message":"Ditto","commit_id":"b9f43b2be8d4bee84908eb7d4e151240b389856a"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"9e6232841595fc677c2ee8ab579099ba8366a409","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _get_id_from_result(self, result, name, key):"},{"line_number":228,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":229,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":230,"context_line":"                if name \u003d\u003d item[key]:"},{"line_number":231,"context_line":"                    return item[\u0027ID\u0027]"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_42ec3b8f","line":229,"updated":"2015-08-24 03:03:01.000000000","message":"if key in item and name \u003d\u003d item[key], is better.","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"4ddd6772a77038a9a0a8eb8e9d86b8e43c7b67f9","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _get_id_from_result(self, result, name, key):"},{"line_number":228,"context_line":"        if \u0027data\u0027 in result:"},{"line_number":229,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":230,"context_line":"                if name \u003d\u003d item[key]:"},{"line_number":231,"context_line":"                    return item[\u0027ID\u0027]"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa1b9901_04f2d09a","line":229,"in_reply_to":"fa1b9901_42ec3b8f","updated":"2015-08-24 07:23:49.000000000","message":"Done","commit_id":"f47b4d8aac0f73d73671faafb65bffd26dcee45a"}]}
