)]}'
{"cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"85f8e2b604432a560f1dd6dc63cfe6dfc2702cb3","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"        }"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        self.driver._update_stats()"},{"line_number":1201,"context_line":"        self.assertDictMatch(expected_result, self.driver.meta[\u0027stat\u0027])"},{"line_number":1202,"context_line":""},{"line_number":1203,"context_line":"    def test_update_stats_when_driver_initialize_failed(self):"},{"line_number":1204,"context_line":"        \"\"\"update stats raises exception if driver initialized failed.\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5201f7_48a4d556","line":1201,"range":{"start_line":1201,"start_character":13,"end_line":1201,"end_character":28},"updated":"2016-12-30 01:41:28.000000000","message":"we need to use assertDictEqual instead of assertDictMatch,because community changes it 8 days ago.\nhttps://github.com/openstack/cinder/blob/master/cinder/test.py","commit_id":"caec801fbc2e27980ba26940aa72ace35474a777"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"a30079d04fd1547b759301a562e310371b8417d7","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"        }"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"        self.driver._update_stats()"},{"line_number":1201,"context_line":"        self.assertDictMatch(expected_result, self.driver.meta[\u0027stat\u0027])"},{"line_number":1202,"context_line":""},{"line_number":1203,"context_line":"    def test_update_stats_when_driver_initialize_failed(self):"},{"line_number":1204,"context_line":"        \"\"\"update stats raises exception if driver initialized failed.\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5201f7_0749c15f","line":1201,"range":{"start_line":1201,"start_character":13,"end_line":1201,"end_character":28},"in_reply_to":"ba5201f7_48a4d556","updated":"2017-01-02 10:29:03.000000000","message":"Done","commit_id":"caec801fbc2e27980ba26940aa72ace35474a777"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"85f8e2b604432a560f1dd6dc63cfe6dfc2702cb3","unresolved":false,"context_lines":[{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        expected_lss_pair \u003d {\u0027source\u0027: (TEST_ECKD_POOL_ID, TEST_LCU_ID),"},{"line_number":1465,"context_line":"                             \u0027target\u0027: (TEST_ECKD_POOL_ID, TEST_LCU_ID)}"},{"line_number":1466,"context_line":"        self.assertDictMatch(expected_lss_pair, lss_pair)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"    @mock.patch.object(eventlet, \u0027sleep\u0027)"},{"line_number":1469,"context_line":"    def test_create_fb_replicated_volume(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5201f7_e894a9e9","line":1466,"range":{"start_line":1466,"start_character":29,"end_line":1466,"end_character":46},"updated":"2016-12-30 01:41:28.000000000","message":"same","commit_id":"caec801fbc2e27980ba26940aa72ace35474a777"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"a30079d04fd1547b759301a562e310371b8417d7","unresolved":false,"context_lines":[{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"        expected_lss_pair \u003d {\u0027source\u0027: (TEST_ECKD_POOL_ID, TEST_LCU_ID),"},{"line_number":1465,"context_line":"                             \u0027target\u0027: (TEST_ECKD_POOL_ID, TEST_LCU_ID)}"},{"line_number":1466,"context_line":"        self.assertDictMatch(expected_lss_pair, lss_pair)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"    @mock.patch.object(eventlet, \u0027sleep\u0027)"},{"line_number":1469,"context_line":"    def test_create_fb_replicated_volume(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5201f7_47790993","line":1466,"range":{"start_line":1466,"start_character":29,"end_line":1466,"end_character":46},"in_reply_to":"ba5201f7_e894a9e9","updated":"2017-01-02 10:29:03.000000000","message":"Done","commit_id":"caec801fbc2e27980ba26940aa72ace35474a777"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"        self.configuration.san_clustername \u003d TEST_POOLS_STR"},{"line_number":1227,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1228,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1229,"context_line":"        self.assertEqual(pool_id, TEST_POOL_ID_1)"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1232,"context_line":"    def test_find_lss_when_lss_in_pprc_path(self, mock_get_all_lss):"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_0a5db346","line":1229,"updated":"2017-01-17 21:31:57.000000000","message":"Should be expected, actual.  This is reversed.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"        self.configuration.san_clustername \u003d TEST_POOLS_STR"},{"line_number":1227,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1228,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1229,"context_line":"        self.assertEqual(pool_id, TEST_POOL_ID_1)"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1232,"context_line":"    def test_find_lss_when_lss_in_pprc_path(self, mock_get_all_lss):"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_596ce907","line":1229,"in_reply_to":"7a3c09a3_0a5db346","updated":"2017-01-18 16:58:38.000000000","message":"Fixed in all relevant test files","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        }]"},{"line_number":1241,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1242,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1243,"context_line":"        self.assertNotEqual(lss_id, TEST_LSS_ID_1)"},{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1246,"context_line":"    def test_find_lss_when_existing_lss_available(self,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_8a37e3fd","line":1243,"updated":"2017-01-17 21:31:57.000000000","message":"Same.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        }]"},{"line_number":1241,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1242,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1243,"context_line":"        self.assertNotEqual(lss_id, TEST_LSS_ID_1)"},{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1246,"context_line":"    def test_find_lss_when_existing_lss_available(self,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9928119c","line":1243,"in_reply_to":"7a3c09a3_8a37e3fd","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"        }]"},{"line_number":1256,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1257,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1258,"context_line":"        self.assertEqual(lss_id, TEST_LSS_ID_2)"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1261,"context_line":"    def test_find_lss_should_choose_emptiest_one(self, mock_get_all_lss):"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_ea28679c","line":1258,"updated":"2017-01-17 21:31:57.000000000","message":"same","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        ]"},{"line_number":1286,"context_line":"        cmn_helper \u003d FakeDS8KCommonHelper(self.configuration, None)"},{"line_number":1287,"context_line":"        pool_id, lss_id \u003d cmn_helper.find_available_lss(None, False, None)"},{"line_number":1288,"context_line":"        self.assertEqual(lss_id, TEST_LSS_ID_2)"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_all_lss\u0027)"},{"line_number":1291,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027_find_from_unexisting_lss\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4a2a5b91","line":1288,"updated":"2017-01-17 21:31:57.000000000","message":"same","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"            restclient.LssFullException(\u0027LSS is full.\u0027), TEST_VOLUME_ID]"},{"line_number":1325,"context_line":"        vol \u003d self.driver.create_volume(volume)"},{"line_number":1326,"context_line":"        self.assertEqual(ast.literal_eval("},{"line_number":1327,"context_line":"            vol[\u0027provider_location\u0027])[\u0027vol_hex_id\u0027], TEST_VOLUME_ID)"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    def test_create_volume_of_FB512(self):"},{"line_number":1330,"context_line":"        \"\"\"create volume which type is FB 512.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6502e80b","line":1327,"updated":"2017-01-17 21:31:57.000000000","message":"Same.\n\nPlease check all the assertEqual.   Most of them seem to be reversed.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":2102,"context_line":"        }"},{"line_number":2103,"context_line":"        moved, model_update \u003d self.driver.migrate_volume("},{"line_number":2104,"context_line":"            self.ctxt, volume, backend)"},{"line_number":2105,"context_line":"        self.assertEqual(moved, True)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_flashcopy\u0027)"},{"line_number":2108,"context_line":"    @mock.patch.object(eventlet, \u0027sleep\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_852c349a","line":2105,"updated":"2017-01-17 21:31:57.000000000","message":"assertTrue","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2102,"context_line":"        }"},{"line_number":2103,"context_line":"        moved, model_update \u003d self.driver.migrate_volume("},{"line_number":2104,"context_line":"            self.ctxt, volume, backend)"},{"line_number":2105,"context_line":"        self.assertEqual(moved, True)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027get_flashcopy\u0027)"},{"line_number":2108,"context_line":"    @mock.patch.object(eventlet, \u0027sleep\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_f9003504","line":2105,"in_reply_to":"7a3c09a3_852c349a","updated":"2017-01-18 16:58:38.000000000","message":"Fixed assertTrue, assertFalse and assertNone","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"            get_pools.return_value \u003d FAKE_GET_POOL_RESPONSE_2[\u0027data\u0027][\u0027pools\u0027]"},{"line_number":2134,"context_line":"            moved, model_update \u003d self.driver.migrate_volume("},{"line_number":2135,"context_line":"                self.ctxt, volume, backend)"},{"line_number":2136,"context_line":"            self.assertEqual(moved, True)"},{"line_number":2137,"context_line":""},{"line_number":2138,"context_line":"    @mock.patch(\u0027oslo_concurrency.lockutils.external_lock\u0027,"},{"line_number":2139,"context_line":"                new\u003dmock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_251d4066","line":2136,"updated":"2017-01-17 21:31:57.000000000","message":"Use assertTrue","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":2288,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027_get_host_ports\u0027)"},{"line_number":2289,"context_line":"    def test_terminate_connection_but_can_not_find_host(self,"},{"line_number":2290,"context_line":"                                                        mock_get_host_ports):"},{"line_number":2291,"context_line":"        \"\"\"deattach volume but can not find host.\"\"\""},{"line_number":2292,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2293,"context_line":"                                    self.exception, self)"},{"line_number":2294,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9ff2c704","line":2291,"updated":"2017-01-17 22:18:45.000000000","message":"detach","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2288,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027_get_host_ports\u0027)"},{"line_number":2289,"context_line":"    def test_terminate_connection_but_can_not_find_host(self,"},{"line_number":2290,"context_line":"                                                        mock_get_host_ports):"},{"line_number":2291,"context_line":"        \"\"\"deattach volume but can not find host.\"\"\""},{"line_number":2292,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2293,"context_line":"                                    self.exception, self)"},{"line_number":2294,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_eb3858d5","line":2291,"in_reply_to":"7a3c09a3_9ff2c704","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef9ee68fa11678b8424ce6eb432e7d9c32a2e22c","unresolved":false,"context_lines":[{"line_number":2308,"context_line":"        ]"},{"line_number":2309,"context_line":"        mock_get_host_ports.side_effect \u003d [host_ports]"},{"line_number":2310,"context_line":"        unmap_data \u003d self.driver.terminate_connection(volume, TEST_CONNECTOR)"},{"line_number":2311,"context_line":"        self.assertEqual(unmap_data, None)"},{"line_number":2312,"context_line":""},{"line_number":2313,"context_line":"    @mock.patch(\u0027oslo_concurrency.lockutils.external_lock\u0027,"},{"line_number":2314,"context_line":"                new\u003dmock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_254b805a","line":2311,"updated":"2017-01-17 21:31:57.000000000","message":"Use assertIsNone","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":2316,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027_get_mappings\u0027)"},{"line_number":2317,"context_line":"    def test_terminate_connection_and_remove_host(self, mock_get_mappings,"},{"line_number":2318,"context_line":"                                                  mock_get_host_ports):"},{"line_number":2319,"context_line":"        \"\"\"deattach volume and remove host in DS8K.\"\"\""},{"line_number":2320,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2321,"context_line":"                                    self.exception, self)"},{"line_number":2322,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_bfcce3bb","line":2319,"updated":"2017-01-17 22:18:45.000000000","message":"detach","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2316,"context_line":"    @mock.patch.object(helper.DS8KCommonHelper, \u0027_get_mappings\u0027)"},{"line_number":2317,"context_line":"    def test_terminate_connection_and_remove_host(self, mock_get_mappings,"},{"line_number":2318,"context_line":"                                                  mock_get_host_ports):"},{"line_number":2319,"context_line":"        \"\"\"deattach volume and remove host in DS8K.\"\"\""},{"line_number":2320,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2321,"context_line":"                                    self.exception, self)"},{"line_number":2322,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_ab22d0a0","line":2319,"in_reply_to":"7a3c09a3_bfcce3bb","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    @mock.patch(\u0027oslo_concurrency.lockutils.external_lock\u0027,"},{"line_number":2356,"context_line":"                new\u003dmock.MagicMock())"},{"line_number":2357,"context_line":"    def test_terminate_connection_with_fake_connector(self):"},{"line_number":2358,"context_line":"        \"\"\"deattach volume from host with fake connector.\"\"\""},{"line_number":2359,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2360,"context_line":"                                    self.exception, self)"},{"line_number":2361,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_dfc7ef93","line":2358,"updated":"2017-01-17 22:18:45.000000000","message":"detach","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    @mock.patch(\u0027oslo_concurrency.lockutils.external_lock\u0027,"},{"line_number":2356,"context_line":"                new\u003dmock.MagicMock())"},{"line_number":2357,"context_line":"    def test_terminate_connection_with_fake_connector(self):"},{"line_number":2358,"context_line":"        \"\"\"deattach volume from host with fake connector.\"\"\""},{"line_number":2359,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":2360,"context_line":"                                    self.exception, self)"},{"line_number":2361,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6b2c6899","line":2358,"in_reply_to":"7a3c09a3_dfc7ef93","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"}],"cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class XIVProxyTest(unittest.TestCase):"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    \"\"\"Tests the Nova Proxy between the opensource volume driver and xsf\"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def setUp(self):"},{"line_number":133,"context_line":"        \"\"\"import at setup to ensure module patchers are in place\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_1f0337b9","line":130,"updated":"2017-01-17 22:18:45.000000000","message":"Nova -\u003e Cinder","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class XIVProxyTest(unittest.TestCase):"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    \"\"\"Tests the Nova Proxy between the opensource volume driver and xsf\"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def setUp(self):"},{"line_number":133,"context_line":"        \"\"\"import at setup to ensure module patchers are in place\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_cb99dcc5","line":130,"in_reply_to":"7a3c09a3_1f0337b9","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \"50017380FE020161\", \"50017380FE020162\", \"50017380FE020192\"]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"FC_PORT_LIST_OUTPUT \u003d \\"},{"line_number":106,"context_line":"    ["},{"line_number":107,"context_line":"        dict(port_state\u003d\u0027Online\u0027, role\u003d\u0027Target\u0027, wwpn\u003d\u002750017380FE020160\u0027),"},{"line_number":108,"context_line":"        dict(port_state\u003d\u0027Link Problem\u0027,"},{"line_number":109,"context_line":"             role\u003d\u0027Target\u0027, wwpn\u003d\u002750017380FE020161\u0027),"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_dd53bbe0","line":106,"range":{"start_line":106,"start_character":4,"end_line":106,"end_character":5},"updated":"2017-01-21 04:23:43.000000000","message":"If you move [ up to line 105 like the following, you won\u0027t need \\.\n\nFC_PORT_LIST_OUTPUT \u003d [\n    xxxxxx\n]\n   \nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists\n\nAlso it is better to use {} instead of dict().","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \"50017380FE020161\", \"50017380FE020162\", \"50017380FE020192\"]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"FC_PORT_LIST_OUTPUT \u003d \\"},{"line_number":106,"context_line":"    ["},{"line_number":107,"context_line":"        dict(port_state\u003d\u0027Online\u0027, role\u003d\u0027Target\u0027, wwpn\u003d\u002750017380FE020160\u0027),"},{"line_number":108,"context_line":"        dict(port_state\u003d\u0027Link Problem\u0027,"},{"line_number":109,"context_line":"             role\u003d\u0027Target\u0027, wwpn\u003d\u002750017380FE020161\u0027),"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_4cdab74d","line":106,"range":{"start_line":106,"start_character":4,"end_line":106,"end_character":5},"in_reply_to":"5a3905b3_dd53bbe0","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            driver)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        p.ibm_storage_cli \u003d mock.MagicMock()"},{"line_number":288,"context_line":"        p.ibm_storage_cli.cmd.vol_create.side_effect \u003d \\"},{"line_number":289,"context_line":"            errors.PoolOutOfSpaceError("},{"line_number":290,"context_line":"                \u0027bla\u0027, \u0027bla\u0027, ElementTree.Element(\u0027bla\u0027))"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_5d56ebce","line":288,"range":{"start_line":288,"start_character":55,"end_line":288,"end_character":56},"updated":"2017-01-21 04:23:43.000000000","message":"Better use () than \\","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            driver)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        p.ibm_storage_cli \u003d mock.MagicMock()"},{"line_number":288,"context_line":"        p.ibm_storage_cli.cmd.vol_create.side_effect \u003d \\"},{"line_number":289,"context_line":"            errors.PoolOutOfSpaceError("},{"line_number":290,"context_line":"                \u0027bla\u0027, \u0027bla\u0027, ElementTree.Element(\u0027bla\u0027))"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_4cc397ed","line":288,"range":{"start_line":288,"start_character":55,"end_line":288,"end_character":56},"in_reply_to":"5a3905b3_5d56ebce","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"        ex \u003d getattr(p, \"_get_exception\")()"},{"line_number":1545,"context_line":"        with self.assertRaises(ex):"},{"line_number":1546,"context_line":"            model_update, add_model_update, remove_model_update \u003d \\"},{"line_number":1547,"context_line":"                p.update_consistencygroup({}, TEST_CONS_GROUP,"},{"line_number":1548,"context_line":"                                          [{\u0027name\u0027: \u0027WTF32\u0027}],"},{"line_number":1549,"context_line":"                                          [{\u0027name\u0027: \u0027WTF64\u0027}])"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_fd6797b4","line":1546,"range":{"start_line":1546,"start_character":66,"end_line":1546,"end_character":67},"updated":"2017-01-21 04:23:43.000000000","message":"Better to use () instead of \\\n\nThere are a few more places in this file that uses \\ too.","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"        ex \u003d getattr(p, \"_get_exception\")()"},{"line_number":1545,"context_line":"        with self.assertRaises(ex):"},{"line_number":1546,"context_line":"            model_update, add_model_update, remove_model_update \u003d \\"},{"line_number":1547,"context_line":"                p.update_consistencygroup({}, TEST_CONS_GROUP,"},{"line_number":1548,"context_line":"                                          [{\u0027name\u0027: \u0027WTF32\u0027}],"},{"line_number":1549,"context_line":"                                          [{\u0027name\u0027: \u0027WTF64\u0027}])"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_d740f436","line":1546,"range":{"start_line":1546,"start_character":66,"end_line":1546,"end_character":67},"in_reply_to":"5a3905b3_fd6797b4","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"cinder/volume/drivers/ibm/ibm_storage/__init__.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ca81c255021f3c76c8e6696774bb0e9322596c6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG_LEVEL_WARN \u003d \u0027warn\u0027"},{"line_number":25,"context_line":"LOG_LEVEL_DEBUG \u003d \u0027debug\u0027"},{"line_number":26,"context_line":"LOG_LEVEL_INFO \u003d \u0027info\u0027"},{"line_number":27,"context_line":"LOG_LEVEL_ERROR \u003d \u0027info\u0027  # ensure logged when verbose is off"},{"line_number":28,"context_line":"XIV_CONNECTION_TYPE_ISCSI \u003d \u0027iscsi\u0027"},{"line_number":29,"context_line":"XIV_CONNECTION_TYPE_FC \u003d \u0027fibre_channel\u0027"},{"line_number":30,"context_line":"XIV_CONNECTION_TYPE_FC_ECKD \u003d \u0027fibre_channel_eckd\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_d9e488e1","line":27,"updated":"2016-12-06 02:00:14.000000000","message":"this says ERROR and yet the value is info ?\n\nThis stuff should get removed anyway and use the standard oslo logging mechanism.","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"e1ed8bb1d2867f19d8d6b7831ef0666f183dd50d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG_LEVEL_WARN \u003d \u0027warn\u0027"},{"line_number":25,"context_line":"LOG_LEVEL_DEBUG \u003d \u0027debug\u0027"},{"line_number":26,"context_line":"LOG_LEVEL_INFO \u003d \u0027info\u0027"},{"line_number":27,"context_line":"LOG_LEVEL_ERROR \u003d \u0027info\u0027  # ensure logged when verbose is off"},{"line_number":28,"context_line":"XIV_CONNECTION_TYPE_ISCSI \u003d \u0027iscsi\u0027"},{"line_number":29,"context_line":"XIV_CONNECTION_TYPE_FC \u003d \u0027fibre_channel\u0027"},{"line_number":30,"context_line":"XIV_CONNECTION_TYPE_FC_ECKD \u003d \u0027fibre_channel_eckd\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_bdf3ea71","line":27,"in_reply_to":"3a71b18c_d9e488e1","updated":"2016-12-07 10:41:54.000000000","message":"Done","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ca81c255021f3c76c8e6696774bb0e9322596c6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    metadata \u003d pkg_resources.FileMetadata(os.path.join("},{"line_number":173,"context_line":"        provider.egg_root, \u0027EGG-INFO\u0027))"},{"line_number":174,"context_line":"    return pkg_resources.Distribution.from_filename("},{"line_number":175,"context_line":"        provider.egg_root, metadata\u003dmetadata)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def get_version(package):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_39f73c8c","line":175,"updated":"2016-12-06 02:00:14.000000000","message":"I\u0027m not sure this is necessary now.   Since the package is going to be Cinder.   Also, I don\u0027t see why we need the VersionInfo class either.   \n\nRemember, this isn\u0027t part of a standalone IBM package now, this code is Cinder.","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"e1ed8bb1d2867f19d8d6b7831ef0666f183dd50d","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    metadata \u003d pkg_resources.FileMetadata(os.path.join("},{"line_number":173,"context_line":"        provider.egg_root, \u0027EGG-INFO\u0027))"},{"line_number":174,"context_line":"    return pkg_resources.Distribution.from_filename("},{"line_number":175,"context_line":"        provider.egg_root, metadata\u003dmetadata)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def get_version(package):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_9d62ae3c","line":175,"in_reply_to":"3a71b18c_39f73c8c","updated":"2016-12-07 10:41:54.000000000","message":"Done","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ca81c255021f3c76c8e6696774bb0e9322596c6","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def get_version(package):"},{"line_number":179,"context_line":"    dist \u003d get_distribution(package)"},{"line_number":180,"context_line":"    return None if dist is None else dist.version"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"# Changed by build"},{"line_number":183,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_b9318c5c","line":180,"updated":"2016-12-06 02:00:14.000000000","message":"remove","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"e1ed8bb1d2867f19d8d6b7831ef0666f183dd50d","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"def get_version(package):"},{"line_number":179,"context_line":"    dist \u003d get_distribution(package)"},{"line_number":180,"context_line":"    return None if dist is None else dist.version"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"# Changed by build"},{"line_number":183,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_7d71520b","line":180,"in_reply_to":"3a71b18c_b9318c5c","updated":"2016-12-07 10:41:54.000000000","message":"Done","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if connection !\u003d XIV_CONNECTION_TYPE_FC and \u0027initiator\u0027 in connector:"},{"line_number":81,"context_line":"        try:"},{"line_number":82,"context_line":"            iqn_suffix \u003d \\"},{"line_number":83,"context_line":"                connector[\u0027initiator\u0027].split(\u0027.\u0027)[-1].replace(\":\", \"_\")"},{"line_number":84,"context_line":"        except Exception:"},{"line_number":85,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_663ea0db","line":82,"range":{"start_line":82,"start_character":25,"end_line":82,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"Please reformat to avoid this. We\u0027ve been enforcing that with other patches.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if connection !\u003d XIV_CONNECTION_TYPE_FC and \u0027initiator\u0027 in connector:"},{"line_number":81,"context_line":"        try:"},{"line_number":82,"context_line":"            iqn_suffix \u003d \\"},{"line_number":83,"context_line":"                connector[\u0027initiator\u0027].split(\u0027.\u0027)[-1].replace(\":\", \"_\")"},{"line_number":84,"context_line":"        except Exception:"},{"line_number":85,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_dd5db616","line":82,"range":{"start_line":82,"start_character":25,"end_line":82,"end_character":26},"in_reply_to":"1a6eadb0_663ea0db","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        try:"},{"line_number":82,"context_line":"            iqn_suffix \u003d \\"},{"line_number":83,"context_line":"                connector[\u0027initiator\u0027].split(\u0027.\u0027)[-1].replace(\":\", \"_\")"},{"line_number":84,"context_line":"        except Exception:"},{"line_number":85,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"},{"line_number":86,"context_line":"                raise Exception(\"Initiator format: {initiator}\".format("},{"line_number":87,"context_line":"                                initiator\u003dconnector.get(\u0027initiator\u0027, \u0027None\u0027)))"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c62db4a9","line":84,"range":{"start_line":84,"start_character":15,"end_line":84,"end_character":24},"updated":"2016-12-14 20:11:29.000000000","message":"Is there something more specific than Exception that can be caught?","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                raise Exception(\"Initiator format: {initiator}\".format("},{"line_number":87,"context_line":"                                initiator\u003dconnector.get(\u0027initiator\u0027, \u0027None\u0027)))"},{"line_number":88,"context_line":"            else:"},{"line_number":89,"context_line":"                raise Exception(\"Initiator is missing from connector object\")"},{"line_number":90,"context_line":"        return \"nova-compute-%s\" % iqn_suffix"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    if connection !\u003d XIV_CONNECTION_TYPE_ISCSI and len("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_061a4c7d","line":89,"range":{"start_line":89,"start_character":32,"end_line":89,"end_character":33},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                raise Exception(\"Initiator format: {initiator}\".format("},{"line_number":87,"context_line":"                                initiator\u003dconnector.get(\u0027initiator\u0027, \u0027None\u0027)))"},{"line_number":88,"context_line":"            else:"},{"line_number":89,"context_line":"                raise Exception(\"Initiator is missing from connector object\")"},{"line_number":90,"context_line":"        return \"nova-compute-%s\" % iqn_suffix"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    if connection !\u003d XIV_CONNECTION_TYPE_ISCSI and len("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_fd9a72c4","line":89,"range":{"start_line":89,"start_character":32,"end_line":89,"end_character":33},"in_reply_to":"1a6eadb0_061a4c7d","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":27,"context_line":"STORAGE_DRIVER_DS8K \u003d \u0027ds8k\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF_KEYS \u003d dict("},{"line_number":31,"context_line":"    driver\u003d\"volume_driver\","},{"line_number":32,"context_line":"    proxy\u003d\"proxy\","},{"line_number":33,"context_line":"    user\u003d\"san_login\","},{"line_number":34,"context_line":"    password\u003d\"san_password\","},{"line_number":35,"context_line":"    storage_pool\u003d\"san_clustername\","},{"line_number":36,"context_line":"    address\u003d\"san_ip\","},{"line_number":37,"context_line":"    driver_version\u003d\"ibm_storage_driver_version\","},{"line_number":38,"context_line":"    volume_api_class\u003d\"volume_api_class\","},{"line_number":39,"context_line":"    volume_backend\u003d\"volume_backend_name\","},{"line_number":40,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":41,"context_line":"    management_ips\u003d\"management_ips\","},{"line_number":42,"context_line":"    chap\u003d\u0027chap\u0027,"},{"line_number":43,"context_line":"    system_id\u003d\u0027system_id\u0027,"},{"line_number":44,"context_line":"    replication_device\u003d\u0027replication_device\u0027"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":"CONF_BACKEND_KEYS \u003d dict("},{"line_number":47,"context_line":"    user\u003d\"san_login\","},{"line_number":48,"context_line":"    password\u003d\"san_password\","},{"line_number":49,"context_line":"    storage_pool\u003d\"san_clustername\","},{"line_number":50,"context_line":"    address\u003d\"san_ip\","},{"line_number":51,"context_line":"    volume_backend\u003d\"volume_backend_name\","},{"line_number":52,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":53,"context_line":"    management_ips\u003d\"management_ips\","},{"line_number":54,"context_line":")"},{"line_number":55,"context_line":"FLAG_KEYS \u003d dict("},{"line_number":56,"context_line":"    user\u003d\"user\","},{"line_number":57,"context_line":"    password\u003d\"password\","},{"line_number":58,"context_line":"    storage_pool\u003d\"vol_pool\","},{"line_number":59,"context_line":"    address\u003d\"address\","},{"line_number":60,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":61,"context_line":"    bypass_connection_check\u003d\"XIV_BYPASS_CONNECTION_CHECK\","},{"line_number":62,"context_line":"    management_ips\u003d\"management_ips\""},{"line_number":63,"context_line":")"},{"line_number":64,"context_line":"METADATA_KEYS \u003d dict("},{"line_number":65,"context_line":"    ibm_storage_version\u003d\u0027openstack_ibm_storage_driver_version\u0027,"},{"line_number":66,"context_line":"    openstack_version\u003d\u0027openstack_version\u0027,"},{"line_number":67,"context_line":"    pool_host_key\u003d\u0027openstack_compute_node_%(hostname)s\u0027,"},{"line_number":68,"context_line":"    pool_volume_os\u003d\u0027openstack_volume_os\u0027,"},{"line_number":69,"context_line":"    pool_volume_hostname\u003d\u0027openstack_volume_hostname\u0027"},{"line_number":70,"context_line":")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_host_or_create_from_iqn(connector, connection\u003dNone):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_f639f642","line":70,"range":{"start_line":30,"start_character":0,"end_line":70,"end_character":1},"updated":"2017-01-19 03:29:33.000000000","message":"Please use dictionary comprehension {} instead of dict().  {} has better performance.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":27,"context_line":"STORAGE_DRIVER_DS8K \u003d \u0027ds8k\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF_KEYS \u003d dict("},{"line_number":31,"context_line":"    driver\u003d\"volume_driver\","},{"line_number":32,"context_line":"    proxy\u003d\"proxy\","},{"line_number":33,"context_line":"    user\u003d\"san_login\","},{"line_number":34,"context_line":"    password\u003d\"san_password\","},{"line_number":35,"context_line":"    storage_pool\u003d\"san_clustername\","},{"line_number":36,"context_line":"    address\u003d\"san_ip\","},{"line_number":37,"context_line":"    driver_version\u003d\"ibm_storage_driver_version\","},{"line_number":38,"context_line":"    volume_api_class\u003d\"volume_api_class\","},{"line_number":39,"context_line":"    volume_backend\u003d\"volume_backend_name\","},{"line_number":40,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":41,"context_line":"    management_ips\u003d\"management_ips\","},{"line_number":42,"context_line":"    chap\u003d\u0027chap\u0027,"},{"line_number":43,"context_line":"    system_id\u003d\u0027system_id\u0027,"},{"line_number":44,"context_line":"    replication_device\u003d\u0027replication_device\u0027"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":"CONF_BACKEND_KEYS \u003d dict("},{"line_number":47,"context_line":"    user\u003d\"san_login\","},{"line_number":48,"context_line":"    password\u003d\"san_password\","},{"line_number":49,"context_line":"    storage_pool\u003d\"san_clustername\","},{"line_number":50,"context_line":"    address\u003d\"san_ip\","},{"line_number":51,"context_line":"    volume_backend\u003d\"volume_backend_name\","},{"line_number":52,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":53,"context_line":"    management_ips\u003d\"management_ips\","},{"line_number":54,"context_line":")"},{"line_number":55,"context_line":"FLAG_KEYS \u003d dict("},{"line_number":56,"context_line":"    user\u003d\"user\","},{"line_number":57,"context_line":"    password\u003d\"password\","},{"line_number":58,"context_line":"    storage_pool\u003d\"vol_pool\","},{"line_number":59,"context_line":"    address\u003d\"address\","},{"line_number":60,"context_line":"    connection_type\u003d\"connection_type\","},{"line_number":61,"context_line":"    bypass_connection_check\u003d\"XIV_BYPASS_CONNECTION_CHECK\","},{"line_number":62,"context_line":"    management_ips\u003d\"management_ips\""},{"line_number":63,"context_line":")"},{"line_number":64,"context_line":"METADATA_KEYS \u003d dict("},{"line_number":65,"context_line":"    ibm_storage_version\u003d\u0027openstack_ibm_storage_driver_version\u0027,"},{"line_number":66,"context_line":"    openstack_version\u003d\u0027openstack_version\u0027,"},{"line_number":67,"context_line":"    pool_host_key\u003d\u0027openstack_compute_node_%(hostname)s\u0027,"},{"line_number":68,"context_line":"    pool_volume_os\u003d\u0027openstack_volume_os\u0027,"},{"line_number":69,"context_line":"    pool_volume_hostname\u003d\u0027openstack_volume_hostname\u0027"},{"line_number":70,"context_line":")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_host_or_create_from_iqn(connector, connection\u003dNone):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_9ec43b41","line":70,"range":{"start_line":30,"start_character":0,"end_line":70,"end_character":1},"in_reply_to":"5a3905b3_f639f642","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            iqn_suffix \u003d initiator.split(\u0027.\u0027)[-1].replace(\":\", \"_\")"},{"line_number":86,"context_line":"        except Exception:"},{"line_number":87,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"},{"line_number":88,"context_line":"                raise Exception(_(\"Initiator format: %(iqn)s\") %"},{"line_number":89,"context_line":"                                {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                raise Exception("}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_b6168ea5","line":88,"range":{"start_line":88,"start_character":22,"end_line":88,"end_character":31},"updated":"2017-01-19 03:29:33.000000000","message":"Please raise a more specific exception.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            iqn_suffix \u003d initiator.split(\u0027.\u0027)[-1].replace(\":\", \"_\")"},{"line_number":86,"context_line":"        except Exception:"},{"line_number":87,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"},{"line_number":88,"context_line":"                raise Exception(_(\"Initiator format: %(iqn)s\") %"},{"line_number":89,"context_line":"                                {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                raise Exception("}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_a1fc783f","line":88,"range":{"start_line":88,"start_character":22,"end_line":88,"end_character":31},"in_reply_to":"5a3905b3_b6168ea5","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                raise Exception(_(\"Initiator format: %(iqn)s\") %"},{"line_number":89,"context_line":"                                {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                raise Exception("},{"line_number":92,"context_line":"                    _(\"Initiator is missing from connector object\"))"},{"line_number":93,"context_line":"        return \"nova-compute-%s\" % iqn_suffix"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_f61016ab","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":31},"updated":"2017-01-19 03:29:33.000000000","message":"Please raise a more specific exception.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                raise Exception(_(\"Initiator format: %(iqn)s\") %"},{"line_number":89,"context_line":"                                {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                raise Exception("},{"line_number":92,"context_line":"                    _(\"Initiator is missing from connector object\"))"},{"line_number":93,"context_line":"        return \"nova-compute-%s\" % iqn_suffix"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_c1f9844f","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":31},"in_reply_to":"5a3905b3_f61016ab","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    ) \u003e 0:"},{"line_number":98,"context_line":"        return \"nova-compute-%s\" % connector[\u0027wwpns\u0027][0].replace(\":\", \"_\")"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    raise Exception(\"Compute host missing either iSCSI initiator or FC wwpns\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def gigabytes_to_blocks(gigabytes):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_761d06bd","line":100,"range":{"start_line":100,"start_character":10,"end_line":100,"end_character":19},"updated":"2017-01-19 03:29:33.000000000","message":"Please raise a more specific exception.\n\nAlso the message needs _()","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    ) \u003e 0:"},{"line_number":98,"context_line":"        return \"nova-compute-%s\" % connector[\u0027wwpns\u0027][0].replace(\":\", \"_\")"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    raise Exception(\"Compute host missing either iSCSI initiator or FC wwpns\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def gigabytes_to_blocks(gigabytes):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_019aac14","line":100,"range":{"start_line":100,"start_character":10,"end_line":100,"end_character":19},"in_reply_to":"5a3905b3_761d06bd","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except Exception:"},{"line_number":88,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"},{"line_number":89,"context_line":"                raise exception.VolumeDriverException("},{"line_number":90,"context_line":"                    message\u003d(\"Initiator format: %(iqn)s\") %"},{"line_number":91,"context_line":"                    {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_3d0cbfec","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":59},"updated":"2017-01-21 04:23:43.000000000","message":"This needs _(\"xxxx\")","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except Exception:"},{"line_number":88,"context_line":"            if connector.get(\u0027initiator\u0027, \u0027None\u0027):"},{"line_number":89,"context_line":"                raise exception.VolumeDriverException("},{"line_number":90,"context_line":"                    message\u003d(\"Initiator format: %(iqn)s\") %"},{"line_number":91,"context_line":"                    {\u0027iqn\u0027: connector.get(\u0027initiator\u0027, \u0027None\u0027)})"},{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_776ca0d0","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":59},"in_reply_to":"5a3905b3_3d0cbfec","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"cinder/volume/drivers/ibm/ibm_storage/certificate.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                            os.write(self.tmp_fd, cert_file.read())"},{"line_number":44,"context_line":"                            cert_file.close()"},{"line_number":45,"context_line":"                        except Exception:"},{"line_number":46,"context_line":"                            pass"},{"line_number":47,"context_line":"        os.close(self.tmp_fd)"},{"line_number":48,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"},{"line_number":49,"context_line":"        if fsize \u003e 0:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_667dcae6","line":46,"updated":"2016-12-14 16:26:24.000000000","message":"What are the implications of this failing to read or write?  Looks sketchy for something managing certificates to ignore failures...","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                            os.write(self.tmp_fd, cert_file.read())"},{"line_number":44,"context_line":"                            cert_file.close()"},{"line_number":45,"context_line":"                        except Exception:"},{"line_number":46,"context_line":"                            pass"},{"line_number":47,"context_line":"        os.close(self.tmp_fd)"},{"line_number":48,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"},{"line_number":49,"context_line":"        if fsize \u003e 0:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_9dd89e81","line":46,"in_reply_to":"1a6eadb0_292d5995","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                            os.write(self.tmp_fd, cert_file.read())"},{"line_number":44,"context_line":"                            cert_file.close()"},{"line_number":45,"context_line":"                        except Exception:"},{"line_number":46,"context_line":"                            pass"},{"line_number":47,"context_line":"        os.close(self.tmp_fd)"},{"line_number":48,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"},{"line_number":49,"context_line":"        if fsize \u003e 0:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_292d5995","line":46,"in_reply_to":"1a6eadb0_667dcae6","updated":"2016-12-14 20:11:29.000000000","message":"Seems like at a minimum it should log an error?","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if self.tmp_path:"},{"line_number":56,"context_line":"            try:"},{"line_number":57,"context_line":"                os.remove(self.tmp_path)"},{"line_number":58,"context_line":"            except Exception:"},{"line_number":59,"context_line":"                pass"},{"line_number":60,"context_line":"            self.tmp_path \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_264bd2b1","line":58,"updated":"2016-12-14 16:26:24.000000000","message":"Should except/pass on something more specific like IOError with errno ENOENT.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder.i18n import _LE"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6acab71c","line":20,"updated":"2017-01-17 22:23:01.000000000","message":"oslo_log should be in a separate third party import group above the local cinder import.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder.i18n import _LE"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_bdbdaf03","line":20,"in_reply_to":"7a3c09a3_6acab71c","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                dir_contents \u003d os.listdir(path)"},{"line_number":41,"context_line":"                for f in dir_contents:"},{"line_number":42,"context_line":"                    full_path \u003d os.path.join(path, f)"},{"line_number":43,"context_line":"                    if os.path.isfile(full_path) and \\"},{"line_number":44,"context_line":"                            f.startswith(\u0027XIV\u0027) and \\"},{"line_number":45,"context_line":"                            f.endswith(\u0027.pem\u0027):"},{"line_number":46,"context_line":"                        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_0ada13e8","line":43,"range":{"start_line":43,"start_character":53,"end_line":43,"end_character":54},"updated":"2017-01-17 22:23:01.000000000","message":"We\u0027ve really tried to be consistent with not using \\ to span multiple lines. Please wrap these conditions in () instead.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                dir_contents \u003d os.listdir(path)"},{"line_number":41,"context_line":"                for f in dir_contents:"},{"line_number":42,"context_line":"                    full_path \u003d os.path.join(path, f)"},{"line_number":43,"context_line":"                    if os.path.isfile(full_path) and \\"},{"line_number":44,"context_line":"                            f.startswith(\u0027XIV\u0027) and \\"},{"line_number":45,"context_line":"                            f.endswith(\u0027.pem\u0027):"},{"line_number":46,"context_line":"                        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_5d112b03","line":43,"range":{"start_line":43,"start_character":53,"end_line":43,"end_character":54},"in_reply_to":"7a3c09a3_0ada13e8","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                            cert_file.close()"},{"line_number":50,"context_line":"                        except Exception as e:"},{"line_number":51,"context_line":"                            LOG.exception("},{"line_number":52,"context_line":"                                _LE(\"Failed to process certificate\"), e)"},{"line_number":53,"context_line":"                            pass"},{"line_number":54,"context_line":"        os.close(self.tmp_fd)"},{"line_number":55,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6af1d76a","line":52,"range":{"start_line":52,"start_character":69,"end_line":52,"end_character":72},"updated":"2017-01-17 22:23:01.000000000","message":"Exceptions should not be passed in to LOG.exception() calls. It will automatically pick up the in scope exception.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                            cert_file.close()"},{"line_number":50,"context_line":"                        except Exception as e:"},{"line_number":51,"context_line":"                            LOG.exception("},{"line_number":52,"context_line":"                                _LE(\"Failed to process certificate\"), e)"},{"line_number":53,"context_line":"                            pass"},{"line_number":54,"context_line":"        os.close(self.tmp_fd)"},{"line_number":55,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_1dd96357","line":52,"range":{"start_line":52,"start_character":69,"end_line":52,"end_character":72},"in_reply_to":"7a3c09a3_6af1d76a","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                        except Exception as e:"},{"line_number":51,"context_line":"                            LOG.exception("},{"line_number":52,"context_line":"                                _LE(\"Failed to process certificate\"), e)"},{"line_number":53,"context_line":"                            pass"},{"line_number":54,"context_line":"        os.close(self.tmp_fd)"},{"line_number":55,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"},{"line_number":56,"context_line":"        if fsize \u003e 0:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_8af4435b","line":53,"range":{"start_line":53,"start_character":28,"end_line":53,"end_character":32},"updated":"2017-01-17 22:23:01.000000000","message":"pass not needed here.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                        except Exception as e:"},{"line_number":51,"context_line":"                            LOG.exception("},{"line_number":52,"context_line":"                                _LE(\"Failed to process certificate\"), e)"},{"line_number":53,"context_line":"                            pass"},{"line_number":54,"context_line":"        os.close(self.tmp_fd)"},{"line_number":55,"context_line":"        fsize \u003d os.path.getsize(self.tmp_path)"},{"line_number":56,"context_line":"        if fsize \u003e 0:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_1dc0834f","line":53,"range":{"start_line":53,"start_character":28,"end_line":53,"end_character":32},"in_reply_to":"7a3c09a3_8af4435b","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"}],"cinder/volume/drivers/ibm/ibm_storage/cryptish.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def encrypt(string):"},{"line_number":20,"context_line":"    return base64.b64encode(string)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def decrypt(string):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_695af12b","line":20,"range":{"start_line":20,"start_character":18,"end_line":20,"end_character":27},"updated":"2016-12-14 20:11:29.000000000","message":"Is there a benefit to this module? Seems simple enough to just call b64(de|en)code() where needed.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_connection.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from requests.packages.urllib3 import poolmanager"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder.i18n import _LW, _LE"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a9408935","line":26,"range":{"start_line":26,"start_character":5,"end_line":26,"end_character":13},"updated":"2016-12-14 20:11:29.000000000","message":"Move up to third party import group.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from requests.packages.urllib3 import poolmanager"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder.i18n import _LW, _LE"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_bd1aba15","line":26,"range":{"start_line":26,"start_character":5,"end_line":26,"end_character":13},"in_reply_to":"1a6eadb0_a9408935","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            with open(ca_certs, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"                certs_str \u003d f.read()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            msg \u003d _LE(\"Failed to read certificate from %s\") % ca_certs"},{"line_number":58,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Verify the Existing Certificates"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a967a9e7","line":57,"range":{"start_line":57,"start_character":18,"end_line":57,"end_character":21},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            with open(ca_certs, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"                certs_str \u003d f.read()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            msg \u003d _LE(\"Failed to read certificate from %s\") % ca_certs"},{"line_number":58,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Verify the Existing Certificates"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_1dbd6ed7","line":57,"range":{"start_line":57,"start_character":18,"end_line":57,"end_character":21},"in_reply_to":"1a6eadb0_a967a9e7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                found \u003d True"},{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"        if not found:"},{"line_number":71,"context_line":"            msg \u003d (_LE(\"The certificate doesn\u0027t match the trusted one \""},{"line_number":72,"context_line":"                       \"in %s.\") % ca_certs)"},{"line_number":73,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e95d2116","line":71,"range":{"start_line":71,"start_character":19,"end_line":71,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                found \u003d True"},{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"        if not found:"},{"line_number":71,"context_line":"            msg \u003d (_LE(\"The certificate doesn\u0027t match the trusted one \""},{"line_number":72,"context_line":"                       \"in %s.\") % ca_certs)"},{"line_number":73,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5db7e6f4","line":71,"range":{"start_line":71,"start_character":19,"end_line":71,"end_character":22},"in_reply_to":"1a6eadb0_e95d2116","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"},{"line_number":76,"context_line":"            msg \u003d _LE(\"Missing \u0027pyOpenSSL\u0027 python module, ensure the \""},{"line_number":77,"context_line":"                      \"library is installed.\")"},{"line_number":78,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_099dfdbb","line":76,"range":{"start_line":76,"start_character":18,"end_line":76,"end_character":21},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"},{"line_number":76,"context_line":"            msg \u003d _LE(\"Missing \u0027pyOpenSSL\u0027 python module, ensure the \""},{"line_number":77,"context_line":"                      \"library is installed.\")"},{"line_number":78,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_9dc97e7c","line":76,"range":{"start_line":76,"start_character":18,"end_line":76,"end_character":21},"in_reply_to":"1a6eadb0_099dfdbb","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # Throw an exception if the certificate given to us has expired"},{"line_number":81,"context_line":"        x509 \u003d load_certificate(FILETYPE_ASN1, peercert)"},{"line_number":82,"context_line":"        if x509.has_expired():"},{"line_number":83,"context_line":"            msg \u003d _LE(\"The certificate expired: %s\") % x509.get_notAfter()"},{"line_number":84,"context_line":"            raise ssl.SSLError(msg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def connect(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_69a831dc","line":83,"range":{"start_line":83,"start_character":18,"end_line":83,"end_character":21},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":145,"context_line":"if hasattr(poolmanager, \u0027key_fn_by_scheme\u0027):"},{"line_number":146,"context_line":"    poolmanager.key_fn_by_scheme[\"httpsds8k\"] \u003d ("},{"line_number":147,"context_line":"        poolmanager.key_fn_by_scheme[\"https\"])"},{"line_number":148,"context_line":"poolmanager.pool_classes_by_scheme[\"httpsds8k\"] \u003d DS8KConnectionPool"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c6f93e82","line":148,"updated":"2016-12-14 16:26:24.000000000","message":"Is this how this urllib3 is intended to be used?  Overwriting values directly in the lib seems dangerous...","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    load_certificate \u003d None"},{"line_number":35,"context_line":"    FILETYPE_ASN1 \u003d None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"RECENT_DATE \u003d datetime.date(2014, 1, 1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"_PEM_RE \u003d re.compile(u\"\"\"-----BEGIN CERTIFICATE-----\\r?"},{"line_number":40,"context_line":".+?\\r?-----END CERTIFICATE-----\\r?\\n?\"\"\", re.DOTALL)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6a61d7a8","line":37,"updated":"2017-01-17 22:18:45.000000000","message":"Do we care that RECENT_DATE is 3 years old? Not very recent...","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    load_certificate \u003d None"},{"line_number":35,"context_line":"    FILETYPE_ASN1 \u003d None"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"RECENT_DATE \u003d datetime.date(2014, 1, 1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"_PEM_RE \u003d re.compile(u\"\"\"-----BEGIN CERTIFICATE-----\\r?"},{"line_number":40,"context_line":".+?\\r?-----END CERTIFICATE-----\\r?\\n?\"\"\", re.DOTALL)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_159a1d6e","line":37,"in_reply_to":"7a3c09a3_6a61d7a8","updated":"2017-01-18 16:58:38.000000000","message":"This is taken from requests code. We\u0027re checking why this date was used.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            with open(ca_certs, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"                certs_str \u003d f.read()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            raise ssl.SSLError(_LE(\"Failed to read certificate from %s\")"},{"line_number":58,"context_line":"                               % ca_certs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Verify the Existing Certificates"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4aa5fb44","line":57,"range":{"start_line":57,"start_character":31,"end_line":57,"end_character":34},"updated":"2017-01-17 22:23:01.000000000","message":"Exception messages should use the _() translation marker.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            with open(ca_certs, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"                certs_str \u003d f.read()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            raise ssl.SSLError(_LE(\"Failed to read certificate from %s\")"},{"line_number":58,"context_line":"                               % ca_certs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # Verify the Existing Certificates"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_ff757231","line":57,"range":{"start_line":57,"start_character":31,"end_line":57,"end_character":34},"in_reply_to":"7a3c09a3_4aa5fb44","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"        if not found:"},{"line_number":71,"context_line":"            raise ssl.SSLError("},{"line_number":72,"context_line":"                _LE(\"The certificate doesn\u0027t match the trusted one \""},{"line_number":73,"context_line":"                    \"in %s.\") % ca_certs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_aa6c9f08","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":19},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"        if not found:"},{"line_number":71,"context_line":"            raise ssl.SSLError("},{"line_number":72,"context_line":"                _LE(\"The certificate doesn\u0027t match the trusted one \""},{"line_number":73,"context_line":"                    \"in %s.\") % ca_certs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_1f715e44","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":19},"in_reply_to":"7a3c09a3_aa6c9f08","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"},{"line_number":76,"context_line":"            raise ssl.SSLError("},{"line_number":77,"context_line":"                _LE(\"Missing \u0027pyOpenSSL\u0027 python module, ensure the \""},{"line_number":78,"context_line":"                    \"library is installed.\"))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Throw an exception if the certificate given to us has expired"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_ca6f2bfa","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":19},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if load_certificate is None and FILETYPE_ASN1 is None:"},{"line_number":76,"context_line":"            raise ssl.SSLError("},{"line_number":77,"context_line":"                _LE(\"Missing \u0027pyOpenSSL\u0027 python module, ensure the \""},{"line_number":78,"context_line":"                    \"library is installed.\"))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Throw an exception if the certificate given to us has expired"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_5f95a630","line":77,"range":{"start_line":77,"start_character":16,"end_line":77,"end_character":19},"in_reply_to":"7a3c09a3_ca6f2bfa","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        x509 \u003d load_certificate(FILETYPE_ASN1, peercert)"},{"line_number":82,"context_line":"        if x509.has_expired():"},{"line_number":83,"context_line":"            raise ssl.SSLError("},{"line_number":84,"context_line":"                _LE(\"The certificate expired: %s\") % x509.get_notAfter())"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def connect(self):"},{"line_number":87,"context_line":"        \"\"\"Override the Connect Method to fix the Certificate Verification.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4a7c1bb5","line":84,"range":{"start_line":84,"start_character":16,"end_line":84,"end_character":19},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        x509 \u003d load_certificate(FILETYPE_ASN1, peercert)"},{"line_number":82,"context_line":"        if x509.has_expired():"},{"line_number":83,"context_line":"            raise ssl.SSLError("},{"line_number":84,"context_line":"                _LE(\"The certificate expired: %s\") % x509.get_notAfter())"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def connect(self):"},{"line_number":87,"context_line":"        \"\"\"Override the Connect Method to fix the Certificate Verification.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9f9b8e65","line":84,"range":{"start_line":84,"start_character":16,"end_line":84,"end_character":19},"in_reply_to":"7a3c09a3_4a7c1bb5","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            # Mark this connection as not reusable"},{"line_number":104,"context_line":"            self.auto_open \u003d 0"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        is_time_off \u003d datetime.date.today() \u003c RECENT_DATE"},{"line_number":107,"context_line":"        if is_time_off:"},{"line_number":108,"context_line":"            msg \u003d _LW(\u0027System time is way off (before %s). This will probably\u0027"},{"line_number":109,"context_line":"                      \u0027lead to SSL verification errors.\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6aa477b9","line":106,"updated":"2017-01-17 22:18:45.000000000","message":"See L#37. This will check for older than 3 years.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        is_time_off \u003d datetime.date.today() \u003c RECENT_DATE"},{"line_number":107,"context_line":"        if is_time_off:"},{"line_number":108,"context_line":"            msg \u003d _LW(\u0027System time is way off (before %s). This will probably\u0027"},{"line_number":109,"context_line":"                      \u0027lead to SSL verification errors.\u0027)"},{"line_number":110,"context_line":"            LOG.warning(msg, RECENT_DATE)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6a3477fb","line":108,"range":{"start_line":108,"start_character":76,"end_line":108,"end_character":78},"updated":"2017-01-17 22:23:01.000000000","message":"Space needed at the end.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        is_time_off \u003d datetime.date.today() \u003c RECENT_DATE"},{"line_number":107,"context_line":"        if is_time_off:"},{"line_number":108,"context_line":"            msg \u003d _LW(\u0027System time is way off (before %s). This will probably\u0027"},{"line_number":109,"context_line":"                      \u0027lead to SSL verification errors.\u0027)"},{"line_number":110,"context_line":"            LOG.warning(msg, RECENT_DATE)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7fafc27c","line":108,"range":{"start_line":108,"start_character":76,"end_line":108,"end_character":78},"in_reply_to":"7a3c09a3_6a3477fb","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":"import ssl"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import hashlib"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from requests.packages.urllib3 import connection"},{"line_number":23,"context_line":"from requests.packages.urllib3 import connectionpool"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_d6d07acc","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":14},"updated":"2017-01-19 03:29:33.000000000","message":"hashlib is std lib.  Should be together with the first import group.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":"import ssl"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import hashlib"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from requests.packages.urllib3 import connection"},{"line_number":23,"context_line":"from requests.packages.urllib3 import connectionpool"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_216de804","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":14},"in_reply_to":"5a3905b3_d6d07acc","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_helper.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"2bd87deea77fa16ffcd3719e46e651038aef3a6f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.objects import fields"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"import storage"},{"line_number":29,"context_line":"from storage import cryptish"},{"line_number":30,"context_line":"from storage import ds8k_restclient as restclient"},{"line_number":31,"context_line":"from storage import proxy"},{"line_number":32,"context_line":"from storage import strings"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_f405c279","line":29,"updated":"2016-12-06 15:34:10.000000000","message":"This isn\u0027t being used in here","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"095cd21666c98ea46cb0a23fcf0c474efcd9064a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from cinder.objects import fields"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"import storage"},{"line_number":29,"context_line":"from storage import cryptish"},{"line_number":30,"context_line":"from storage import ds8k_restclient as restclient"},{"line_number":31,"context_line":"from storage import proxy"},{"line_number":32,"context_line":"from storage import strings"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_70aee92e","line":29,"in_reply_to":"3a71b18c_f405c279","updated":"2016-12-07 01:36:13.000000000","message":"Thanks Walter for your review, it is used in line 125.","commit_id":"53364cf5574910f7983f935283ccdf560905f8fb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_restclient as restclient"},{"line_number":30,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":31,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":32,"context_line":"from oslo_log import log as logging"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e950c1d6","line":32,"range":{"start_line":32,"start_character":5,"end_line":32,"end_character":13},"updated":"2016-12-14 20:11:29.000000000","message":"distutils, six, and oslo_log should be in separate third party import group.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_restclient as restclient"},{"line_number":30,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":31,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":32,"context_line":"from oslo_log import log as logging"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_aa5c8919","line":32,"range":{"start_line":32,"start_character":5,"end_line":32,"end_character":13},"in_reply_to":"1a6eadb0_e950c1d6","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            clear_pass \u003d cryptish.decrypt(self._get_value(\u0027san_password\u0027))"},{"line_number":123,"context_line":"        except TypeError:"},{"line_number":124,"context_line":"            msg \u003d _LE(\"san_password\")"},{"line_number":125,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":126,"context_line":"        verify \u003d self._get_certificate(self._get_value(\u0027san_ip\u0027))"},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            self._client \u003d restclient.RESTScheduler("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_69ae7199","line":125,"range":{"start_line":125,"start_character":50,"end_line":125,"end_character":53},"updated":"2016-12-14 20:11:29.000000000","message":"I think this should just be:\n\nraise.InvalidParameterValue(err\u003d\"san_password\")","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            clear_pass \u003d cryptish.decrypt(self._get_value(\u0027san_password\u0027))"},{"line_number":123,"context_line":"        except TypeError:"},{"line_number":124,"context_line":"            msg \u003d _LE(\"san_password\")"},{"line_number":125,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":126,"context_line":"        verify \u003d self._get_certificate(self._get_value(\u0027san_ip\u0027))"},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            self._client \u003d restclient.RESTScheduler("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6aad11e8","line":125,"range":{"start_line":125,"start_character":50,"end_line":125,"end_character":53},"in_reply_to":"1a6eadb0_69ae7199","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                self._connector_obj,"},{"line_number":133,"context_line":"                verify)"},{"line_number":134,"context_line":"        except restclient.TimeoutException as e:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Can not connect to %(host)s, Exception: %(e)s\")"},{"line_number":136,"context_line":"                   % {\u0027host\u0027: self._get_value(\u0027san_ip\u0027), \u0027e\u0027: e})"},{"line_number":137,"context_line":"            raise restclient.APIException(data\u003dmsg)"},{"line_number":138,"context_line":"        self.backend[\u0027rest_version\u0027] \u003d self._get_version()[\u0027bundle_version\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c974e537","line":135,"range":{"start_line":135,"start_character":19,"end_line":135,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                self._connector_obj,"},{"line_number":133,"context_line":"                verify)"},{"line_number":134,"context_line":"        except restclient.TimeoutException as e:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Can not connect to %(host)s, Exception: %(e)s\")"},{"line_number":136,"context_line":"                   % {\u0027host\u0027: self._get_value(\u0027san_ip\u0027), \u0027e\u0027: e})"},{"line_number":137,"context_line":"            raise restclient.APIException(data\u003dmsg)"},{"line_number":138,"context_line":"        self.backend[\u0027rest_version\u0027] \u003d self._get_version()[\u0027bundle_version\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_cad2a55b","line":135,"range":{"start_line":135,"start_character":19,"end_line":135,"end_character":22},"in_reply_to":"1a6eadb0_c974e537","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                verify)"},{"line_number":134,"context_line":"        except restclient.TimeoutException as e:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Can not connect to %(host)s, Exception: %(e)s\")"},{"line_number":136,"context_line":"                   % {\u0027host\u0027: self._get_value(\u0027san_ip\u0027), \u0027e\u0027: e})"},{"line_number":137,"context_line":"            raise restclient.APIException(data\u003dmsg)"},{"line_number":138,"context_line":"        self.backend[\u0027rest_version\u0027] \u003d self._get_version()[\u0027bundle_version\u0027]"},{"line_number":139,"context_line":"        msg \u003d _LI(\"Connection to DS8K storage system %(host)s has been \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a9a24997","line":136,"range":{"start_line":136,"start_character":62,"end_line":136,"end_character":63},"updated":"2016-12-14 20:11:29.000000000","message":"I don\u0027t think we should return the full exception details in the raised exception\u0027s text.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                verify)"},{"line_number":134,"context_line":"        except restclient.TimeoutException as e:"},{"line_number":135,"context_line":"            msg \u003d (_LE(\"Can not connect to %(host)s, Exception: %(e)s\")"},{"line_number":136,"context_line":"                   % {\u0027host\u0027: self._get_value(\u0027san_ip\u0027), \u0027e\u0027: e})"},{"line_number":137,"context_line":"            raise restclient.APIException(data\u003dmsg)"},{"line_number":138,"context_line":"        self.backend[\u0027rest_version\u0027] \u003d self._get_version()[\u0027bundle_version\u0027]"},{"line_number":139,"context_line":"        msg \u003d _LI(\"Connection to DS8K storage system %(host)s has been \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_4ac77595","line":136,"range":{"start_line":136,"start_character":62,"end_line":136,"end_character":63},"in_reply_to":"1a6eadb0_a9a24997","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        if ((ds8k_host_type is not None) and"},{"line_number":155,"context_line":"           (ds8k_host_type not in VALID_HOST_TYPES)):"},{"line_number":156,"context_line":"            msg \u003d _LE(\"ds8k_host_type parameter must be one of: %s.\")"},{"line_number":157,"context_line":"            LOG.error(msg, six.text_type(VALID_HOST_TYPES)[1:-1])"},{"line_number":158,"context_line":"            raise exception.InvalidParameterValue(_LE(\"ds8k_host_type\"))"},{"line_number":159,"context_line":"        self.backend[\u0027host_type_override\u0027] \u003d ("},{"line_number":160,"context_line":"            None if ds8k_host_type \u003d\u003d \u0027auto\u0027 else ds8k_host_type)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c9ab0574","line":157,"range":{"start_line":157,"start_character":27,"end_line":157,"end_character":40},"updated":"2016-12-14 20:11:29.000000000","message":"six.text_type not needed here.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        if ((ds8k_host_type is not None) and"},{"line_number":155,"context_line":"           (ds8k_host_type not in VALID_HOST_TYPES)):"},{"line_number":156,"context_line":"            msg \u003d _LE(\"ds8k_host_type parameter must be one of: %s.\")"},{"line_number":157,"context_line":"            LOG.error(msg, six.text_type(VALID_HOST_TYPES)[1:-1])"},{"line_number":158,"context_line":"            raise exception.InvalidParameterValue(_LE(\"ds8k_host_type\"))"},{"line_number":159,"context_line":"        self.backend[\u0027host_type_override\u0027] \u003d ("},{"line_number":160,"context_line":"            None if ds8k_host_type \u003d\u003d \u0027auto\u0027 else ds8k_host_type)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ddedb6b8","line":157,"range":{"start_line":157,"start_character":27,"end_line":157,"end_character":40},"in_reply_to":"1a6eadb0_c9ab0574","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            None if ds8k_host_type \u003d\u003d \u0027auto\u0027 else ds8k_host_type)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _verify_version(self):"},{"line_number":163,"context_line":"        if cmp(self.backend[\u0027storage_version\u0027], \u00278.0.1\u0027) \u003d\u003d 0:"},{"line_number":164,"context_line":"            msg \u003d (_LE(\"8.0.1 does not support bulk deletion of volumes, \""},{"line_number":165,"context_line":"                       \"if you want to use this version of driver, \""},{"line_number":166,"context_line":"                       \"please upgrade the CCL, and make sure the REST \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_86a02645","line":163,"updated":"2016-12-14 16:26:24.000000000","message":"cmp does not exist in python3, this needs to be changed to test differently.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _verify_version(self):"},{"line_number":163,"context_line":"        if cmp(self.backend[\u0027storage_version\u0027], \u00278.0.1\u0027) \u003d\u003d 0:"},{"line_number":164,"context_line":"            msg \u003d (_LE(\"8.0.1 does not support bulk deletion of volumes, \""},{"line_number":165,"context_line":"                       \"if you want to use this version of driver, \""},{"line_number":166,"context_line":"                       \"please upgrade the CCL, and make sure the REST \""},{"line_number":167,"context_line":"                       \"version is not lower than %s.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_09b89dc7","line":164,"range":{"start_line":164,"start_character":19,"end_line":164,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _verify_version(self):"},{"line_number":163,"context_line":"        if cmp(self.backend[\u0027storage_version\u0027], \u00278.0.1\u0027) \u003d\u003d 0:"},{"line_number":164,"context_line":"            msg \u003d (_LE(\"8.0.1 does not support bulk deletion of volumes, \""},{"line_number":165,"context_line":"                       \"if you want to use this version of driver, \""},{"line_number":166,"context_line":"                       \"please upgrade the CCL, and make sure the REST \""},{"line_number":167,"context_line":"                       \"version is not lower than %s.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_bd20faf8","line":164,"range":{"start_line":164,"start_character":19,"end_line":164,"end_character":22},"in_reply_to":"1a6eadb0_09b89dc7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":174,"context_line":"               (\u00275.8\u0027 in self.backend[\u0027rest_version\u0027] and"},{"line_number":175,"context_line":"               dist_version.LooseVersion(self.backend[\u0027rest_version\u0027]) \u003c"},{"line_number":176,"context_line":"               dist_version.LooseVersion(VALID_REST_VERSION_5_8_MIN))):"},{"line_number":177,"context_line":"                msg \u003d (_LE(\"REST version %(invalid)s is lower than \""},{"line_number":178,"context_line":"                           \"%(valid)s, please upgrade it in DS8K.\")"},{"line_number":179,"context_line":"                       % {\u0027invalid\u0027: self.backend[\u0027rest_version\u0027],"},{"line_number":180,"context_line":"                          \u0027valid\u0027: (VALID_REST_VERSION_5_7_MIN if \u00275.7\u0027 in"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_49ae1582","line":177,"range":{"start_line":177,"start_character":23,"end_line":177,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":174,"context_line":"               (\u00275.8\u0027 in self.backend[\u0027rest_version\u0027] and"},{"line_number":175,"context_line":"               dist_version.LooseVersion(self.backend[\u0027rest_version\u0027]) \u003c"},{"line_number":176,"context_line":"               dist_version.LooseVersion(VALID_REST_VERSION_5_8_MIN))):"},{"line_number":177,"context_line":"                msg \u003d (_LE(\"REST version %(invalid)s is lower than \""},{"line_number":178,"context_line":"                           \"%(valid)s, please upgrade it in DS8K.\")"},{"line_number":179,"context_line":"                       % {\u0027invalid\u0027: self.backend[\u0027rest_version\u0027],"},{"line_number":180,"context_line":"                          \u0027valid\u0027: (VALID_REST_VERSION_5_7_MIN if \u00275.7\u0027 in"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3d5a2a84","line":177,"range":{"start_line":177,"start_character":23,"end_line":177,"end_character":26},"in_reply_to":"1a6eadb0_49ae1582","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            ptype \u003d \u0027ckd\u0027"},{"line_number":195,"context_line":"        else:"},{"line_number":196,"context_line":"            msg \u003d _LE(\u0027connection_type\u0027)"},{"line_number":197,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":198,"context_line":"        self._storage_pools \u003d self.get_pools()"},{"line_number":199,"context_line":"        for pid, p in self._storage_pools.items():"},{"line_number":200,"context_line":"            if p[\u0027stgtype\u0027] !\u003d ptype:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e9bfe1a7","line":197,"range":{"start_line":197,"start_character":50,"end_line":197,"end_character":53},"updated":"2016-12-14 20:11:29.000000000","message":"err\u003d\u0027connection_type\u0027","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            ptype \u003d \u0027ckd\u0027"},{"line_number":195,"context_line":"        else:"},{"line_number":196,"context_line":"            msg \u003d _LE(\u0027connection_type\u0027)"},{"line_number":197,"context_line":"            raise exception.InvalidParameterValue(msg)"},{"line_number":198,"context_line":"        self._storage_pools \u003d self.get_pools()"},{"line_number":199,"context_line":"        for pid, p in self._storage_pools.items():"},{"line_number":200,"context_line":"            if p[\u0027stgtype\u0027] !\u003d ptype:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_fd5fd272","line":197,"range":{"start_line":197,"start_character":50,"end_line":197,"end_character":53},"in_reply_to":"1a6eadb0_e9bfe1a7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            if p[\u0027stgtype\u0027] !\u003d ptype:"},{"line_number":201,"context_line":"                msg \u003d _LE(\u0027The stgtype of pool %(pool)s is %(ptype)s.\u0027)"},{"line_number":202,"context_line":"                LOG.error(msg, {\u0027pool\u0027: pid, \u0027ptype\u0027: p[\u0027stgtype\u0027]})"},{"line_number":203,"context_line":"                raise exception.InvalidParameterValue(_LE(\u0027san_clustername\u0027))"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @proxy.logger"},{"line_number":206,"context_line":"    def get_pools(self, new_pools\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a9d089f7","line":203,"range":{"start_line":203,"start_character":54,"end_line":203,"end_character":57},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            if p[\u0027stgtype\u0027] !\u003d ptype:"},{"line_number":201,"context_line":"                msg \u003d _LE(\u0027The stgtype of pool %(pool)s is %(ptype)s.\u0027)"},{"line_number":202,"context_line":"                LOG.error(msg, {\u0027pool\u0027: pid, \u0027ptype\u0027: p[\u0027stgtype\u0027]})"},{"line_number":203,"context_line":"                raise exception.InvalidParameterValue(_LE(\u0027san_clustername\u0027))"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    @proxy.logger"},{"line_number":206,"context_line":"    def get_pools(self, new_pools\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7d6d8231","line":203,"range":{"start_line":203,"start_character":54,"end_line":203,"end_character":57},"in_reply_to":"1a6eadb0_a9d089f7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            paths \u003d self.get_pprc_paths()"},{"line_number":347,"context_line":"        except restclient.APIException as e:"},{"line_number":348,"context_line":"            paths \u003d []"},{"line_number":349,"context_line":"            msg \u003d _LE(\"Can not get the LSS because of Exception: %s\")"},{"line_number":350,"context_line":"            LOG.error(msg, e)"},{"line_number":351,"context_line":"        lss_ids \u003d set(p[\u0027source_lss_id\u0027] for p in paths)"},{"line_number":352,"context_line":"        msg \u003d _LI(\u0027LSS in PPRC paths are: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_49337562","line":349,"range":{"start_line":349,"start_character":54,"end_line":349,"end_character":68},"updated":"2016-12-14 20:11:29.000000000","message":"Get rid of this and just change the next line to be LOG.exception().","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            paths \u003d self.get_pprc_paths()"},{"line_number":347,"context_line":"        except restclient.APIException as e:"},{"line_number":348,"context_line":"            paths \u003d []"},{"line_number":349,"context_line":"            msg \u003d _LE(\"Can not get the LSS because of Exception: %s\")"},{"line_number":350,"context_line":"            LOG.error(msg, e)"},{"line_number":351,"context_line":"        lss_ids \u003d set(p[\u0027source_lss_id\u0027] for p in paths)"},{"line_number":352,"context_line":"        msg \u003d _LI(\u0027LSS in PPRC paths are: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7ddbc2ed","line":349,"range":{"start_line":349,"start_character":54,"end_line":349,"end_character":68},"in_reply_to":"1a6eadb0_49337562","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                            continue"},{"line_number":379,"context_line":"                        if fcs[0][\u0027state\u0027] not in (\u0027valid\u0027,"},{"line_number":380,"context_line":"                                                   \u0027validation_required\u0027):"},{"line_number":381,"context_line":"                            msg \u003d (_LE(\u0027Flashcopy ended up in bad state %s. \u0027"},{"line_number":382,"context_line":"                                       \u0027Rolling back.\u0027) % fcs[0][\u0027state\u0027])"},{"line_number":383,"context_line":"                            raise restclient.APIException(data\u003dmsg)"},{"line_number":384,"context_line":"                if fc_state.count(False) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_09141d9e","line":381,"range":{"start_line":381,"start_character":35,"end_line":381,"end_character":38},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                            continue"},{"line_number":379,"context_line":"                        if fcs[0][\u0027state\u0027] not in (\u0027valid\u0027,"},{"line_number":380,"context_line":"                                                   \u0027validation_required\u0027):"},{"line_number":381,"context_line":"                            msg \u003d (_LE(\u0027Flashcopy ended up in bad state %s. \u0027"},{"line_number":382,"context_line":"                                       \u0027Rolling back.\u0027) % fcs[0][\u0027state\u0027])"},{"line_number":383,"context_line":"                            raise restclient.APIException(data\u003dmsg)"},{"line_number":384,"context_line":"                if fc_state.count(False) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3de86a7c","line":381,"range":{"start_line":381,"start_character":35,"end_line":381,"end_character":38},"in_reply_to":"1a6eadb0_09141d9e","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            finished \u003d False"},{"line_number":401,"context_line":"            while True:"},{"line_number":402,"context_line":"                time.sleep(2)"},{"line_number":403,"context_line":"                pairs \u003d self.get_pprc_pairs(min_vol_id, max_vol_id)"},{"line_number":404,"context_line":"                pairs \u003d ["},{"line_number":405,"context_line":"                    p for p in pairs if p[\u0027source_volume\u0027][\u0027name\u0027] in vol_ids]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_698671dc","line":402,"range":{"start_line":402,"start_character":16,"end_line":402,"end_character":29},"updated":"2016-12-14 20:11:29.000000000","message":"I think eventlet.sleep(2) may be recommended for some reason, but honestly don\u0027t know. Just make sure whatever is used is mocked out in unit tests so it doesn\u0027t cause unnecessary delays.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            finished \u003d False"},{"line_number":401,"context_line":"            while True:"},{"line_number":402,"context_line":"                time.sleep(2)"},{"line_number":403,"context_line":"                pairs \u003d self.get_pprc_pairs(min_vol_id, max_vol_id)"},{"line_number":404,"context_line":"                pairs \u003d ["},{"line_number":405,"context_line":"                    p for p in pairs if p[\u0027source_volume\u0027][\u0027name\u0027] in vol_ids]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7d8902ca","line":402,"range":{"start_line":402,"start_character":16,"end_line":402,"end_character":29},"in_reply_to":"1a6eadb0_698671dc","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                    \u0027invalid\u0027,"},{"line_number":414,"context_line":"                    \u0027volume_inaccessible\u0027"},{"line_number":415,"context_line":"                ]"},{"line_number":416,"context_line":"                if cmp(state, \u0027full_duplex\u0027) \u003d\u003d 0:"},{"line_number":417,"context_line":"                    invalid_states.append(\u0027suspended\u0027)"},{"line_number":418,"context_line":"                elif cmp(state, \u0027suspended\u0027) \u003d\u003d 0:"},{"line_number":419,"context_line":"                    invalid_states.append(\u0027valid\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_46bd2e67","line":416,"updated":"2016-12-14 16:26:24.000000000","message":"Need to remove cmp for Python 3 compat.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                ]"},{"line_number":416,"context_line":"                if cmp(state, \u0027full_duplex\u0027) \u003d\u003d 0:"},{"line_number":417,"context_line":"                    invalid_states.append(\u0027suspended\u0027)"},{"line_number":418,"context_line":"                elif cmp(state, \u0027suspended\u0027) \u003d\u003d 0:"},{"line_number":419,"context_line":"                    invalid_states.append(\u0027valid\u0027)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"                unfinished_pairs \u003d [p for p in pairs if p[\u0027state\u0027] !\u003d state]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_66c06ae1","line":418,"updated":"2016-12-14 16:26:24.000000000","message":"Need to remove cmp for Python 3 compat.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                unfinished_pairs \u003d [p for p in pairs if p[\u0027state\u0027] !\u003d state]"},{"line_number":422,"context_line":"                for p in unfinished_pairs:"},{"line_number":423,"context_line":"                    if p[\u0027state\u0027] in invalid_states:"},{"line_number":424,"context_line":"                        msg \u003d (_LE(\u0027Metro Mirror pair %(id)s enters into \u0027"},{"line_number":425,"context_line":"                                   \u0027state %(state)s. \u0027) %"},{"line_number":426,"context_line":"                               {\u0027id\u0027: p[\u0027id\u0027], \u0027state\u0027: p[\u0027state\u0027]})"},{"line_number":427,"context_line":"                        raise restclient.APIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a96c0936","line":424,"range":{"start_line":424,"start_character":31,"end_line":424,"end_character":34},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                unfinished_pairs \u003d [p for p in pairs if p[\u0027state\u0027] !\u003d state]"},{"line_number":422,"context_line":"                for p in unfinished_pairs:"},{"line_number":423,"context_line":"                    if p[\u0027state\u0027] in invalid_states:"},{"line_number":424,"context_line":"                        msg \u003d (_LE(\u0027Metro Mirror pair %(id)s enters into \u0027"},{"line_number":425,"context_line":"                                   \u0027state %(state)s. \u0027) %"},{"line_number":426,"context_line":"                               {\u0027id\u0027: p[\u0027id\u0027], \u0027state\u0027: p[\u0027state\u0027]})"},{"line_number":427,"context_line":"                        raise restclient.APIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_1dbf2e61","line":424,"range":{"start_line":424,"start_character":31,"end_line":424,"end_character":34},"in_reply_to":"1a6eadb0_a96c0936","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            LOG.info(_LI(\u0027Could not find host.\u0027))"},{"line_number":525,"context_line":"            return None"},{"line_number":526,"context_line":"        elif len(defined_hosts) \u003e 1:"},{"line_number":527,"context_line":"            raise restclient.APIException(_LE(\u0027More than one host found.\u0027))"},{"line_number":528,"context_line":"        else:"},{"line_number":529,"context_line":"            host_id \u003d defined_hosts.pop()"},{"line_number":530,"context_line":"            mappings \u003d self._get_mappings(host_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_49cff528","line":527,"range":{"start_line":527,"start_character":42,"end_line":527,"end_character":45},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            LOG.info(_LI(\u0027Could not find host.\u0027))"},{"line_number":525,"context_line":"            return None"},{"line_number":526,"context_line":"        elif len(defined_hosts) \u003e 1:"},{"line_number":527,"context_line":"            raise restclient.APIException(_LE(\u0027More than one host found.\u0027))"},{"line_number":528,"context_line":"        else:"},{"line_number":529,"context_line":"            host_id \u003d defined_hosts.pop()"},{"line_number":530,"context_line":"            mappings \u003d self._get_mappings(host_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5d70c6dc","line":527,"range":{"start_line":527,"start_character":42,"end_line":527,"end_character":45},"in_reply_to":"1a6eadb0_49cff528","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            except restclient.APIException as e:"},{"line_number":566,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":567,"context_line":"                msg \u003d _LE(\"Failed to delete the volumes in group %(group)s, \""},{"line_number":568,"context_line":"                          \"Exception\u003d %(e)s\")"},{"line_number":569,"context_line":"                LOG.error(msg, {\u0027group\u0027: group.id, \u0027e\u0027: e})"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"            for lun in luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c9e305a3","line":568,"range":{"start_line":568,"start_character":27,"end_line":568,"end_character":43},"updated":"2016-12-14 20:11:29.000000000","message":"Change to LOG.exception","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            except restclient.APIException as e:"},{"line_number":566,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":567,"context_line":"                msg \u003d _LE(\"Failed to delete the volumes in group %(group)s, \""},{"line_number":568,"context_line":"                          \"Exception\u003d %(e)s\")"},{"line_number":569,"context_line":"                LOG.error(msg, {\u0027group\u0027: group.id, \u0027e\u0027: e})"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"            for lun in luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3d3b0aed","line":568,"range":{"start_line":568,"start_character":27,"end_line":568,"end_character":43},"in_reply_to":"1a6eadb0_c9e305a3","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":846,"context_line":"        # now only support 3390, no 3380 or 3390-A"},{"line_number":847,"context_line":"        cyl \u003d int(math.ceil(gb * 1263.28))"},{"line_number":848,"context_line":"        if cyl \u003e 65520:"},{"line_number":849,"context_line":"            msg \u003d (_LE(\"For 3390 volume, capacity can be in the range \""},{"line_number":850,"context_line":"                       \"1-65520(849KiB to 55.68GiB) cylinders, now it \""},{"line_number":851,"context_line":"                       \"is %(gb)d GiB, equals to %(cyl)d cylinders.\") %"},{"line_number":852,"context_line":"                   {\u0027gb\u0027: gb, \u0027cyl\u0027: cyl})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e9f7e156","line":849,"range":{"start_line":849,"start_character":19,"end_line":849,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":846,"context_line":"        # now only support 3390, no 3380 or 3390-A"},{"line_number":847,"context_line":"        cyl \u003d int(math.ceil(gb * 1263.28))"},{"line_number":848,"context_line":"        if cyl \u003e 65520:"},{"line_number":849,"context_line":"            msg \u003d (_LE(\"For 3390 volume, capacity can be in the range \""},{"line_number":850,"context_line":"                       \"1-65520(849KiB to 55.68GiB) cylinders, now it \""},{"line_number":851,"context_line":"                       \"is %(gb)d GiB, equals to %(cyl)d cylinders.\") %"},{"line_number":852,"context_line":"                   {\u0027gb\u0027: gb, \u0027cyl\u0027: cyl})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5d3e06db","line":849,"range":{"start_line":849,"start_character":19,"end_line":849,"end_character":22},"in_reply_to":"1a6eadb0_e9f7e156","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _check_and_verify_lcus(self):"},{"line_number":879,"context_line":"        map_str \u003d self._get_value(\u0027ds8k_devadd_unitadd_mapping\u0027)"},{"line_number":880,"context_line":"        if not map_str:"},{"line_number":881,"context_line":"            msg \u003d _LE(\u0027option ds8k_devadd_unitadd_mapping is not \u0027"},{"line_number":882,"context_line":"                      \u0027provided, please provide the mapping between \u0027"},{"line_number":883,"context_line":"                      \u0027IODevice address and unit address.\u0027)"},{"line_number":884,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_09bedd64","line":881,"range":{"start_line":881,"start_character":18,"end_line":881,"end_character":21},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _check_and_verify_lcus(self):"},{"line_number":879,"context_line":"        map_str \u003d self._get_value(\u0027ds8k_devadd_unitadd_mapping\u0027)"},{"line_number":880,"context_line":"        if not map_str:"},{"line_number":881,"context_line":"            msg \u003d _LE(\u0027option ds8k_devadd_unitadd_mapping is not \u0027"},{"line_number":882,"context_line":"                      \u0027provided, please provide the mapping between \u0027"},{"line_number":883,"context_line":"                      \u0027IODevice address and unit address.\u0027)"},{"line_number":884,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_bd2f1aa0","line":881,"range":{"start_line":881,"start_character":18,"end_line":881,"end_character":21},"in_reply_to":"1a6eadb0_09bedd64","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dev_mapping \u003d {p[1]: int(p[0], 16) for p in pairs}"},{"line_number":891,"context_line":"        for lcu in dev_mapping.keys():"},{"line_number":892,"context_line":"            if int(lcu, 16) \u003e 255:"},{"line_number":893,"context_line":"                msg \u003d (_LE(\u0027LCU %s is invalid, it should be within 00-FF.\u0027)"},{"line_number":894,"context_line":"                       % lcu)"},{"line_number":895,"context_line":"                raise exception.InvalidParameterValue(data\u003dmsg)"},{"line_number":896,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_89b2ed92","line":893,"range":{"start_line":893,"start_character":23,"end_line":893,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":890,"context_line":"        dev_mapping \u003d {p[1]: int(p[0], 16) for p in pairs}"},{"line_number":891,"context_line":"        for lcu in dev_mapping.keys():"},{"line_number":892,"context_line":"            if int(lcu, 16) \u003e 255:"},{"line_number":893,"context_line":"                msg \u003d (_LE(\u0027LCU %s is invalid, it should be within 00-FF.\u0027)"},{"line_number":894,"context_line":"                       % lcu)"},{"line_number":895,"context_line":"                raise exception.InvalidParameterValue(data\u003dmsg)"},{"line_number":896,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_fd17d251","line":893,"range":{"start_line":893,"start_character":23,"end_line":893,"end_character":26},"in_reply_to":"1a6eadb0_89b2ed92","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        ckd_addrgrp \u003d set((int(lcu, 16) // 16) for lcu in dev_mapping.keys())"},{"line_number":902,"context_line":"        intersection \u003d ckd_addrgrp \u0026 fb_addrgrp"},{"line_number":903,"context_line":"        if intersection:"},{"line_number":904,"context_line":"            msg \u003d (_LE(\u0027Invaild LCUs which first digit is %s, they are\u0027"},{"line_number":905,"context_line":"                       \u0027for fb volume.\u0027) % \u0027, \u0027.join(intersection))"},{"line_number":906,"context_line":"            raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":907,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a9afa928","line":904,"range":{"start_line":904,"start_character":19,"end_line":904,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        ckd_addrgrp \u003d set((int(lcu, 16) // 16) for lcu in dev_mapping.keys())"},{"line_number":902,"context_line":"        intersection \u003d ckd_addrgrp \u0026 fb_addrgrp"},{"line_number":903,"context_line":"        if intersection:"},{"line_number":904,"context_line":"            msg \u003d (_LE(\u0027Invaild LCUs which first digit is %s, they are\u0027"},{"line_number":905,"context_line":"                       \u0027for fb volume.\u0027) % \u0027, \u0027.join(intersection))"},{"line_number":906,"context_line":"            raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":907,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3d122a63","line":904,"range":{"start_line":904,"start_character":19,"end_line":904,"end_character":22},"in_reply_to":"1a6eadb0_a9afa928","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":915,"context_line":"                try:"},{"line_number":916,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":917,"context_line":"                except restclient.APIException as e:"},{"line_number":918,"context_line":"                    msg \u003d (_LE(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":919,"context_line":"                               \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":920,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":921,"context_line":"        return dev_mapping"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_697031dd","line":918,"range":{"start_line":918,"start_character":27,"end_line":918,"end_character":30},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":915,"context_line":"                try:"},{"line_number":916,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":917,"context_line":"                except restclient.APIException as e:"},{"line_number":918,"context_line":"                    msg \u003d (_LE(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":919,"context_line":"                               \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":920,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":921,"context_line":"        return dev_mapping"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_dd013608","line":918,"range":{"start_line":918,"start_character":27,"end_line":918,"end_character":30},"in_reply_to":"1a6eadb0_697031dd","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"6bc8b36c2f1c5ec73d7c86e7131a7af79e232243","unresolved":false,"context_lines":[{"line_number":953,"context_line":"        if not candidate_lcu:"},{"line_number":954,"context_line":"            return None"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"        # perfer to use LCU that is not in PPRC path first."},{"line_number":957,"context_line":"        lcu_pprc \u003d self.get_lss_in_pprc_paths() \u0026 set("},{"line_number":958,"context_line":"            self.backend[\u0027device_mapping\u0027].keys())"},{"line_number":959,"context_line":"        if lcu_pprc:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5201f7_16259cc1","line":956,"range":{"start_line":956,"start_character":10,"end_line":956,"end_character":16},"updated":"2016-12-29 07:26:55.000000000","message":"prefer, not perfer.","commit_id":"0ecef0ab93db4362725fb7d0a914bd3fbd6ee444"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VALID_HOST_TYPES \u003d ("},{"line_number":44,"context_line":"    \u0027auto\u0027, \u0027AMDLinuxRHEL\u0027, \u0027AMDLinuxSuse\u0027,"},{"line_number":45,"context_line":"    \u0027AppleOSX\u0027, \u0027Fujitsu\u0027, \u0027Hp\u0027, \u0027HpTru64\u0027,"},{"line_number":46,"context_line":"    \u0027HpVms\u0027, \u0027LinuxDT\u0027, \u0027LinuxRF\u0027, \u0027LinuxRHEL\u0027,"},{"line_number":47,"context_line":"    \u0027LinuxSuse\u0027, \u0027Novell\u0027, \u0027SGI\u0027, \u0027SVC\u0027,"},{"line_number":48,"context_line":"    \u0027SanFsAIX\u0027, \u0027SanFsLinux\u0027, \u0027Sun\u0027, \u0027VMWare\u0027,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_2ac42f3e","line":45,"updated":"2017-01-17 22:18:45.000000000","message":"has \u0027Hp\u0027 changed to \u0027HPE\u0027?","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"VALID_HOST_TYPES \u003d ("},{"line_number":44,"context_line":"    \u0027auto\u0027, \u0027AMDLinuxRHEL\u0027, \u0027AMDLinuxSuse\u0027,"},{"line_number":45,"context_line":"    \u0027AppleOSX\u0027, \u0027Fujitsu\u0027, \u0027Hp\u0027, \u0027HpTru64\u0027,"},{"line_number":46,"context_line":"    \u0027HpVms\u0027, \u0027LinuxDT\u0027, \u0027LinuxRF\u0027, \u0027LinuxRHEL\u0027,"},{"line_number":47,"context_line":"    \u0027LinuxSuse\u0027, \u0027Novell\u0027, \u0027SGI\u0027, \u0027SVC\u0027,"},{"line_number":48,"context_line":"    \u0027SanFsAIX\u0027, \u0027SanFsLinux\u0027, \u0027Sun\u0027, \u0027VMWare\u0027,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_d587b5b2","line":45,"in_reply_to":"7a3c09a3_2ac42f3e","updated":"2017-01-18 16:58:38.000000000","message":"checking..","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            paths \u003d self.get_pprc_paths()"},{"line_number":353,"context_line":"        except restclient.APIException as e:"},{"line_number":354,"context_line":"            paths \u003d []"},{"line_number":355,"context_line":"            LOG.exception(_LE(\"Can not get the LSS\"), e)"},{"line_number":356,"context_line":"        lss_ids \u003d set(p[\u0027source_lss_id\u0027] for p in paths)"},{"line_number":357,"context_line":"        msg \u003d _LI(\u0027LSS in PPRC paths are: %s.\u0027)"},{"line_number":358,"context_line":"        LOG.info(msg, \u0027,\u0027.join(lss_ids))"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_e59978c5","line":355,"range":{"start_line":355,"start_character":52,"end_line":355,"end_character":55},"updated":"2017-01-17 22:23:01.000000000","message":"Do not pass in exception.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            paths \u003d self.get_pprc_paths()"},{"line_number":353,"context_line":"        except restclient.APIException as e:"},{"line_number":354,"context_line":"            paths \u003d []"},{"line_number":355,"context_line":"            LOG.exception(_LE(\"Can not get the LSS\"), e)"},{"line_number":356,"context_line":"        lss_ids \u003d set(p[\u0027source_lss_id\u0027] for p in paths)"},{"line_number":357,"context_line":"        msg \u003d _LI(\u0027LSS in PPRC paths are: %s.\u0027)"},{"line_number":358,"context_line":"        LOG.info(msg, \u0027,\u0027.join(lss_ids))"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_352e39fb","line":355,"range":{"start_line":355,"start_character":52,"end_line":355,"end_character":55},"in_reply_to":"7a3c09a3_e59978c5","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        # check pprc pairs exist or not."},{"line_number":749,"context_line":"        if not self.get_pprc_pairs(vol_id, vol_id):"},{"line_number":750,"context_line":"            return None"},{"line_number":751,"context_line":"        # don\u0027t use pprc pair ID to delete it, because it may has"},{"line_number":752,"context_line":"        # communication issue."},{"line_number":753,"context_line":"        pairData \u003d {"},{"line_number":754,"context_line":"            \u0027volume_full_ids\u0027: [{"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_8acd2333","line":751,"updated":"2017-01-17 22:18:45.000000000","message":"has -\u003e have","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        # check pprc pairs exist or not."},{"line_number":749,"context_line":"        if not self.get_pprc_pairs(vol_id, vol_id):"},{"line_number":750,"context_line":"            return None"},{"line_number":751,"context_line":"        # don\u0027t use pprc pair ID to delete it, because it may has"},{"line_number":752,"context_line":"        # communication issue."},{"line_number":753,"context_line":"        pairData \u003d {"},{"line_number":754,"context_line":"            \u0027volume_full_ids\u0027: [{"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_95852dd0","line":751,"in_reply_to":"7a3c09a3_8acd2333","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        ckd_lss \u003d set(lss[\u0027id\u0027] for lss in all_lss if lss[\u0027type\u0027] \u003d\u003d \u0027ckd\u0027)"},{"line_number":918,"context_line":"        unexisting_lcu \u003d set(dev_mapping.keys()) - ckd_lss"},{"line_number":919,"context_line":"        if unexisting_lcu:"},{"line_number":920,"context_line":"            msg \u003d _(\u0027LCUs %s do not exist in DS8K, they will be created.\u0027)"},{"line_number":921,"context_line":"            LOG.info(msg, \u0027,\u0027.join(unexisting_lcu))"},{"line_number":922,"context_line":"            for lcu in unexisting_lcu:"},{"line_number":923,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_a5dcd046","line":920,"range":{"start_line":920,"start_character":18,"end_line":920,"end_character":19},"updated":"2017-01-17 22:23:01.000000000","message":"_LI()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                try:"},{"line_number":924,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":925,"context_line":"                except restclient.APIException as e:"},{"line_number":926,"context_line":"                    msg \u003d (_LE(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":927,"context_line":"                               \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":928,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":929,"context_line":"        return dev_mapping"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4515ece2","line":926,"range":{"start_line":926,"start_character":27,"end_line":926,"end_character":30},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                try:"},{"line_number":924,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":925,"context_line":"                except restclient.APIException as e:"},{"line_number":926,"context_line":"                    msg \u003d (_LE(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":927,"context_line":"                               \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":928,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":929,"context_line":"        return dev_mapping"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_b505c946","line":926,"range":{"start_line":926,"start_character":27,"end_line":926,"end_character":30},"in_reply_to":"7a3c09a3_4515ece2","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            htype \u003d \u0027LinuxRHEL\u0027"},{"line_number":454,"context_line":"        return collections.namedtuple(\u0027Host\u0027, (\u0027name\u0027, \u0027type\u0027))(hname, htype)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def initialize_connection(self, vol_id, connector, **kwargs):"},{"line_number":457,"context_line":"        host \u003d self._get_host(connector)"},{"line_number":458,"context_line":"        # Find defined host and undefined host ports"},{"line_number":459,"context_line":"        host_wwpn_set \u003d set(wwpn.upper() for wwpn in connector[\u0027wwpns\u0027])"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_4110424f","line":456,"updated":"2017-01-19 03:29:33.000000000","message":"This needs the decorator @fczm_utils.add_fc_zone","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            htype \u003d \u0027LinuxRHEL\u0027"},{"line_number":454,"context_line":"        return collections.namedtuple(\u0027Host\u0027, (\u0027name\u0027, \u0027type\u0027))(hname, htype)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def initialize_connection(self, vol_id, connector, **kwargs):"},{"line_number":457,"context_line":"        host \u003d self._get_host(connector)"},{"line_number":458,"context_line":"        # Find defined host and undefined host ports"},{"line_number":459,"context_line":"        host_wwpn_set \u003d set(wwpn.upper() for wwpn in connector[\u0027wwpns\u0027])"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_4425a2a9","line":456,"in_reply_to":"5a3905b3_4110424f","updated":"2017-01-20 15:38:04.000000000","message":"This is an implementation of the DS8KCommonHelper initialize_connection and there is already an fczm decorator at the driver initialize_connection level. Can the decorator move here?","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c88028824e18003db0bd6ca1b80e7a399400718","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            htype \u003d \u0027LinuxRHEL\u0027"},{"line_number":454,"context_line":"        return collections.namedtuple(\u0027Host\u0027, (\u0027name\u0027, \u0027type\u0027))(hname, htype)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def initialize_connection(self, vol_id, connector, **kwargs):"},{"line_number":457,"context_line":"        host \u003d self._get_host(connector)"},{"line_number":458,"context_line":"        # Find defined host and undefined host ports"},{"line_number":459,"context_line":"        host_wwpn_set \u003d set(wwpn.upper() for wwpn in connector[\u0027wwpns\u0027])"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_85263bcc","line":456,"in_reply_to":"5a3905b3_4425a2a9","updated":"2017-01-21 02:54:18.000000000","message":"Ignore this comment.  It should be at the driver level.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            }"},{"line_number":503,"context_line":"        }"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def terminate_connection(self, vol_id, connector, force, **kwargs):"},{"line_number":506,"context_line":"        # If a fake connector is generated by nova when the host"},{"line_number":507,"context_line":"        # is down, then the connector will not have a wwpns property."},{"line_number":508,"context_line":"        if \u0027wwpns\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_611d3e66","line":505,"updated":"2017-01-19 03:29:33.000000000","message":"Needs the decorator @fczm_utils.remove_fc_zone","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            }"},{"line_number":503,"context_line":"        }"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def terminate_connection(self, vol_id, connector, force, **kwargs):"},{"line_number":506,"context_line":"        # If a fake connector is generated by nova when the host"},{"line_number":507,"context_line":"        # is down, then the connector will not have a wwpns property."},{"line_number":508,"context_line":"        if \u0027wwpns\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_e49a0ec5","line":505,"in_reply_to":"5a3905b3_611d3e66","updated":"2017-01-20 15:38:04.000000000","message":"like response to previous comment","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                                  for initiator in connector[\u0027wwpns\u0027]}"},{"line_number":556,"context_line":"                    return {"},{"line_number":557,"context_line":"                        \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":558,"context_line":"                        \u0027data\u0027: {\u0027initiator_target_map\u0027: target_map}"},{"line_number":559,"context_line":"                    }"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def create_group(self, ctxt, group):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_21c41691","line":558,"updated":"2017-01-19 03:29:33.000000000","message":"If you are detaching one volume and there are still other volumes attached, terminate_connection should return the following:\n\n{\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,\n  \u0027data\u0027: {}}\n\nI don\u0027t see such a code path.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/dell_emc/vnx/adapter.py#L1499","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                                  for initiator in connector[\u0027wwpns\u0027]}"},{"line_number":556,"context_line":"                    return {"},{"line_number":557,"context_line":"                        \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":558,"context_line":"                        \u0027data\u0027: {\u0027initiator_target_map\u0027: target_map}"},{"line_number":559,"context_line":"                    }"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def create_group(self, ctxt, group):"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_aa9c4d6a","line":558,"in_reply_to":"5a3905b3_21c41691","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":569,"context_line":"                self.delete_lun(luns)"},{"line_number":570,"context_line":"            except restclient.APIException:"},{"line_number":571,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":572,"context_line":"                msg \u003d _(\"Failed to delete the volumes in group %(group)s\")"},{"line_number":573,"context_line":"                LOG.exception(msg, {\u0027group\u0027: group.id})"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"            for lun in luns:"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_61be1e01","line":572,"range":{"start_line":572,"start_character":22,"end_line":572,"end_character":23},"updated":"2017-01-19 03:29:33.000000000","message":"Should be _LE() here.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":569,"context_line":"                self.delete_lun(luns)"},{"line_number":570,"context_line":"            except restclient.APIException:"},{"line_number":571,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":572,"context_line":"                msg \u003d _(\"Failed to delete the volumes in group %(group)s\")"},{"line_number":573,"context_line":"                LOG.exception(msg, {\u0027group\u0027: group.id})"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"            for lun in luns:"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_e4812e4f","line":572,"range":{"start_line":572,"start_character":22,"end_line":572,"end_character":23},"in_reply_to":"5a3905b3_61be1e01","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":924,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":925,"context_line":"                except restclient.APIException as e:"},{"line_number":926,"context_line":"                    msg \u003d (_(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":927,"context_line":"                             \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":928,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":929,"context_line":"        return dev_mapping"},{"line_number":930,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_015d5ae9","line":927,"range":{"start_line":927,"start_character":58,"end_line":927,"end_character":59},"updated":"2017-01-19 03:29:33.000000000","message":"Should be six.text_type(e) because you are formatting the string here.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":924,"context_line":"                    self._create_lcu(self.backend[\u0027ssid_prefix\u0027], lcu)"},{"line_number":925,"context_line":"                except restclient.APIException as e:"},{"line_number":926,"context_line":"                    msg \u003d (_(\u0027can not create lcu %(lcu)s, Exception\u003d \u0027"},{"line_number":927,"context_line":"                             \u0027%(e)s\u0027) % {\u0027lcu\u0027: lcu, \u0027e\u0027: e})"},{"line_number":928,"context_line":"                    raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":929,"context_line":"        return dev_mapping"},{"line_number":930,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_aa31adee","line":927,"range":{"start_line":927,"start_character":58,"end_line":927,"end_character":59},"in_reply_to":"5a3905b3_015d5ae9","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        ds8k_host_type \u003d self._get_value(\u0027ds8k_host_type\u0027)"},{"line_number":155,"context_line":"        if ((ds8k_host_type is not None) and"},{"line_number":156,"context_line":"           (ds8k_host_type not in VALID_HOST_TYPES)):"},{"line_number":157,"context_line":"            msg \u003d _LE(\"Param [ds8k_host_type] must be one of: %s.\")"},{"line_number":158,"context_line":"            LOG.error(msg, VALID_HOST_TYPES[1:-1])"},{"line_number":159,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":160,"context_line":"        self.backend[\u0027host_type_override\u0027] \u003d ("},{"line_number":161,"context_line":"            None if ds8k_host_type \u003d\u003d \u0027auto\u0027 else ds8k_host_type)"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_1dd5431b","line":159,"range":{"start_line":157,"start_character":0,"end_line":159,"end_character":58},"updated":"2017-01-21 04:23:43.000000000","message":"Should be _(\"Param….\") because msg is also in the exception. Also you should substitute the string for it to be complete.\n\nmsg \u003d _(\"Param [ds8k_host_type] must be one of: %s.\") % VALID_HOST_TYPES[1:-1]\nLOG.error(msg)\nraise exception.InvalidParameterValue(err\u003dmsg)","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        ds8k_host_type \u003d self._get_value(\u0027ds8k_host_type\u0027)"},{"line_number":155,"context_line":"        if ((ds8k_host_type is not None) and"},{"line_number":156,"context_line":"           (ds8k_host_type not in VALID_HOST_TYPES)):"},{"line_number":157,"context_line":"            msg \u003d _LE(\"Param [ds8k_host_type] must be one of: %s.\")"},{"line_number":158,"context_line":"            LOG.error(msg, VALID_HOST_TYPES[1:-1])"},{"line_number":159,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":160,"context_line":"        self.backend[\u0027host_type_override\u0027] \u003d ("},{"line_number":161,"context_line":"            None if ds8k_host_type \u003d\u003d \u0027auto\u0027 else ds8k_host_type)"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_1716fcf0","line":159,"range":{"start_line":157,"start_character":0,"end_line":159,"end_character":58},"in_reply_to":"5a3905b3_1dd5431b","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"befcd3f4d2ab597e3b99ad0d12cddce246b98794","unresolved":false,"context_lines":[{"line_number":27,"context_line":"---\u003e"},{"line_number":28,"context_line":"enabled_backends \u003d ibm_ds8k_1, ibm_ds8k_2"},{"line_number":29,"context_line":"[ibm_ds8k_1]"},{"line_number":30,"context_line":"proxy \u003d storage.ds8k_proxy.DS8KProxy"},{"line_number":31,"context_line":"volume_backend_name \u003d ibm_ds8k_1"},{"line_number":32,"context_line":"san_clustername \u003d P2,P3"},{"line_number":33,"context_line":"san_password \u003d actual_password"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_86cfcf54","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":7},"updated":"2016-12-07 02:40:16.000000000","message":"I think it is needed to be changed to \nproxy \u003d cinder.volume.drivers.ibm.ibm_storage.ds8k_proxy.DS8KProxy","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"810fa3ac95c9e1a75de7edf9e6ef3d787778a2ce","unresolved":false,"context_lines":[{"line_number":27,"context_line":"---\u003e"},{"line_number":28,"context_line":"enabled_backends \u003d ibm_ds8k_1, ibm_ds8k_2"},{"line_number":29,"context_line":"[ibm_ds8k_1]"},{"line_number":30,"context_line":"proxy \u003d storage.ds8k_proxy.DS8KProxy"},{"line_number":31,"context_line":"volume_backend_name \u003d ibm_ds8k_1"},{"line_number":32,"context_line":"san_clustername \u003d P2,P3"},{"line_number":33,"context_line":"san_password \u003d actual_password"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_3dcfda56","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":7},"in_reply_to":"3a71b18c_86cfcf54","updated":"2016-12-07 10:43:48.000000000","message":"Done","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"befcd3f4d2ab597e3b99ad0d12cddce246b98794","unresolved":false,"context_lines":[{"line_number":33,"context_line":"san_password \u003d actual_password"},{"line_number":34,"context_line":"san_login \u003d actual_username"},{"line_number":35,"context_line":"san_ip \u003d foo.com"},{"line_number":36,"context_line":"volume_driver \u003d cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver"},{"line_number":37,"context_line":"chap \u003d disabled"},{"line_number":38,"context_line":"connection_type \u003d fibre_channel"},{"line_number":39,"context_line":"replication_device \u003d backend_id: bar,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_6629d3e5","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":13},"updated":"2016-12-07 02:40:16.000000000","message":"it should be volume_driver \u003d cinder.volume.drivers.ibm.ibm_storage.ibm_storage.IBMStorageDriver\nbut double ibm_storage in the path, it seems that it is redundancy, Alon, how about your opinion?","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"810fa3ac95c9e1a75de7edf9e6ef3d787778a2ce","unresolved":false,"context_lines":[{"line_number":33,"context_line":"san_password \u003d actual_password"},{"line_number":34,"context_line":"san_login \u003d actual_username"},{"line_number":35,"context_line":"san_ip \u003d foo.com"},{"line_number":36,"context_line":"volume_driver \u003d cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver"},{"line_number":37,"context_line":"chap \u003d disabled"},{"line_number":38,"context_line":"connection_type \u003d fibre_channel"},{"line_number":39,"context_line":"replication_device \u003d backend_id: bar,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_7dd5d2e2","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":13},"in_reply_to":"3a71b18c_6629d3e5","updated":"2016-12-07 10:43:48.000000000","message":"Done","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"befcd3f4d2ab597e3b99ad0d12cddce246b98794","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                     port_pairs: I0236-I0306; I0237-I0307"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"[ibm_ds8k_2]"},{"line_number":45,"context_line":"proxy \u003d storage.ds8k_proxy.DS8KProxy"},{"line_number":46,"context_line":"volume_backend_name \u003d ibm_ds8k_2"},{"line_number":47,"context_line":"san_clustername \u003d P4,P5"},{"line_number":48,"context_line":"san_password \u003d actual_password"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_26827bc8","line":45,"range":{"start_line":45,"start_character":16,"end_line":45,"end_character":26},"updated":"2016-12-07 02:40:16.000000000","message":"same","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"810fa3ac95c9e1a75de7edf9e6ef3d787778a2ce","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                     port_pairs: I0236-I0306; I0237-I0307"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"[ibm_ds8k_2]"},{"line_number":45,"context_line":"proxy \u003d storage.ds8k_proxy.DS8KProxy"},{"line_number":46,"context_line":"volume_backend_name \u003d ibm_ds8k_2"},{"line_number":47,"context_line":"san_clustername \u003d P4,P5"},{"line_number":48,"context_line":"san_password \u003d actual_password"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_ddfc2674","line":45,"range":{"start_line":45,"start_character":16,"end_line":45,"end_character":26},"in_reply_to":"3a71b18c_26827bc8","updated":"2016-12-07 10:43:48.000000000","message":"Done","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"befcd3f4d2ab597e3b99ad0d12cddce246b98794","unresolved":false,"context_lines":[{"line_number":48,"context_line":"san_password \u003d actual_password"},{"line_number":49,"context_line":"san_login \u003d actual_username"},{"line_number":50,"context_line":"san_ip \u003d bar.com"},{"line_number":51,"context_line":"volume_driver \u003d cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver"},{"line_number":52,"context_line":"chap \u003d disabled"},{"line_number":53,"context_line":"connection_type \u003d fibre_channel"},{"line_number":54,"context_line":"\u003c---"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_4685b7cc","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":13},"updated":"2016-12-07 02:40:16.000000000","message":"same","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"810fa3ac95c9e1a75de7edf9e6ef3d787778a2ce","unresolved":false,"context_lines":[{"line_number":48,"context_line":"san_password \u003d actual_password"},{"line_number":49,"context_line":"san_login \u003d actual_username"},{"line_number":50,"context_line":"san_ip \u003d bar.com"},{"line_number":51,"context_line":"volume_driver \u003d cinder.volume.drivers.ibm.ibm_storage.IBMStorageDriver"},{"line_number":52,"context_line":"chap \u003d disabled"},{"line_number":53,"context_line":"connection_type \u003d fibre_channel"},{"line_number":54,"context_line":"\u003c---"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a71b18c_9d062e84","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":13},"in_reply_to":"3a71b18c_4685b7cc","updated":"2016-12-07 10:43:48.000000000","message":"Done","commit_id":"881489e6a1febdbd731ee767ca42f1a7051635fd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            thin_provision \u003d self._helper.get_thin_provision()"},{"line_number":425,"context_line":"            if lun.type_thin and thin_provision:"},{"line_number":426,"context_line":"                if lun.type_replication:"},{"line_number":427,"context_line":"                    msg \u003d (_LE(\"The primary or the secondary storage \""},{"line_number":428,"context_line":"                               \"can not support ECKD ESE volume.\"))"},{"line_number":429,"context_line":"                else:"},{"line_number":430,"context_line":"                    msg \u003d _LE(\"Backend can not support ECKD ESE volume.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_69159147","line":427,"range":{"start_line":427,"start_character":27,"end_line":427,"end_character":30},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            thin_provision \u003d self._helper.get_thin_provision()"},{"line_number":425,"context_line":"            if lun.type_thin and thin_provision:"},{"line_number":426,"context_line":"                if lun.type_replication:"},{"line_number":427,"context_line":"                    msg \u003d (_LE(\"The primary or the secondary storage \""},{"line_number":428,"context_line":"                               \"can not support ECKD ESE volume.\"))"},{"line_number":429,"context_line":"                else:"},{"line_number":430,"context_line":"                    msg \u003d _LE(\"Backend can not support ECKD ESE volume.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_675c6c4b","line":427,"range":{"start_line":427,"start_character":27,"end_line":427,"end_character":30},"in_reply_to":"1a6eadb0_69159147","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                    msg \u003d (_LE(\"The primary or the secondary storage \""},{"line_number":428,"context_line":"                               \"can not support ECKD ESE volume.\"))"},{"line_number":429,"context_line":"                else:"},{"line_number":430,"context_line":"                    msg \u003d _LE(\"Backend can not support ECKD ESE volume.\")"},{"line_number":431,"context_line":"                LOG.error(msg)"},{"line_number":432,"context_line":"                raise restclient.APIException(message\u003dmsg)"},{"line_number":433,"context_line":"        # There is a time gap between find available LSS slot and"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a90b2929","line":430,"range":{"start_line":430,"start_character":26,"end_line":430,"end_character":29},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                    msg \u003d (_LE(\"The primary or the secondary storage \""},{"line_number":428,"context_line":"                               \"can not support ECKD ESE volume.\"))"},{"line_number":429,"context_line":"                else:"},{"line_number":430,"context_line":"                    msg \u003d _LE(\"Backend can not support ECKD ESE volume.\")"},{"line_number":431,"context_line":"                LOG.error(msg)"},{"line_number":432,"context_line":"                raise restclient.APIException(message\u003dmsg)"},{"line_number":433,"context_line":"        # There is a time gap between find available LSS slot and"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8757c824","line":430,"range":{"start_line":430,"start_character":26,"end_line":430,"end_character":29},"in_reply_to":"1a6eadb0_a90b2929","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    def _ensure_vol_not_fc_target(self, vol_hex_id):"},{"line_number":503,"context_line":"        for cp in self._helper.get_flashcopy(vol_hex_id):"},{"line_number":504,"context_line":"            if cp[\u0027targetvolume\u0027][\u0027id\u0027] \u003d\u003d vol_hex_id:"},{"line_number":505,"context_line":"                msg \u003d (_LE(\u0027Volume %s is currently a target of another \u0027"},{"line_number":506,"context_line":"                           \u0027FlashCopy operation\u0027) % vol_hex_id)"},{"line_number":507,"context_line":"                raise restclient.APIException(data\u003dmsg)"},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ac125755","line":505,"range":{"start_line":505,"start_character":23,"end_line":505,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":502,"context_line":"    def _ensure_vol_not_fc_target(self, vol_hex_id):"},{"line_number":503,"context_line":"        for cp in self._helper.get_flashcopy(vol_hex_id):"},{"line_number":504,"context_line":"            if cp[\u0027targetvolume\u0027][\u0027id\u0027] \u003d\u003d vol_hex_id:"},{"line_number":505,"context_line":"                msg \u003d (_LE(\u0027Volume %s is currently a target of another \u0027"},{"line_number":506,"context_line":"                           \u0027FlashCopy operation\u0027) % vol_hex_id)"},{"line_number":507,"context_line":"                raise restclient.APIException(data\u003dmsg)"},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_273d14dd","line":505,"range":{"start_line":505,"start_character":23,"end_line":505,"end_character":26},"in_reply_to":"1a6eadb0_ac125755","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                self._replication.extend_replica(lun, param)"},{"line_number":542,"context_line":"                self._replication.create_pprc_pairs(lun)"},{"line_number":543,"context_line":"            else:"},{"line_number":544,"context_line":"                msg \u003d (_LE(\"The volume %s has been failed over, it is \""},{"line_number":545,"context_line":"                           \"not suggested to extend it.\") % lun.ds_id)"},{"line_number":546,"context_line":"                raise exception.CinderException(data\u003dmsg)"},{"line_number":547,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_cc1b1372","line":544,"range":{"start_line":544,"start_character":23,"end_line":544,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                self._replication.extend_replica(lun, param)"},{"line_number":542,"context_line":"                self._replication.create_pprc_pairs(lun)"},{"line_number":543,"context_line":"            else:"},{"line_number":544,"context_line":"                msg \u003d (_LE(\"The volume %s has been failed over, it is \""},{"line_number":545,"context_line":"                           \"not suggested to extend it.\") % lun.ds_id)"},{"line_number":546,"context_line":"                raise exception.CinderException(data\u003dmsg)"},{"line_number":547,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_470f7036","line":544,"range":{"start_line":544,"start_character":23,"end_line":544,"end_character":26},"in_reply_to":"1a6eadb0_cc1b1372","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":672,"context_line":"                    lun \u003d self._replication.delete_replica(lun)"},{"line_number":673,"context_line":"                    lun \u003d _convert_thin_and_thick(lun, new_type_thin)"},{"line_number":674,"context_line":"                else:"},{"line_number":675,"context_line":"                    msg \u003d (_LE(\"The volume %s is in replication relationship, \""},{"line_number":676,"context_line":"                               \"it is not supported to retype from thin to \""},{"line_number":677,"context_line":"                               \"thick or vice versus.\") % lun.ds_id)"},{"line_number":678,"context_line":"                    raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6c23dfa7","line":675,"range":{"start_line":675,"start_character":27,"end_line":675,"end_character":30},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":672,"context_line":"                    lun \u003d self._replication.delete_replica(lun)"},{"line_number":673,"context_line":"                    lun \u003d _convert_thin_and_thick(lun, new_type_thin)"},{"line_number":674,"context_line":"                else:"},{"line_number":675,"context_line":"                    msg \u003d (_LE(\"The volume %s is in replication relationship, \""},{"line_number":676,"context_line":"                               \"it is not supported to retype from thin to \""},{"line_number":677,"context_line":"                               \"thick or vice versus.\") % lun.ds_id)"},{"line_number":678,"context_line":"                    raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8a1c2d6b","line":675,"range":{"start_line":675,"start_character":27,"end_line":675,"end_character":30},"in_reply_to":"1a6eadb0_6c23dfa7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":739,"context_line":"                self._clone_group(src_luns, tgt_luns, cg_enabled)"},{"line_number":740,"context_line":"        except restclient.APIException as e:"},{"line_number":741,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":742,"context_line":"            msg \u003d _LE(\u0027Failed to create group snapshot. Exception\u003d %s\u0027)"},{"line_number":743,"context_line":"            LOG.error(msg, e)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        for tgt_lun in tgt_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ac3977d9","line":742,"range":{"start_line":742,"start_character":56,"end_line":742,"end_character":69},"updated":"2016-12-14 20:11:29.000000000","message":"Change to LOG.exception","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":739,"context_line":"                self._clone_group(src_luns, tgt_luns, cg_enabled)"},{"line_number":740,"context_line":"        except restclient.APIException as e:"},{"line_number":741,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":742,"context_line":"            msg \u003d _LE(\u0027Failed to create group snapshot. Exception\u003d %s\u0027)"},{"line_number":743,"context_line":"            LOG.error(msg, e)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        for tgt_lun in tgt_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_0a1f3d5b","line":742,"range":{"start_line":742,"start_character":56,"end_line":742,"end_character":69},"in_reply_to":"1a6eadb0_ac3977d9","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                self._helper.delete_lun(snapshots)"},{"line_number":769,"context_line":"            except restclient.APIException as e:"},{"line_number":770,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":771,"context_line":"                msg \u003d _LE(\"Failed to delete cg snapshots. Exception\u003d %s\")"},{"line_number":772,"context_line":"                LOG.error(msg, e)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_cc3233f2","line":771,"range":{"start_line":771,"start_character":58,"end_line":771,"end_character":67},"updated":"2016-12-14 20:11:29.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        except restclient.APIException as e:"},{"line_number":832,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":833,"context_line":"            msg \u003d _LE(\"Failed to create group from group snapshot. \""},{"line_number":834,"context_line":"                      \"Exception\u003d %s\")"},{"line_number":835,"context_line":"            LOG.error(msg, e)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        for tgt_lun in tgt_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ec2fef85","line":834,"range":{"start_line":834,"start_character":23,"end_line":834,"end_character":32},"updated":"2016-12-14 20:11:29.000000000","message":"Same.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        except restclient.APIException as e:"},{"line_number":832,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":833,"context_line":"            msg \u003d _LE(\"Failed to create group from group snapshot. \""},{"line_number":834,"context_line":"                      \"Exception\u003d %s\")"},{"line_number":835,"context_line":"            LOG.error(msg, e)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        for tgt_lun in tgt_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_4a3db5c2","line":834,"range":{"start_line":834,"start_character":23,"end_line":834,"end_character":32},"in_reply_to":"1a6eadb0_ec2fef85","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":952,"context_line":"            if secondary_id is None:"},{"line_number":953,"context_line":"                secondary_id \u003d backend_id"},{"line_number":954,"context_line":"            elif secondary_id !\u003d backend_id:"},{"line_number":955,"context_line":"                msg \u003d (_LE(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":956,"context_line":"                           \u0027Valid backend id is %s.\u0027) % backend_id)"},{"line_number":957,"context_line":"                raise exception.InvalidReplicationTarget(message\u003dmsg)"},{"line_number":958,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6c5aff2b","line":955,"range":{"start_line":955,"start_character":23,"end_line":955,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":952,"context_line":"            if secondary_id is None:"},{"line_number":953,"context_line":"                secondary_id \u003d backend_id"},{"line_number":954,"context_line":"            elif secondary_id !\u003d backend_id:"},{"line_number":955,"context_line":"                msg \u003d (_LE(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":956,"context_line":"                           \u0027Valid backend id is %s.\u0027) % backend_id)"},{"line_number":957,"context_line":"                raise exception.InvalidReplicationTarget(message\u003dmsg)"},{"line_number":958,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6a3fd1b3","line":955,"range":{"start_line":955,"start_character":23,"end_line":955,"end_character":26},"in_reply_to":"1a6eadb0_6c5aff2b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            except restclient.APIException as e:"},{"line_number":985,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":986,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":987,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: e})"},{"line_number":988,"context_line":"                raise exception.UnableToFailOver(data\u003dmsg)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"            for lun in replicated_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_cc495362","line":987,"range":{"start_line":987,"start_character":52,"end_line":987,"end_character":53},"updated":"2016-12-14 20:11:29.000000000","message":"Needs six.text_type()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            except restclient.APIException as e:"},{"line_number":985,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":986,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":987,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: e})"},{"line_number":988,"context_line":"                raise exception.UnableToFailOver(data\u003dmsg)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"            for lun in replicated_luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ca7625a3","line":987,"range":{"start_line":987,"start_character":52,"end_line":987,"end_character":53},"in_reply_to":"1a6eadb0_cc495362","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f44b04914aa94a1b40d08e8532fd8830dc1c39ae","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                    pool_info \u003d (pid, new_pools[pid][\u0027node\u0027])"},{"line_number":604,"context_line":"                    new_lun \u003d lun.shallow_copy()"},{"line_number":605,"context_line":"                    self._create_lun_helper(new_lun, pool_info, False)"},{"line_number":606,"context_line":"                    self._clone_lun(lun, new_lun)"},{"line_number":607,"context_line":"                    volume_update \u003d new_lun.update_volume(lun)"},{"line_number":608,"context_line":"                    try:"},{"line_number":609,"context_line":"                        self._helper.delete_lun(lun)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_c7d5dc1b","line":606,"range":{"start_line":606,"start_character":41,"end_line":606,"end_character":48},"updated":"2016-12-20 11:09:19.000000000","message":"we need to add lun.data_type \u003d new_lun.data_type between line 606 and line 607 because a bug here.","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d327ca6542bb3f9ec28804d6680aa9d751bcf85b","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                    pool_info \u003d (pid, new_pools[pid][\u0027node\u0027])"},{"line_number":604,"context_line":"                    new_lun \u003d lun.shallow_copy()"},{"line_number":605,"context_line":"                    self._create_lun_helper(new_lun, pool_info, False)"},{"line_number":606,"context_line":"                    self._clone_lun(lun, new_lun)"},{"line_number":607,"context_line":"                    volume_update \u003d new_lun.update_volume(lun)"},{"line_number":608,"context_line":"                    try:"},{"line_number":609,"context_line":"                        self._helper.delete_lun(lun)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_1396284c","line":606,"range":{"start_line":606,"start_character":41,"end_line":606,"end_character":48},"in_reply_to":"1a6eadb0_c7d5dc1b","updated":"2016-12-20 14:37:42.000000000","message":"Done","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f44b04914aa94a1b40d08e8532fd8830dc1c39ae","unresolved":false,"context_lines":[{"line_number":652,"context_line":"            except Exception:"},{"line_number":653,"context_line":"                pass"},{"line_number":654,"context_line":"            lun.ds_id \u003d new_lun.ds_id"},{"line_number":655,"context_line":"            lun.type_thin \u003d new_type"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"            return lun"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_876764b6","line":655,"range":{"start_line":655,"start_character":16,"end_line":655,"end_character":25},"updated":"2016-12-20 11:09:19.000000000","message":"we need to add lun.data_type \u003d new_lun.data_type in line 656 because a bug here too.","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d327ca6542bb3f9ec28804d6680aa9d751bcf85b","unresolved":false,"context_lines":[{"line_number":652,"context_line":"            except Exception:"},{"line_number":653,"context_line":"                pass"},{"line_number":654,"context_line":"            lun.ds_id \u003d new_lun.ds_id"},{"line_number":655,"context_line":"            lun.type_thin \u003d new_type"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"            return lun"},{"line_number":658,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_f3ae0c97","line":655,"range":{"start_line":655,"start_character":16,"end_line":655,"end_character":25},"in_reply_to":"1a6eadb0_876764b6","updated":"2016-12-20 14:37:42.000000000","message":"Done","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f44b04914aa94a1b40d08e8532fd8830dc1c39ae","unresolved":false,"context_lines":[{"line_number":984,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":985,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":986,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":987,"context_line":"                raise exception.UnableToFailOver(data\u003dmsg)"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"            for lun in replicated_luns:"},{"line_number":990,"context_line":"                volume_update \u003d lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_1ca3a79f","line":987,"range":{"start_line":987,"start_character":49,"end_line":987,"end_character":53},"updated":"2016-12-20 11:09:19.000000000","message":"we need to use reason\u003dmsg instead of data\u003dmsg. because message in class UnableToFailOver uses reason.","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d327ca6542bb3f9ec28804d6680aa9d751bcf85b","unresolved":false,"context_lines":[{"line_number":984,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":985,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":986,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":987,"context_line":"                raise exception.UnableToFailOver(data\u003dmsg)"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"            for lun in replicated_luns:"},{"line_number":990,"context_line":"                volume_update \u003d lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_93a158ac","line":987,"range":{"start_line":987,"start_character":49,"end_line":987,"end_character":53},"in_reply_to":"1a6eadb0_1ca3a79f","updated":"2016-12-20 14:37:42.000000000","message":"Done","commit_id":"5f16b93d4098f027ebb280ace9b46d5659f50dea"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"6bc8b36c2f1c5ec73d7c86e7131a7af79e232243","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"from cinder import exception"},{"line_number":67,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"},{"line_number":68,"context_line":"from cinder import objects"},{"line_number":69,"context_line":"from cinder.objects import fields"},{"line_number":70,"context_line":"from cinder.utils import synchronized"},{"line_number":71,"context_line":"import cinder.volume.drivers.ibm.ibm_storage as storage"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5201f7_368620ba","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":18},"updated":"2016-12-29 07:26:55.000000000","message":"this one should be removed, it will be added in next patch.","commit_id":"0ecef0ab93db4362725fb7d0a914bd3fbd6ee444"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        if self._helper:"},{"line_number":376,"context_line":"            storage_pools \u003d self._helper.get_pools()"},{"line_number":377,"context_line":"            if not len(storage_pools):"},{"line_number":378,"context_line":"                msg \u003d _LE(\u0027No pools found - make sure san_clustername \u0027"},{"line_number":379,"context_line":"                          \u0027is defined in the config file and that the \u0027"},{"line_number":380,"context_line":"                          \u0027pools exist on the storage.\u0027)"},{"line_number":381,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_c5371c4b","line":378,"range":{"start_line":378,"start_character":22,"end_line":378,"end_character":25},"updated":"2017-01-17 22:23:01.000000000","message":"Since this is also used in the exception, this should use _()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        if self._helper:"},{"line_number":376,"context_line":"            storage_pools \u003d self._helper.get_pools()"},{"line_number":377,"context_line":"            if not len(storage_pools):"},{"line_number":378,"context_line":"                msg \u003d _LE(\u0027No pools found - make sure san_clustername \u0027"},{"line_number":379,"context_line":"                          \u0027is defined in the config file and that the \u0027"},{"line_number":380,"context_line":"                          \u0027pools exist on the storage.\u0027)"},{"line_number":381,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_354d599a","line":378,"range":{"start_line":378,"start_character":22,"end_line":378,"end_character":25},"in_reply_to":"7a3c09a3_c5371c4b","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                LOG.error(msg)"},{"line_number":382,"context_line":"                raise exception.CinderException(message\u003dmsg)"},{"line_number":383,"context_line":"        else:"},{"line_number":384,"context_line":"            msg \u003d (_LE(\u0027Backend %s is not initialized.\u0027)"},{"line_number":385,"context_line":"                   % self.configuration.volume_backend_name)"},{"line_number":386,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_053e8427","line":384,"range":{"start_line":384,"start_character":19,"end_line":384,"end_character":22},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                LOG.error(msg)"},{"line_number":382,"context_line":"                raise exception.CinderException(message\u003dmsg)"},{"line_number":383,"context_line":"        else:"},{"line_number":384,"context_line":"            msg \u003d (_LE(\u0027Backend %s is not initialized.\u0027)"},{"line_number":385,"context_line":"                   % self.configuration.volume_backend_name)"},{"line_number":386,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7543616c","line":384,"range":{"start_line":384,"start_character":19,"end_line":384,"end_character":22},"in_reply_to":"7a3c09a3_053e8427","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                       \u0027to the Source volume in size.\u0027))"},{"line_number":454,"context_line":"        self._ensure_vol_not_fc_target(src_lun.ds_id)"},{"line_number":455,"context_line":"        # volume ID of src_lun and tgt_lun will be the same one if tgt_lun"},{"line_number":456,"context_line":"        # is image-volume, because _clone_image_volume in manager.py not"},{"line_number":457,"context_line":"        # pop the provider_location."},{"line_number":458,"context_line":"        if (tgt_lun.ds_id is None) or (src_lun.ds_id \u003d\u003d tgt_lun.ds_id):"},{"line_number":459,"context_line":"            # It is a preferred practice to locate the FlashCopy target"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_c522bca2","line":456,"updated":"2017-01-17 22:18:45.000000000","message":"\u0027not\u0027 -\u003e \u0027does not\u0027","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                       \u0027to the Source volume in size.\u0027))"},{"line_number":454,"context_line":"        self._ensure_vol_not_fc_target(src_lun.ds_id)"},{"line_number":455,"context_line":"        # volume ID of src_lun and tgt_lun will be the same one if tgt_lun"},{"line_number":456,"context_line":"        # is image-volume, because _clone_image_volume in manager.py not"},{"line_number":457,"context_line":"        # pop the provider_location."},{"line_number":458,"context_line":"        if (tgt_lun.ds_id is None) or (src_lun.ds_id \u003d\u003d tgt_lun.ds_id):"},{"line_number":459,"context_line":"            # It is a preferred practice to locate the FlashCopy target"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_f5059113","line":456,"in_reply_to":"7a3c09a3_c522bca2","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        except restclient.APIException as e:"},{"line_number":741,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":742,"context_line":"            msg \u003d _(\u0027Failed to create group snapshot.\u0027)"},{"line_number":743,"context_line":"            LOG.exception(msg, e)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        for tgt_lun in tgt_luns:"},{"line_number":746,"context_line":"            snapshot_model_update \u003d tgt_lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_e570980d","line":743,"range":{"start_line":743,"start_character":31,"end_line":743,"end_character":32},"updated":"2017-01-17 22:23:01.000000000","message":"Remove the exception object and just put the msg value right in the log call.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        except restclient.APIException as e:"},{"line_number":741,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":742,"context_line":"            msg \u003d _(\u0027Failed to create group snapshot.\u0027)"},{"line_number":743,"context_line":"            LOG.exception(msg, e)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        for tgt_lun in tgt_luns:"},{"line_number":746,"context_line":"            snapshot_model_update \u003d tgt_lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9028db34","line":743,"range":{"start_line":743,"start_character":31,"end_line":743,"end_character":32},"in_reply_to":"7a3c09a3_e570980d","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":769,"context_line":"            except restclient.APIException as e:"},{"line_number":770,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":771,"context_line":"                msg \u003d _LE(\"Failed to delete cg snapshots. Exception\u003d %s\")"},{"line_number":772,"context_line":"                LOG.error(msg, e)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        for snapshot in snapshots:"},{"line_number":775,"context_line":"            snapshots_model_update.append({"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_25770003","line":772,"updated":"2017-01-17 22:23:01.000000000","message":"Same.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":769,"context_line":"            except restclient.APIException as e:"},{"line_number":770,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":771,"context_line":"                msg \u003d _LE(\"Failed to delete cg snapshots. Exception\u003d %s\")"},{"line_number":772,"context_line":"                LOG.error(msg, e)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"        for snapshot in snapshots:"},{"line_number":775,"context_line":"            snapshots_model_update.append({"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7040cf07","line":772,"in_reply_to":"7a3c09a3_25770003","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            src_luns \u003d [Lun(source_vol)"},{"line_number":819,"context_line":"                        for source_vol in sorted_source_vols]"},{"line_number":820,"context_line":"        else:"},{"line_number":821,"context_line":"            msg \u003d _LE(\"_create_group_from_src supports a group snapshot \""},{"line_number":822,"context_line":"                      \"source or a group source, other sources can not \""},{"line_number":823,"context_line":"                      \"be used.\")"},{"line_number":824,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_8566f44e","line":821,"range":{"start_line":821,"start_character":18,"end_line":821,"end_character":21},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            src_luns \u003d [Lun(source_vol)"},{"line_number":819,"context_line":"                        for source_vol in sorted_source_vols]"},{"line_number":820,"context_line":"        else:"},{"line_number":821,"context_line":"            msg \u003d _LE(\"_create_group_from_src supports a group snapshot \""},{"line_number":822,"context_line":"                      \"source or a group source, other sources can not \""},{"line_number":823,"context_line":"                      \"be used.\")"},{"line_number":824,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_700e0fe6","line":821,"range":{"start_line":821,"start_character":18,"end_line":821,"end_character":21},"in_reply_to":"7a3c09a3_8566f44e","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        except restclient.APIException as e:"},{"line_number":832,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":833,"context_line":"            msg \u003d _(\"Failed to create group from group snapshot.\")"},{"line_number":834,"context_line":"            LOG.exception(msg, e)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"        for tgt_lun in tgt_luns:"},{"line_number":837,"context_line":"            volume_model_update \u003d tgt_lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_c55c7c7f","line":834,"range":{"start_line":834,"start_character":31,"end_line":834,"end_character":32},"updated":"2017-01-17 22:23:01.000000000","message":"Remove","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        except restclient.APIException as e:"},{"line_number":832,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":833,"context_line":"            msg \u003d _(\"Failed to create group from group snapshot.\")"},{"line_number":834,"context_line":"            LOG.exception(msg, e)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"        for tgt_lun in tgt_luns:"},{"line_number":837,"context_line":"            volume_model_update \u003d tgt_lun.get_volume_update()"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_b0fcf7b8","line":834,"range":{"start_line":834,"start_character":31,"end_line":834,"end_character":32},"in_reply_to":"7a3c09a3_c55c7c7f","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        help\u003d\u0027Set to zLinux if your OpenStack version is prior to \u0027"},{"line_number":114,"context_line":"             \u0027Liberty and you\\\u0027re connecting to zLinux systems. \u0027"},{"line_number":115,"context_line":"             \u0027Otherwise set to auto. Valid values for this parameter \u0027"},{"line_number":116,"context_line":"             \u0027are: %s.\u0027 % str(helper.VALID_HOST_TYPES)[1:-1])"},{"line_number":117,"context_line":"]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_e125ae5c","line":116,"range":{"start_line":116,"start_character":26,"end_line":116,"end_character":29},"updated":"2017-01-19 03:29:33.000000000","message":"str() -\u003e six.text_type()","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        help\u003d\u0027Set to zLinux if your OpenStack version is prior to \u0027"},{"line_number":114,"context_line":"             \u0027Liberty and you\\\u0027re connecting to zLinux systems. \u0027"},{"line_number":115,"context_line":"             \u0027Otherwise set to auto. Valid values for this parameter \u0027"},{"line_number":116,"context_line":"             \u0027are: %s.\u0027 % str(helper.VALID_HOST_TYPES)[1:-1])"},{"line_number":117,"context_line":"]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_ca1199b1","line":116,"range":{"start_line":116,"start_character":26,"end_line":116,"end_character":29},"in_reply_to":"5a3905b3_e125ae5c","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    def __init__(self, group):"},{"line_number":289,"context_line":"        gid \u003d group.get(\u0027group_type_id\u0027)"},{"line_number":290,"context_line":"        specs \u003d group_types.get_group_type_specs(gid) if gid else {}"},{"line_number":291,"context_line":"        self.type_cg_replication \u003d specs.get("},{"line_number":292,"context_line":"            \u0027consistent_group_replication_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":293,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_replication_enabled\u0027]"},{"line_number":294,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":295,"context_line":"        self.type_replication \u003d specs.get("},{"line_number":296,"context_line":"            \u0027group_replication_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":297,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027group_replication_enabled\u0027]"},{"line_number":298,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":299,"context_line":"        self.type_cg_snapshot \u003d specs.get("},{"line_number":300,"context_line":"            \u0027consistent_group_snapshot_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":301,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_snapshot_enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_01b0faf3","line":298,"range":{"start_line":291,"start_character":0,"end_line":298,"end_character":45},"updated":"2017-01-19 03:29:33.000000000","message":"Cinder does not have group replication yet.  We will be working on that in Pike.  So you should not have these in your driver yet.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    def __init__(self, group):"},{"line_number":289,"context_line":"        gid \u003d group.get(\u0027group_type_id\u0027)"},{"line_number":290,"context_line":"        specs \u003d group_types.get_group_type_specs(gid) if gid else {}"},{"line_number":291,"context_line":"        self.type_cg_replication \u003d specs.get("},{"line_number":292,"context_line":"            \u0027consistent_group_replication_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":293,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_replication_enabled\u0027]"},{"line_number":294,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":295,"context_line":"        self.type_replication \u003d specs.get("},{"line_number":296,"context_line":"            \u0027group_replication_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":297,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027group_replication_enabled\u0027]"},{"line_number":298,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":299,"context_line":"        self.type_cg_snapshot \u003d specs.get("},{"line_number":300,"context_line":"            \u0027consistent_group_snapshot_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":301,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_snapshot_enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_aa744dfd","line":298,"range":{"start_line":291,"start_character":0,"end_line":298,"end_character":45},"in_reply_to":"5a3905b3_01b0faf3","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_snapshot_enabled\u0027]"},{"line_number":302,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":303,"context_line":"        self.type_snapshot \u003d specs.get("},{"line_number":304,"context_line":"            \u0027group_snapshot_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":305,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027group_snapshot_enabled\u0027]"},{"line_number":306,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_819cea6a","line":304,"range":{"start_line":304,"start_character":13,"end_line":304,"end_character":35},"updated":"2017-01-19 03:29:33.000000000","message":"This is actually not needed.  I know I had it in the spec, but because every driver can create a group snapshot, this is not really differentiating anything.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027consistent_group_snapshot_enabled\u0027]"},{"line_number":302,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":303,"context_line":"        self.type_snapshot \u003d specs.get("},{"line_number":304,"context_line":"            \u0027group_snapshot_enabled\u0027, \u0027\u003cis\u003e %s\u0027 %"},{"line_number":305,"context_line":"            EXTRA_SPECS_DEFAULTS[\u0027group_snapshot_enabled\u0027]"},{"line_number":306,"context_line":"        ).upper() \u003d\u003d strings.METADATA_IS_TRUE"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_4adbe9ed","line":304,"range":{"start_line":304,"start_character":13,"end_line":304,"end_character":35},"in_reply_to":"5a3905b3_819cea6a","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                sum(p[\u0027cap\u0027] for p in storage_pools.values())),"},{"line_number":397,"context_line":"            \"free_capacity_gb\": self._b2gb("},{"line_number":398,"context_line":"                sum(p[\u0027capavail\u0027] for p in storage_pools.values())),"},{"line_number":399,"context_line":"            \"reserved_percentage\": 0,"},{"line_number":400,"context_line":"            \"consistencygroup_support\": True,"},{"line_number":401,"context_line":"            \"consistent_group_snapshot_enabled\": True,"},{"line_number":402,"context_line":"            \"group_snapshot_enabled\": True,"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_61f29e9c","line":399,"range":{"start_line":399,"start_character":35,"end_line":399,"end_character":36},"updated":"2017-01-19 03:29:33.000000000","message":"Should read from cinder.conf rather than hard code it to 0:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L264","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                sum(p[\u0027cap\u0027] for p in storage_pools.values())),"},{"line_number":397,"context_line":"            \"free_capacity_gb\": self._b2gb("},{"line_number":398,"context_line":"                sum(p[\u0027capavail\u0027] for p in storage_pools.values())),"},{"line_number":399,"context_line":"            \"reserved_percentage\": 0,"},{"line_number":400,"context_line":"            \"consistencygroup_support\": True,"},{"line_number":401,"context_line":"            \"consistent_group_snapshot_enabled\": True,"},{"line_number":402,"context_line":"            \"group_snapshot_enabled\": True,"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_8a9311fa","line":399,"range":{"start_line":399,"start_character":35,"end_line":399,"end_character":36},"in_reply_to":"5a3905b3_61f29e9c","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            \"reserved_percentage\": 0,"},{"line_number":400,"context_line":"            \"consistencygroup_support\": True,"},{"line_number":401,"context_line":"            \"consistent_group_snapshot_enabled\": True,"},{"line_number":402,"context_line":"            \"group_snapshot_enabled\": True,"},{"line_number":403,"context_line":"            \"multiattach\": True"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_81730a4d","line":402,"range":{"start_line":402,"start_character":12,"end_line":402,"end_character":43},"updated":"2017-01-19 03:29:33.000000000","message":"Remove this.  This is not necessary.  I\u0027ll update my spec to remove this one.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            \"reserved_percentage\": 0,"},{"line_number":400,"context_line":"            \"consistencygroup_support\": True,"},{"line_number":401,"context_line":"            \"consistent_group_snapshot_enabled\": True,"},{"line_number":402,"context_line":"            \"group_snapshot_enabled\": True,"},{"line_number":403,"context_line":"            \"multiattach\": True"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_aa90cded","line":402,"range":{"start_line":402,"start_character":12,"end_line":402,"end_character":43},"in_reply_to":"5a3905b3_81730a4d","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        if self._replication_enabled:"},{"line_number":407,"context_line":"            stats[\u0027replication_enabled\u0027] \u003d self._replication_enabled"},{"line_number":408,"context_line":"            stats[\u0027group_replication_enabled\u0027] \u003d True"},{"line_number":409,"context_line":"            stats[\u0027consistent_group_replication_enabled\u0027] \u003d True"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.meta[\u0027stat\u0027] \u003d stats"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_c193524e","line":409,"range":{"start_line":408,"start_character":0,"end_line":409,"end_character":64},"updated":"2017-01-19 03:29:33.000000000","message":"We don\u0027t have group replication support in Cinder yet.","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        if self._replication_enabled:"},{"line_number":407,"context_line":"            stats[\u0027replication_enabled\u0027] \u003d self._replication_enabled"},{"line_number":408,"context_line":"            stats[\u0027group_replication_enabled\u0027] \u003d True"},{"line_number":409,"context_line":"            stats[\u0027consistent_group_replication_enabled\u0027] \u003d True"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.meta[\u0027stat\u0027] \u003d stats"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_eac015e3","line":409,"range":{"start_line":408,"start_character":0,"end_line":409,"end_character":64},"in_reply_to":"5a3905b3_c193524e","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"bf7891a36c30b8bd830c1a0ff0a9d10ac1982896","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                    self._active_backend_id \u003d \"\""},{"line_number":981,"context_line":"                    self._helper \u003d self._replication._source_helper"},{"line_number":982,"context_line":"            except restclient.APIException as e:"},{"line_number":983,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":984,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":985,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":986,"context_line":"                raise exception.UnableToFailOver(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_41ce825b","line":983,"range":{"start_line":983,"start_character":23,"end_line":983,"end_character":26},"updated":"2017-01-19 03:29:33.000000000","message":"This should be just _(\"xxxx\")","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                    self._active_backend_id \u003d \"\""},{"line_number":981,"context_line":"                    self._helper \u003d self._replication._source_helper"},{"line_number":982,"context_line":"            except restclient.APIException as e:"},{"line_number":983,"context_line":"                msg \u003d (_LE(\"Unable to failover host to %(id)s. \""},{"line_number":984,"context_line":"                           \"Exception\u003d %(ex)s\")"},{"line_number":985,"context_line":"                       % {\u0027id\u0027: secondary_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":986,"context_line":"                raise exception.UnableToFailOver(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_0a6d6104","line":983,"range":{"start_line":983,"start_character":23,"end_line":983,"end_character":26},"in_reply_to":"5a3905b3_41ce825b","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        # should probably check volume[\u0027status\u0027] in [\u0027available\u0027, \u0027in-use\u0027],"},{"line_number":560,"context_line":"        # especially for flashcopy"},{"line_number":561,"context_line":"        stats \u003d self.meta[\u0027stat\u0027]"},{"line_number":562,"context_line":"        self._assert("},{"line_number":563,"context_line":"            backend[\u0027capabilities\u0027][\u0027vendor_name\u0027] \u003d\u003d stats[\u0027vendor_name\u0027] and"},{"line_number":564,"context_line":"            backend[\u0027capabilities\u0027][\u0027serial_number\u0027] \u003d\u003d stats[\u0027serial_number\u0027]"},{"line_number":565,"context_line":"        )"},{"line_number":566,"context_line":"        new_pools \u003d self._helper.get_pools("},{"line_number":567,"context_line":"            backend[\u0027capabilities\u0027][\u0027extent_pools\u0027])"},{"line_number":568,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_7d856705","line":565,"range":{"start_line":562,"start_character":0,"end_line":565,"end_character":9},"updated":"2017-01-21 04:23:43.000000000","message":"Why isn\u0027t there a message in this case?","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        # should probably check volume[\u0027status\u0027] in [\u0027available\u0027, \u0027in-use\u0027],"},{"line_number":560,"context_line":"        # especially for flashcopy"},{"line_number":561,"context_line":"        stats \u003d self.meta[\u0027stat\u0027]"},{"line_number":562,"context_line":"        self._assert("},{"line_number":563,"context_line":"            backend[\u0027capabilities\u0027][\u0027vendor_name\u0027] \u003d\u003d stats[\u0027vendor_name\u0027] and"},{"line_number":564,"context_line":"            backend[\u0027capabilities\u0027][\u0027serial_number\u0027] \u003d\u003d stats[\u0027serial_number\u0027]"},{"line_number":565,"context_line":"        )"},{"line_number":566,"context_line":"        new_pools \u003d self._helper.get_pools("},{"line_number":567,"context_line":"            backend[\u0027capabilities\u0027][\u0027extent_pools\u0027])"},{"line_number":568,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_c63cc3ca","line":565,"range":{"start_line":562,"start_character":0,"end_line":565,"end_character":9},"in_reply_to":"5a3905b3_7d856705","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                self._helper.delete_lun(snapshots)"},{"line_number":752,"context_line":"            except restclient.APIException as e:"},{"line_number":753,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":754,"context_line":"                LOG.error(_LE(\"Failed to delete cg snapshots. Error: %(err)s\"),"},{"line_number":755,"context_line":"                          {\u0027err\u0027: e})"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_bd7b4f27","line":754,"range":{"start_line":754,"start_character":48,"end_line":754,"end_character":60},"updated":"2017-01-21 04:23:43.000000000","message":"group snapshot","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                self._helper.delete_lun(snapshots)"},{"line_number":752,"context_line":"            except restclient.APIException as e:"},{"line_number":753,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR_DELETING"},{"line_number":754,"context_line":"                LOG.error(_LE(\"Failed to delete cg snapshots. Error: %(err)s\"),"},{"line_number":755,"context_line":"                          {\u0027err\u0027: e})"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_265e6712","line":754,"range":{"start_line":754,"start_character":48,"end_line":754,"end_character":60},"in_reply_to":"5a3905b3_bd7b4f27","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_replication.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_helper as helper"},{"line_number":25,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_restclient as restclient"},{"line_number":26,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from oslo_utils import excutils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_4c6c63d0","line":28,"range":{"start_line":27,"start_character":7,"end_line":28,"end_character":12},"updated":"2016-12-14 20:11:29.000000000","message":"Move up to third party imports.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_helper as helper"},{"line_number":25,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import ds8k_restclient as restclient"},{"line_number":26,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from oslo_utils import excutils"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_876188d5","line":28,"range":{"start_line":27,"start_character":7,"end_line":28,"end_character":12},"in_reply_to":"1a6eadb0_4c6c63d0","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        ports \u003d self._source.get_physical_links("},{"line_number":50,"context_line":"            self._target.backend[\u0027storage_wwnn\u0027])"},{"line_number":51,"context_line":"        if not ports:"},{"line_number":52,"context_line":"            msg \u003d (_LE(\"DS8K %(tgt)s is not connected to the DS8K %(src)s!\")"},{"line_number":53,"context_line":"                   % {\u0027tgt\u0027: self._target.backend[\u0027storage_wwnn\u0027],"},{"line_number":54,"context_line":"                      \u0027src\u0027: self._source.backend[\u0027storage_wwnn\u0027]})"},{"line_number":55,"context_line":"            raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ac67b7e7","line":52,"range":{"start_line":52,"start_character":19,"end_line":52,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        ports \u003d self._source.get_physical_links("},{"line_number":50,"context_line":"            self._target.backend[\u0027storage_wwnn\u0027])"},{"line_number":51,"context_line":"        if not ports:"},{"line_number":52,"context_line":"            msg \u003d (_LE(\"DS8K %(tgt)s is not connected to the DS8K %(src)s!\")"},{"line_number":53,"context_line":"                   % {\u0027tgt\u0027: self._target.backend[\u0027storage_wwnn\u0027],"},{"line_number":54,"context_line":"                      \u0027src\u0027: self._source.backend[\u0027storage_wwnn\u0027]})"},{"line_number":55,"context_line":"            raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_878fc873","line":52,"range":{"start_line":52,"start_character":19,"end_line":52,"end_character":22},"in_reply_to":"1a6eadb0_ac67b7e7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            msg \u003d (_LE(\"DS8K %(tgt)s is not connected to the DS8K %(src)s!\")"},{"line_number":53,"context_line":"                   % {\u0027tgt\u0027: self._target.backend[\u0027storage_wwnn\u0027],"},{"line_number":54,"context_line":"                      \u0027src\u0027: self._source.backend[\u0027storage_wwnn\u0027]})"},{"line_number":55,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        pairs \u003d [{"},{"line_number":58,"context_line":"            \u0027source_port_id\u0027: p[\u0027source_port_id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b457b9c8","line":55,"updated":"2016-12-16 03:19:36.000000000","message":"CinderException doesn\u0027t have a \"data\" parameter.\n\nexception.CinderException(message\u003dmsg)  or  exception.CinderException(msg)","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            msg \u003d (_LE(\"DS8K %(tgt)s is not connected to the DS8K %(src)s!\")"},{"line_number":53,"context_line":"                   % {\u0027tgt\u0027: self._target.backend[\u0027storage_wwnn\u0027],"},{"line_number":54,"context_line":"                      \u0027src\u0027: self._source.backend[\u0027storage_wwnn\u0027]})"},{"line_number":55,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        pairs \u003d [{"},{"line_number":58,"context_line":"            \u0027source_port_id\u0027: p[\u0027source_port_id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e7eebc20","line":55,"in_reply_to":"1a6eadb0_b457b9c8","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                    invalid_pair \u003d \"%s-%s\" % (pair[\u0027source_port_id\u0027],"},{"line_number":76,"context_line":"                                              pair[\u0027target_port_id\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"                    msg \u003d (_LE(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":79,"context_line":"                               \"pair(s) are: %(valid)s\")"},{"line_number":80,"context_line":"                           % {\u0027invalid\u0027: invalid_pair, \u0027valid\u0027: valid_pairs})"},{"line_number":81,"context_line":"                    raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ec5d2f16","line":78,"range":{"start_line":78,"start_character":27,"end_line":78,"end_character":30},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                    invalid_pair \u003d \"%s-%s\" % (pair[\u0027source_port_id\u0027],"},{"line_number":76,"context_line":"                                              pair[\u0027target_port_id\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"                    msg \u003d (_LE(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":79,"context_line":"                               \"pair(s) are: %(valid)s\")"},{"line_number":80,"context_line":"                           % {\u0027invalid\u0027: invalid_pair, \u0027valid\u0027: valid_pairs})"},{"line_number":81,"context_line":"                    raise exception.CinderException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_87bd0804","line":78,"range":{"start_line":78,"start_character":27,"end_line":78,"end_character":30},"in_reply_to":"1a6eadb0_ec5d2f16","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    msg \u003d (_LE(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":79,"context_line":"                               \"pair(s) are: %(valid)s\")"},{"line_number":80,"context_line":"                           % {\u0027invalid\u0027: invalid_pair, \u0027valid\u0027: valid_pairs})"},{"line_number":81,"context_line":"                    raise exception.CinderException(data\u003dmsg)"},{"line_number":82,"context_line":"        self._source.backend[\u0027port_pairs\u0027] \u003d [{"},{"line_number":83,"context_line":"            \u0027source_port_id\u0027: p[\u0027target_port_id\u0027],"},{"line_number":84,"context_line":"            \u0027target_port_id\u0027: p[\u0027source_port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3403a9b9","line":81,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    msg \u003d (_LE(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":79,"context_line":"                               \"pair(s) are: %(valid)s\")"},{"line_number":80,"context_line":"                           % {\u0027invalid\u0027: invalid_pair, \u0027valid\u0027: valid_pairs})"},{"line_number":81,"context_line":"                    raise exception.CinderException(data\u003dmsg)"},{"line_number":82,"context_line":"        self._source.backend[\u0027port_pairs\u0027] \u003d [{"},{"line_number":83,"context_line":"            \u0027source_port_id\u0027: p[\u0027target_port_id\u0027],"},{"line_number":84,"context_line":"            \u0027target_port_id\u0027: p[\u0027source_port_id\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e73cfc94","line":81,"in_reply_to":"1a6eadb0_3403a9b9","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # check the state of the pprc path"},{"line_number":253,"context_line":"        LOG.debug(\"Checking the state of the new PPRC path.\")"},{"line_number":254,"context_line":"        for retry in range(4):"},{"line_number":255,"context_line":"            time.sleep(2)"},{"line_number":256,"context_line":"            if self._is_pprc_paths_healthy(pid) \u003d\u003d PPRC_PATH_HEALTHY:"},{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":"            if retry \u003d\u003d 3:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_f4ea11da","line":255,"updated":"2016-12-16 03:19:36.000000000","message":"Suggest use eventlet.sleep","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # check the state of the pprc path"},{"line_number":253,"context_line":"        LOG.debug(\"Checking the state of the new PPRC path.\")"},{"line_number":254,"context_line":"        for retry in range(4):"},{"line_number":255,"context_line":"            time.sleep(2)"},{"line_number":256,"context_line":"            if self._is_pprc_paths_healthy(pid) \u003d\u003d PPRC_PATH_HEALTHY:"},{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":"            if retry \u003d\u003d 3:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c760e0a7","line":255,"in_reply_to":"1a6eadb0_f4ea11da","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":"            if retry \u003d\u003d 3:"},{"line_number":259,"context_line":"                self._source.delete_pprc_path(pid)"},{"line_number":260,"context_line":"                msg \u003d (_LE(\"Fail to create PPRC path %(src)s:%(tgt)s.\")"},{"line_number":261,"context_line":"                       % {\u0027src\u0027: src_lss, \u0027tgt\u0027: tgt_lss})"},{"line_number":262,"context_line":"                raise restclient.APIException(data\u003dmsg)"},{"line_number":263,"context_line":"        LOG.debug(\"Create the new PPRC path successfully.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_54eca5f2","line":260,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                break"},{"line_number":258,"context_line":"            if retry \u003d\u003d 3:"},{"line_number":259,"context_line":"                self._source.delete_pprc_path(pid)"},{"line_number":260,"context_line":"                msg \u003d (_LE(\"Fail to create PPRC path %(src)s:%(tgt)s.\")"},{"line_number":261,"context_line":"                       % {\u0027src\u0027: src_lss, \u0027tgt\u0027: tgt_lss})"},{"line_number":262,"context_line":"                raise restclient.APIException(data\u003dmsg)"},{"line_number":263,"context_line":"        LOG.debug(\"Create the new PPRC path successfully.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e7631caf","line":260,"in_reply_to":"1a6eadb0_54eca5f2","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                continue"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"            vol_pairs.append({"},{"line_number":322,"context_line":"                \u0027source_volume\u0027: str(target_vol_id),"},{"line_number":323,"context_line":"                \u0027source_system_id\u0027: str(self._target.backend[\u0027storage_unit\u0027]),"},{"line_number":324,"context_line":"                \u0027target_volume\u0027: str(lun.ds_id),"},{"line_number":325,"context_line":"                \u0027target_system_id\u0027: str(self._source.backend[\u0027storage_unit\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_34c80974","line":322,"updated":"2016-12-16 03:19:36.000000000","message":"str -\u003e six.text.type","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                continue"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"            vol_pairs.append({"},{"line_number":322,"context_line":"                \u0027source_volume\u0027: str(target_vol_id),"},{"line_number":323,"context_line":"                \u0027source_system_id\u0027: str(self._target.backend[\u0027storage_unit\u0027]),"},{"line_number":324,"context_line":"                \u0027target_volume\u0027: str(lun.ds_id),"},{"line_number":325,"context_line":"                \u0027target_system_id\u0027: str(self._source.backend[\u0027storage_unit\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_47de90dd","line":322,"in_reply_to":"1a6eadb0_34c80974","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                \u0027source_volume\u0027: str(target_vol_id),"},{"line_number":323,"context_line":"                \u0027source_system_id\u0027: str(self._target.backend[\u0027storage_unit\u0027]),"},{"line_number":324,"context_line":"                \u0027target_volume\u0027: str(lun.ds_id),"},{"line_number":325,"context_line":"                \u0027target_system_id\u0027: str(self._source.backend[\u0027storage_unit\u0027])"},{"line_number":326,"context_line":"            })"},{"line_number":327,"context_line":"            target_vol_ids.append(target_vol_id)"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_d4ad159c","line":325,"updated":"2016-12-16 03:19:36.000000000","message":"six.text_type for lines 323-325","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                \u0027source_volume\u0027: str(target_vol_id),"},{"line_number":323,"context_line":"                \u0027source_system_id\u0027: str(self._target.backend[\u0027storage_unit\u0027]),"},{"line_number":324,"context_line":"                \u0027target_volume\u0027: str(lun.ds_id),"},{"line_number":325,"context_line":"                \u0027target_system_id\u0027: str(self._source.backend[\u0027storage_unit\u0027])"},{"line_number":326,"context_line":"            })"},{"line_number":327,"context_line":"            target_vol_ids.append(target_vol_id)"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_67d9ccf2","line":325,"in_reply_to":"1a6eadb0_d4ad159c","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                       \"%(primary)s, but in secondary backend it is \""},{"line_number":400,"context_line":"                       \"%(secondary)s\") %"},{"line_number":401,"context_line":"                   {\u0027primary\u0027: src_conn_type, \u0027secondary\u0027: tgt_conn_type})"},{"line_number":402,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":403,"context_line":"        # PPRC can not copy from ESE volume to standard volume or vice versus."},{"line_number":404,"context_line":"        if src_conn_type \u003d\u003d storage.XIV_CONNECTION_TYPE_FC_ECKD:"},{"line_number":405,"context_line":"            src_thin \u003d self._source_helper.get_thin_provision()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_549ae56e","line":402,"updated":"2016-12-16 03:19:36.000000000","message":"See previous comment.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                       \"%(primary)s, but in secondary backend it is \""},{"line_number":400,"context_line":"                       \"%(secondary)s\") %"},{"line_number":401,"context_line":"                   {\u0027primary\u0027: src_conn_type, \u0027secondary\u0027: tgt_conn_type})"},{"line_number":402,"context_line":"            raise exception.CinderException(data\u003dmsg)"},{"line_number":403,"context_line":"        # PPRC can not copy from ESE volume to standard volume or vice versus."},{"line_number":404,"context_line":"        if src_conn_type \u003d\u003d storage.XIV_CONNECTION_TYPE_FC_ECKD:"},{"line_number":405,"context_line":"            src_thin \u003d self._source_helper.get_thin_provision()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e7f31c71","line":402,"in_reply_to":"1a6eadb0_549ae56e","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        state, lun.lss_pair \u003d ("},{"line_number":450,"context_line":"            self._mm_manager.find_available_pprc_path(lun.ds_id[0:2]))"},{"line_number":451,"context_line":"        if state \u003d\u003d PPRC_PATH_UNHEALTHY:"},{"line_number":452,"context_line":"            msg \u003d (_LE(\"The path(s) for volume %(name)s isn\u0027t available \""},{"line_number":453,"context_line":"                       \"any more, please make sure the state of the path(s) \""},{"line_number":454,"context_line":"                       \"which source LSS is %(lss)s is success.\")"},{"line_number":455,"context_line":"                   % {\u0027name\u0027: lun.cinder_name, \u0027lss\u0027: lun.ds_id[0:2]})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ccb79338","line":452,"range":{"start_line":452,"start_character":19,"end_line":452,"end_character":22},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        state, lun.lss_pair \u003d ("},{"line_number":450,"context_line":"            self._mm_manager.find_available_pprc_path(lun.ds_id[0:2]))"},{"line_number":451,"context_line":"        if state \u003d\u003d PPRC_PATH_UNHEALTHY:"},{"line_number":452,"context_line":"            msg \u003d (_LE(\"The path(s) for volume %(name)s isn\u0027t available \""},{"line_number":453,"context_line":"                       \"any more, please make sure the state of the path(s) \""},{"line_number":454,"context_line":"                       \"which source LSS is %(lss)s is success.\")"},{"line_number":455,"context_line":"                   % {\u0027name\u0027: lun.cinder_name, \u0027lss\u0027: lun.ds_id[0:2]})"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c79700ea","line":452,"range":{"start_line":452,"start_character":19,"end_line":452,"end_character":22},"in_reply_to":"1a6eadb0_ccb79338","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            lss_pair \u003d {\u0027source\u0027: (pid, lun.ds_id[0:2])}"},{"line_number":460,"context_line":"            lss_pair.update(self.find_new_lss_for_target())"},{"line_number":461,"context_line":"            lun.lss_pair \u003d lss_pair"},{"line_number":462,"context_line":"        msg \u003d _LI(\"Begin to create replication volume, lss_pair is %s.\")"},{"line_number":463,"context_line":"        LOG.debug(msg, lun.lss_pair)"},{"line_number":464,"context_line":"        lun \u003d self.create_replica(lun, False)"},{"line_number":465,"context_line":"        return lun"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_2c89e775","line":462,"range":{"start_line":462,"start_character":14,"end_line":462,"end_character":17},"updated":"2016-12-14 20:11:29.000000000","message":"Debug should not have translation.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            lss_pair \u003d {\u0027source\u0027: (pid, lun.ds_id[0:2])}"},{"line_number":460,"context_line":"            lss_pair.update(self.find_new_lss_for_target())"},{"line_number":461,"context_line":"            lun.lss_pair \u003d lss_pair"},{"line_number":462,"context_line":"        msg \u003d _LI(\"Begin to create replication volume, lss_pair is %s.\")"},{"line_number":463,"context_line":"        LOG.debug(msg, lun.lss_pair)"},{"line_number":464,"context_line":"        lun \u003d self.create_replica(lun, False)"},{"line_number":465,"context_line":"        return lun"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e7c15ce5","line":462,"range":{"start_line":462,"start_character":14,"end_line":462,"end_character":17},"in_reply_to":"1a6eadb0_2c89e775","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                self._mm_manager.delete_pprc_pairs(lun)"},{"line_number":490,"context_line":"                self._delete_replica(lun)"},{"line_number":491,"context_line":"            except restclient.APIException as e:"},{"line_number":492,"context_line":"                msg \u003d (_LE(\u0027Fail to delete the target volume for volume \u0027"},{"line_number":493,"context_line":"                           \u0027%(volume)s, Exception: %(ex)s.\u0027)"},{"line_number":494,"context_line":"                       % {\u0027volume\u0027: lun.ds_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":495,"context_line":"                raise exception.CinderException(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8c983bc2","line":492,"range":{"start_line":492,"start_character":23,"end_line":492,"end_character":26},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                self._mm_manager.delete_pprc_pairs(lun)"},{"line_number":490,"context_line":"                self._delete_replica(lun)"},{"line_number":491,"context_line":"            except restclient.APIException as e:"},{"line_number":492,"context_line":"                msg \u003d (_LE(\u0027Fail to delete the target volume for volume \u0027"},{"line_number":493,"context_line":"                           \u0027%(volume)s, Exception: %(ex)s.\u0027)"},{"line_number":494,"context_line":"                       % {\u0027volume\u0027: lun.ds_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":495,"context_line":"                raise exception.CinderException(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_47b3f097","line":492,"range":{"start_line":492,"start_character":23,"end_line":492,"end_character":26},"in_reply_to":"1a6eadb0_8c983bc2","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":537,"context_line":"            try:"},{"line_number":538,"context_line":"                self._target_helper.update_client()"},{"line_number":539,"context_line":"            except restclient.APIException:"},{"line_number":540,"context_line":"                msg \u003d _LE(\"Can not connect to the primary backend, \""},{"line_number":541,"context_line":"                          \"please make sure it is back.\")"},{"line_number":542,"context_line":"                LOG.error(msg)"},{"line_number":543,"context_line":"                raise exception.UnableToFailOver(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8c74bb68","line":540,"range":{"start_line":540,"start_character":22,"end_line":540,"end_character":25},"updated":"2016-12-14 20:11:29.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":537,"context_line":"            try:"},{"line_number":538,"context_line":"                self._target_helper.update_client()"},{"line_number":539,"context_line":"            except restclient.APIException:"},{"line_number":540,"context_line":"                msg \u003d _LE(\"Can not connect to the primary backend, \""},{"line_number":541,"context_line":"                          \"please make sure it is back.\")"},{"line_number":542,"context_line":"                LOG.error(msg)"},{"line_number":543,"context_line":"                raise exception.UnableToFailOver(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_87a98826","line":540,"range":{"start_line":540,"start_character":22,"end_line":540,"end_character":25},"in_reply_to":"1a6eadb0_8c74bb68","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                msg \u003d _LE(\"Can not connect to the primary backend, \""},{"line_number":541,"context_line":"                          \"please make sure it is back.\")"},{"line_number":542,"context_line":"                LOG.error(msg)"},{"line_number":543,"context_line":"                raise exception.UnableToFailOver(message\u003dmsg)"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        LOG.debug(\"Failback starts, backend id is %s.\", backend_id)"},{"line_number":546,"context_line":"        for lun in luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_d49b5564","line":543,"updated":"2016-12-16 03:19:36.000000000","message":"reason\u003dmsg","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                msg \u003d _LE(\"Can not connect to the primary backend, \""},{"line_number":541,"context_line":"                          \"please make sure it is back.\")"},{"line_number":542,"context_line":"                LOG.error(msg)"},{"line_number":543,"context_line":"                raise exception.UnableToFailOver(message\u003dmsg)"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        LOG.debug(\"Failback starts, backend id is %s.\", backend_id)"},{"line_number":546,"context_line":"        for lun in luns:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e7687cf7","line":543,"in_reply_to":"1a6eadb0_d49b5564","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        self._source.delete_pprc_pair(lun.ds_id)"},{"line_number":307,"context_line":"        if self.is_target_alive():"},{"line_number":308,"context_line":"            replica \u003d sorted(lun.replication_driver_data.values())[0]"},{"line_number":309,"context_line":"            self._target.delete_pprc_pair(replica[\u0027vol_hex_id\u0027])"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def do_pprc_failover(self, luns, backend_id):"},{"line_number":312,"context_line":"        vol_pairs \u003d []"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_259f0060","line":309,"updated":"2017-01-17 22:18:45.000000000","message":"do we need six.text_type?","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        self._source.delete_pprc_pair(lun.ds_id)"},{"line_number":307,"context_line":"        if self.is_target_alive():"},{"line_number":308,"context_line":"            replica \u003d sorted(lun.replication_driver_data.values())[0]"},{"line_number":309,"context_line":"            self._target.delete_pprc_pair(replica[\u0027vol_hex_id\u0027])"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def do_pprc_failover(self, luns, backend_id):"},{"line_number":312,"context_line":"        vol_pairs \u003d []"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7a16ed4c","line":309,"in_reply_to":"7a3c09a3_259f0060","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                    invalid_pair \u003d \"%s-%s\" % (pair[\u0027source_port_id\u0027],"},{"line_number":77,"context_line":"                                              pair[\u0027target_port_id\u0027])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"                    msg \u003d (_(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":80,"context_line":"                             \"pair(s) are: %(valid)s\") %"},{"line_number":81,"context_line":"                           {\u0027invalid\u0027: invalid_pair,"},{"line_number":82,"context_line":"                            \u0027valid\u0027: valid_pairs})"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_e10bee7b","line":79,"range":{"start_line":79,"start_character":51,"end_line":79,"end_character":57},"updated":"2017-01-19 03:42:27.000000000","message":"typo here.  s/invaid/invalid","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                    invalid_pair \u003d \"%s-%s\" % (pair[\u0027source_port_id\u0027],"},{"line_number":77,"context_line":"                                              pair[\u0027target_port_id\u0027])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"                    msg \u003d (_(\"Invalid port pair: %(invaid)s, vaild port \""},{"line_number":80,"context_line":"                             \"pair(s) are: %(valid)s\") %"},{"line_number":81,"context_line":"                           {\u0027invalid\u0027: invalid_pair,"},{"line_number":82,"context_line":"                            \u0027valid\u0027: valid_pairs})"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_4a5e8946","line":79,"range":{"start_line":79,"start_character":51,"end_line":79,"end_character":57},"in_reply_to":"5a3905b3_e10bee7b","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        vol_pairs \u003d [{"},{"line_number":288,"context_line":"            \u0027source_volume\u0027: str(lun.ds_id),"},{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_a17806fa","line":290,"range":{"start_line":290,"start_character":16,"end_line":290,"end_character":19},"updated":"2017-01-19 03:42:27.000000000","message":"str() -\u003e six.text_type()","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        vol_pairs \u003d [{"},{"line_number":288,"context_line":"            \u0027source_volume\u0027: str(lun.ds_id),"},{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_6a2265bb","line":290,"range":{"start_line":290,"start_character":16,"end_line":290,"end_character":19},"in_reply_to":"5a3905b3_a17806fa","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            \u0027source_volume\u0027: str(lun.ds_id),"},{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"},{"line_number":294,"context_line":"        pairData \u003d {"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_e1820ec8","line":291,"range":{"start_line":291,"start_character":29,"end_line":291,"end_character":32},"updated":"2017-01-19 03:42:27.000000000","message":"same","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            \u0027source_volume\u0027: str(lun.ds_id),"},{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"},{"line_number":294,"context_line":"        pairData \u003d {"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_aa2c4dac","line":291,"range":{"start_line":291,"start_character":29,"end_line":291,"end_character":32},"in_reply_to":"5a3905b3_e1820ec8","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"},{"line_number":294,"context_line":"        pairData \u003d {"},{"line_number":295,"context_line":"            \"volume_pairs\": vol_pairs,"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_0188fae6","line":292,"range":{"start_line":292,"start_character":32,"end_line":292,"end_character":35},"updated":"2017-01-19 03:42:27.000000000","message":"same","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            \u0027source_system_id\u0027:"},{"line_number":290,"context_line":"                str(self._source.backend[\u0027storage_unit\u0027]),"},{"line_number":291,"context_line":"            \u0027target_volume\u0027: str(tgt_vol_id),"},{"line_number":292,"context_line":"            \u0027target_system_id\u0027: str(tgt_stg_id)"},{"line_number":293,"context_line":"        }]"},{"line_number":294,"context_line":"        pairData \u003d {"},{"line_number":295,"context_line":"            \"volume_pairs\": vol_pairs,"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_ca17d952","line":292,"range":{"start_line":292,"start_character":32,"end_line":292,"end_character":35},"in_reply_to":"5a3905b3_0188fae6","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        src_conn_type \u003d self._source_helper.get_connection_type()"},{"line_number":404,"context_line":"        tgt_conn_type \u003d self._target_helper.get_connection_type()"},{"line_number":405,"context_line":"        if src_conn_type !\u003d tgt_conn_type:"},{"line_number":406,"context_line":"            msg \u003d (_LE(\"The connection type in primary backend is \""},{"line_number":407,"context_line":"                       \"%(primary)s, but in secondary backend it is \""},{"line_number":408,"context_line":"                       \"%(secondary)s\") %"},{"line_number":409,"context_line":"                   {\u0027primary\u0027: src_conn_type, \u0027secondary\u0027: tgt_conn_type})"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_814b0ab0","line":406,"range":{"start_line":406,"start_character":19,"end_line":406,"end_character":22},"updated":"2017-01-19 03:42:27.000000000","message":"Should be just _(\"xxxx\")","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        src_conn_type \u003d self._source_helper.get_connection_type()"},{"line_number":404,"context_line":"        tgt_conn_type \u003d self._target_helper.get_connection_type()"},{"line_number":405,"context_line":"        if src_conn_type !\u003d tgt_conn_type:"},{"line_number":406,"context_line":"            msg \u003d (_LE(\"The connection type in primary backend is \""},{"line_number":407,"context_line":"                       \"%(primary)s, but in secondary backend it is \""},{"line_number":408,"context_line":"                       \"%(secondary)s\") %"},{"line_number":409,"context_line":"                   {\u0027primary\u0027: src_conn_type, \u0027secondary\u0027: tgt_conn_type})"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_d525beae","line":406,"range":{"start_line":406,"start_character":19,"end_line":406,"end_character":22},"in_reply_to":"5a3905b3_814b0ab0","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                self._mm_manager.delete_pprc_pairs(lun)"},{"line_number":499,"context_line":"                self._delete_replica(lun)"},{"line_number":500,"context_line":"            except restclient.APIException as e:"},{"line_number":501,"context_line":"                msg \u003d (_(\u0027Fail to delete the target volume for volume \u0027"},{"line_number":502,"context_line":"                         \u0027%(volume)s, Exception: %(ex)s.\u0027) %"},{"line_number":503,"context_line":"                       {\u0027volume\u0027: lun.ds_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":504,"context_line":"                raise exception.CinderException(msg)"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_41d842f0","line":501,"range":{"start_line":501,"start_character":26,"end_line":501,"end_character":30},"updated":"2017-01-19 03:42:27.000000000","message":"Failed","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                self._mm_manager.delete_pprc_pairs(lun)"},{"line_number":499,"context_line":"                self._delete_replica(lun)"},{"line_number":500,"context_line":"            except restclient.APIException as e:"},{"line_number":501,"context_line":"                msg \u003d (_(\u0027Fail to delete the target volume for volume \u0027"},{"line_number":502,"context_line":"                         \u0027%(volume)s, Exception: %(ex)s.\u0027) %"},{"line_number":503,"context_line":"                       {\u0027volume\u0027: lun.ds_id, \u0027ex\u0027: six.text_type(e)})"},{"line_number":504,"context_line":"                raise exception.CinderException(msg)"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_15574603","line":501,"range":{"start_line":501,"start_character":26,"end_line":501,"end_character":30},"in_reply_to":"5a3905b3_41d842f0","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7a1910d600450f6caa323c4f490a03353e6db63d","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        if self.is_target_alive():"},{"line_number":308,"context_line":"            replica \u003d sorted(lun.replication_driver_data.values())[0]"},{"line_number":309,"context_line":"            self._target.delete_pprc_pair("},{"line_number":310,"context_line":"                replica[six.text_type(\u0027vol_hex_id\u0027)])"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def do_pprc_failover(self, luns, backend_id):"},{"line_number":313,"context_line":"        vol_pairs \u003d []"}],"source_content_type":"text/x-python","patch_set":44,"id":"5a3905b3_e94403b8","line":310,"range":{"start_line":310,"start_character":24,"end_line":310,"end_character":37},"updated":"2017-01-23 13:58:14.000000000","message":"Not needed on the key name. Did you mean to put this around the outer replica[\u0027vol_hex_id\u0027]?","commit_id":"7328b6b8b8a964912293959d16b70bd3de6939fd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c3c9450540260a40f3fe0f1c1ab8474e3e3624b2","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        if self.is_target_alive():"},{"line_number":308,"context_line":"            replica \u003d sorted(lun.replication_driver_data.values())[0]"},{"line_number":309,"context_line":"            self._target.delete_pprc_pair("},{"line_number":310,"context_line":"                replica[six.text_type(\u0027vol_hex_id\u0027)])"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def do_pprc_failover(self, luns, backend_id):"},{"line_number":313,"context_line":"        vol_pairs \u003d []"}],"source_content_type":"text/x-python","patch_set":45,"id":"3a461143_c1aa6670","line":310,"range":{"start_line":310,"start_character":24,"end_line":310,"end_character":37},"updated":"2017-01-25 18:37:53.000000000","message":"Comment not addressed from patchset 44.","commit_id":"f07f08749131577e1b81f3de1c3464f8fcabd654"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1d65de51ecd91789b8fd166cbb234feb48939e05","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        if self.is_target_alive():"},{"line_number":308,"context_line":"            replica \u003d sorted(lun.replication_driver_data.values())[0]"},{"line_number":309,"context_line":"            self._target.delete_pprc_pair("},{"line_number":310,"context_line":"                replica[six.text_type(\u0027vol_hex_id\u0027)])"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def do_pprc_failover(self, luns, backend_id):"},{"line_number":313,"context_line":"        vol_pairs \u003d []"}],"source_content_type":"text/x-python","patch_set":45,"id":"3a461143_ed3593f7","line":310,"range":{"start_line":310,"start_character":24,"end_line":310,"end_character":37},"in_reply_to":"3a461143_c1aa6670","updated":"2017-01-25 20:28:49.000000000","message":"Done","commit_id":"f07f08749131577e1b81f3de1c3464f8fcabd654"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_restclient.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.i18n import _LE"},{"line_number":29,"context_line":"# disable the warning of InsecurePlatformWarning and SNIMissingWarning"},{"line_number":30,"context_line":"requests.packages.urllib3.disable_warnings("},{"line_number":31,"context_line":"    url_exception.InsecurePlatformWarning)"},{"line_number":32,"context_line":"requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6ce03ffb","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":70},"updated":"2016-12-14 20:11:29.000000000","message":"There is a cinder.conf option for this now. suppress_requests_ssl_warnings","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.i18n import _LE"},{"line_number":29,"context_line":"# disable the warning of InsecurePlatformWarning and SNIMissingWarning"},{"line_number":30,"context_line":"requests.packages.urllib3.disable_warnings("},{"line_number":31,"context_line":"    url_exception.InsecurePlatformWarning)"},{"line_number":32,"context_line":"requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a72e8489","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":70},"in_reply_to":"1a6eadb0_6ce03ffb","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"33b391d8ee89eb85c7555c2184870310393b084b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        # overwrite certificate validation method only when using"},{"line_number":134,"context_line":"        # default connector, and not globally import the new scheme."},{"line_number":135,"context_line":"        if isinstance(verify, six.string_types):"},{"line_number":136,"context_line":"            importlib.import_module(\u0027storage.ds8k_connection\u0027)"},{"line_number":137,"context_line":"        self.session \u003d None"},{"line_number":138,"context_line":"        self.verify \u003d verify"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_08872962","line":136,"range":{"start_line":136,"start_character":45,"end_line":136,"end_character":60},"updated":"2016-12-22 06:40:00.000000000","message":"we need to change \u0027storage.ds8k_connection\u0027 to \u0027cinder.volume.drivers.ibm.ibm_storage.ds8k_connection\u0027.","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                {\u0027username\u0027: self.user, \u0027password\u0027: self.passw},"},{"line_number":207,"context_line":"                timeout\u003d60)"},{"line_number":208,"context_line":"        except Exception:"},{"line_number":209,"context_line":"            eventlet.sleep(2)"},{"line_number":210,"context_line":"            response \u003d self.send("},{"line_number":211,"context_line":"                \u0027POST\u0027, \u0027/tokens\u0027,"},{"line_number":212,"context_line":"                {\u0027username\u0027: self.user, \u0027password\u0027: self.passw},"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_900b94d5","line":209,"range":{"start_line":209,"start_character":21,"end_line":209,"end_character":26},"updated":"2017-01-17 22:23:01.000000000","message":"I didn\u0027t notice, but make sure any sleep calls are mocked out so unit tests do not sit idle.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                {\u0027username\u0027: self.user, \u0027password\u0027: self.passw},"},{"line_number":207,"context_line":"                timeout\u003d60)"},{"line_number":208,"context_line":"        except Exception:"},{"line_number":209,"context_line":"            eventlet.sleep(2)"},{"line_number":210,"context_line":"            response \u003d self.send("},{"line_number":211,"context_line":"                \u0027POST\u0027, \u0027/tokens\u0027,"},{"line_number":212,"context_line":"                {\u0027username\u0027: self.user, \u0027password\u0027: self.passw},"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_eb52ff11","line":209,"range":{"start_line":209,"start_character":21,"end_line":209,"end_character":26},"in_reply_to":"7a3c09a3_900b94d5","updated":"2017-01-18 16:58:38.000000000","message":"The FakeDefaultRESTConnector overrides the connect function so there is no need to mock the timeout","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":221,"context_line":"             params\u003dNone, fields\u003dNone, timeout\u003d900):"},{"line_number":222,"context_line":"        # verify the method"},{"line_number":223,"context_line":"        if method not in (\u0027GET\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027DELETE\u0027):"},{"line_number":224,"context_line":"            msg \u003d _LE(\"Invalid HTTP method: %s\") % method"},{"line_number":225,"context_line":"            raise APIException(data\u003dmsg)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        # prepare the url"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_d0119c05","line":224,"range":{"start_line":224,"start_character":18,"end_line":224,"end_character":21},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":221,"context_line":"             params\u003dNone, fields\u003dNone, timeout\u003d900):"},{"line_number":222,"context_line":"        # verify the method"},{"line_number":223,"context_line":"        if method not in (\u0027GET\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027DELETE\u0027):"},{"line_number":224,"context_line":"            msg \u003d _LE(\"Invalid HTTP method: %s\") % method"},{"line_number":225,"context_line":"            raise APIException(data\u003dmsg)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        # prepare the url"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3de61fe8","line":224,"range":{"start_line":224,"start_character":18,"end_line":224,"end_character":21},"in_reply_to":"7a3c09a3_d0119c05","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                    attempts \u003d\u003d 0):"},{"line_number":270,"context_line":"                self.connect()"},{"line_number":271,"context_line":"            elif response[\u0027server\u0027].get(\u0027code\u0027) in AUTHENTICATION_ERROR_CODES:"},{"line_number":272,"context_line":"                msg \u003d (_LE(\u0027Authentication failed for host %(host)s. \u0027"},{"line_number":273,"context_line":"                           \u0027Exception\u003d %(e)s\u0027) %"},{"line_number":274,"context_line":"                       {\u0027host\u0027: self.host, \u0027e\u0027: response[\u0027server\u0027][\u0027message\u0027]})"},{"line_number":275,"context_line":"                raise APIAuthenticationException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_702f083f","line":272,"range":{"start_line":272,"start_character":23,"end_line":272,"end_character":26},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                    attempts \u003d\u003d 0):"},{"line_number":270,"context_line":"                self.connect()"},{"line_number":271,"context_line":"            elif response[\u0027server\u0027].get(\u0027code\u0027) in AUTHENTICATION_ERROR_CODES:"},{"line_number":272,"context_line":"                msg \u003d (_LE(\u0027Authentication failed for host %(host)s. \u0027"},{"line_number":273,"context_line":"                           \u0027Exception\u003d %(e)s\u0027) %"},{"line_number":274,"context_line":"                       {\u0027host\u0027: self.host, \u0027e\u0027: response[\u0027server\u0027][\u0027message\u0027]})"},{"line_number":275,"context_line":"                raise APIAuthenticationException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3dfd3f6e","line":272,"range":{"start_line":272,"start_character":23,"end_line":272,"end_character":26},"in_reply_to":"7a3c09a3_702f083f","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                       {\u0027host\u0027: self.host, \u0027e\u0027: response[\u0027server\u0027][\u0027message\u0027]})"},{"line_number":275,"context_line":"                raise APIAuthenticationException(data\u003dmsg)"},{"line_number":276,"context_line":"            elif response[\u0027server\u0027].get(\u0027code\u0027) in LSS_ERROR_CODES:"},{"line_number":277,"context_line":"                msg \u003d (_LE(\u0027Can not put the volume in LSS: %s\u0027) %"},{"line_number":278,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":279,"context_line":"                raise LssFullException(data\u003dmsg)"},{"line_number":280,"context_line":"            elif response[\u0027server\u0027][\u0027status\u0027] \u003d\u003d \u0027timeout\u0027:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_b025f05c","line":277,"range":{"start_line":277,"start_character":23,"end_line":277,"end_character":26},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                       {\u0027host\u0027: self.host, \u0027e\u0027: response[\u0027server\u0027][\u0027message\u0027]})"},{"line_number":275,"context_line":"                raise APIAuthenticationException(data\u003dmsg)"},{"line_number":276,"context_line":"            elif response[\u0027server\u0027].get(\u0027code\u0027) in LSS_ERROR_CODES:"},{"line_number":277,"context_line":"                msg \u003d (_LE(\u0027Can not put the volume in LSS: %s\u0027) %"},{"line_number":278,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":279,"context_line":"                raise LssFullException(data\u003dmsg)"},{"line_number":280,"context_line":"            elif response[\u0027server\u0027][\u0027status\u0027] \u003d\u003d \u0027timeout\u0027:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_5d004b66","line":277,"range":{"start_line":277,"start_character":23,"end_line":277,"end_character":26},"in_reply_to":"7a3c09a3_b025f05c","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":279,"context_line":"                raise LssFullException(data\u003dmsg)"},{"line_number":280,"context_line":"            elif response[\u0027server\u0027][\u0027status\u0027] \u003d\u003d \u0027timeout\u0027:"},{"line_number":281,"context_line":"                msg \u003d (_LE(\u0027Request to storage API time out: %s\u0027) %"},{"line_number":282,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":283,"context_line":"                raise TimeoutException(data\u003dmsg)"},{"line_number":284,"context_line":"            elif (response[\u0027server\u0027][\u0027status\u0027] !\u003d \u0027ok\u0027 and"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_f023f853","line":281,"range":{"start_line":281,"start_character":23,"end_line":281,"end_character":26},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":279,"context_line":"                raise LssFullException(data\u003dmsg)"},{"line_number":280,"context_line":"            elif response[\u0027server\u0027][\u0027status\u0027] \u003d\u003d \u0027timeout\u0027:"},{"line_number":281,"context_line":"                msg \u003d (_LE(\u0027Request to storage API time out: %s\u0027) %"},{"line_number":282,"context_line":"                       response[\u0027server\u0027][\u0027message\u0027])"},{"line_number":283,"context_line":"                raise TimeoutException(data\u003dmsg)"},{"line_number":284,"context_line":"            elif (response[\u0027server\u0027][\u0027status\u0027] !\u003d \u0027ok\u0027 and"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9df6338d","line":281,"range":{"start_line":281,"start_character":23,"end_line":281,"end_character":26},"in_reply_to":"7a3c09a3_f023f853","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                # via badStatusException\u003dFalse, but will retry it to"},{"line_number":289,"context_line":"                # confirm the problem."},{"line_number":290,"context_line":"                if attempts \u003d\u003d 1:"},{"line_number":291,"context_line":"                    msg \u003d (_LE(\"Request to storage API failed: %(err)s, \""},{"line_number":292,"context_line":"                               \"(%(url)s).\") %"},{"line_number":293,"context_line":"                           {\u0027err\u0027: response[\u0027server\u0027][\u0027message\u0027], \u0027url\u0027: url})"},{"line_number":294,"context_line":"                    raise APIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_50ecccf2","line":291,"range":{"start_line":291,"start_character":27,"end_line":291,"end_character":30},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                # via badStatusException\u003dFalse, but will retry it to"},{"line_number":289,"context_line":"                # confirm the problem."},{"line_number":290,"context_line":"                if attempts \u003d\u003d 1:"},{"line_number":291,"context_line":"                    msg \u003d (_LE(\"Request to storage API failed: %(err)s, \""},{"line_number":292,"context_line":"                               \"(%(url)s).\") %"},{"line_number":293,"context_line":"                           {\u0027err\u0027: response[\u0027server\u0027][\u0027message\u0027], \u0027url\u0027: url})"},{"line_number":294,"context_line":"                    raise APIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3d0b7f7e","line":291,"range":{"start_line":291,"start_character":27,"end_line":291,"end_character":30},"in_reply_to":"7a3c09a3_50ecccf2","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def fetchall(self, *args, **kwargs):"},{"line_number":302,"context_line":"        r \u003d self.send(*args, **kwargs)[\u0027data\u0027]"},{"line_number":303,"context_line":"        if len(r) !\u003d 1:"},{"line_number":304,"context_line":"            msg \u003d _LE(\u0027Expected one result but got %d.\u0027) % len(r)"},{"line_number":305,"context_line":"            raise APIException(data\u003dmsg)"},{"line_number":306,"context_line":"        else:"},{"line_number":307,"context_line":"            return r.popitem()[1]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_b0b33009","line":304,"range":{"start_line":304,"start_character":18,"end_line":304,"end_character":21},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def fetchall(self, *args, **kwargs):"},{"line_number":302,"context_line":"        r \u003d self.send(*args, **kwargs)[\u0027data\u0027]"},{"line_number":303,"context_line":"        if len(r) !\u003d 1:"},{"line_number":304,"context_line":"            msg \u003d _LE(\u0027Expected one result but got %d.\u0027) % len(r)"},{"line_number":305,"context_line":"            raise APIException(data\u003dmsg)"},{"line_number":306,"context_line":"        else:"},{"line_number":307,"context_line":"            return r.popitem()[1]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9d24730d","line":304,"range":{"start_line":304,"start_character":18,"end_line":304,"end_character":21},"in_reply_to":"7a3c09a3_b0b33009","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    def fetchone(self, *args, **kwargs):"},{"line_number":312,"context_line":"        r \u003d self.fetchall(*args, **kwargs)"},{"line_number":313,"context_line":"        if len(r) !\u003d 1:"},{"line_number":314,"context_line":"            msg \u003d _LE(\u0027Expected one item in result but got %d.\u0027) % len(r)"},{"line_number":315,"context_line":"            raise APIException(data\u003dmsg)"},{"line_number":316,"context_line":"        return r[0]"},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_d0b6fcf7","line":314,"range":{"start_line":314,"start_character":18,"end_line":314,"end_character":21},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        r \u003d self.send(*args, **kwargs)"},{"line_number":322,"context_line":"        if \u0027responses\u0027 in r:"},{"line_number":323,"context_line":"            if len(r[\u0027responses\u0027]) !\u003d 1:"},{"line_number":324,"context_line":"                msg \u003d (_LE(\u0027Expected one item in result responses but \u0027"},{"line_number":325,"context_line":"                           \u0027got %d.\u0027) % len(r[\u0027responses\u0027]))"},{"line_number":326,"context_line":"                raise APIException(data\u003dmsg)"},{"line_number":327,"context_line":"            r \u003d r[\u0027responses\u0027][0]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_10cde484","line":324,"range":{"start_line":324,"start_character":23,"end_line":324,"end_character":26},"updated":"2017-01-17 22:23:01.000000000","message":"_()","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        r \u003d self.send(*args, **kwargs)"},{"line_number":322,"context_line":"        if \u0027responses\u0027 in r:"},{"line_number":323,"context_line":"            if len(r[\u0027responses\u0027]) !\u003d 1:"},{"line_number":324,"context_line":"                msg \u003d (_LE(\u0027Expected one item in result responses but \u0027"},{"line_number":325,"context_line":"                           \u0027got %d.\u0027) % len(r[\u0027responses\u0027]))"},{"line_number":326,"context_line":"                raise APIException(data\u003dmsg)"},{"line_number":327,"context_line":"            r \u003d r[\u0027responses\u0027][0]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_bd768f03","line":324,"range":{"start_line":324,"start_character":23,"end_line":324,"end_character":26},"in_reply_to":"7a3c09a3_10cde484","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        # prepare the url"},{"line_number":228,"context_line":"        url \u003d \"https://%s:%s/api/v1%s\" % (self.host, self.port, endpoint)"},{"line_number":229,"context_line":"        if fields:"},{"line_number":230,"context_line":"            params \u003d dict(params or {}, data_fields\u003d\u0027,\u0027.join(fields))"},{"line_number":231,"context_line":"        if params:"},{"line_number":232,"context_line":"            url +\u003d ((\u0027\u0026\u0027 if \u0027?\u0027 in url else \u0027?\u0027) +"},{"line_number":233,"context_line":"                    urllib.parse.urlencode(params))"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_2102563f","line":230,"updated":"2017-01-19 03:42:27.000000000","message":"{} is actually better than dict()","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        # prepare the url"},{"line_number":228,"context_line":"        url \u003d \"https://%s:%s/api/v1%s\" % (self.host, self.port, endpoint)"},{"line_number":229,"context_line":"        if fields:"},{"line_number":230,"context_line":"            params \u003d dict(params or {}, data_fields\u003d\u0027,\u0027.join(fields))"},{"line_number":231,"context_line":"        if params:"},{"line_number":232,"context_line":"            url +\u003d ((\u0027\u0026\u0027 if \u0027?\u0027 in url else \u0027?\u0027) +"},{"line_number":233,"context_line":"                    urllib.parse.urlencode(params))"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_fe6969bf","line":230,"in_reply_to":"5a3905b3_2102563f","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # password paramter, so we have to catch it here"},{"line_number":189,"context_line":"        if not user or not passw:"},{"line_number":190,"context_line":"            raise APIAuthenticationException("},{"line_number":191,"context_line":"                \u0027The username and the password parameters must not be empty.\u0027)"},{"line_number":192,"context_line":"        self.token \u003d \u0027\u0027"},{"line_number":193,"context_line":"        self.host \u003d host"},{"line_number":194,"context_line":"        self.port \u003d \u00278452\u0027"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_ddabbb73","line":191,"range":{"start_line":191,"start_character":16,"end_line":191,"end_character":77},"updated":"2017-01-21 04:23:43.000000000","message":"Need _(\"xxxx\")","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # password paramter, so we have to catch it here"},{"line_number":189,"context_line":"        if not user or not passw:"},{"line_number":190,"context_line":"            raise APIAuthenticationException("},{"line_number":191,"context_line":"                \u0027The username and the password parameters must not be empty.\u0027)"},{"line_number":192,"context_line":"        self.token \u003d \u0027\u0027"},{"line_number":193,"context_line":"        self.host \u003d host"},{"line_number":194,"context_line":"        self.port \u003d \u00278452\u0027"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_66894f75","line":191,"range":{"start_line":191,"start_character":16,"end_line":191,"end_character":77},"in_reply_to":"5a3905b3_ddabbb73","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"cinder/volume/drivers/ibm/ibm_storage/ibm_storage.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"e0dd1cbc649ce302b08a19e8672e0fb53552c9be","unresolved":false,"context_lines":[{"line_number":31,"context_line":"driver_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt("},{"line_number":33,"context_line":"        \u0027proxy\u0027,"},{"line_number":34,"context_line":"        default\u003d\u0027storage.proxy.IBMStorageProxy\u0027,"},{"line_number":35,"context_line":"        help\u003d\u0027Proxy driver that connects to the IBM Storage Array\u0027),"},{"line_number":36,"context_line":"    cfg.StrOpt("},{"line_number":37,"context_line":"        \u0027connection_type\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_b1e4d90d","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":30},"updated":"2016-12-13 02:12:02.000000000","message":"we need to change the default value to cinder.volume.drivers.ibm.ibm_storage.proxy.IBMStorageProxy","commit_id":"e18c1fd81999ef49a250e4c7f2de3813867d2b82"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"6fdd6d84691346e4cadd266549a56e5cf5b85255","unresolved":false,"context_lines":[{"line_number":31,"context_line":"driver_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt("},{"line_number":33,"context_line":"        \u0027proxy\u0027,"},{"line_number":34,"context_line":"        default\u003d\u0027storage.proxy.IBMStorageProxy\u0027,"},{"line_number":35,"context_line":"        help\u003d\u0027Proxy driver that connects to the IBM Storage Array\u0027),"},{"line_number":36,"context_line":"    cfg.StrOpt("},{"line_number":37,"context_line":"        \u0027connection_type\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_e6f5ac83","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":30},"in_reply_to":"1a6eadb0_b1e4d90d","updated":"2016-12-13 09:15:40.000000000","message":"Done","commit_id":"e18c1fd81999ef49a250e4c7f2de3813867d2b82"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fc4aaa810b0803f99d9298039fa957c9352304a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"5a3905b3_418682ba","side":"PARENT","line":218,"updated":"2017-01-19 03:42:27.000000000","message":"Isn\u0027t it better to keep some of the comments here on how to do manage existing?","commit_id":"8200a13e7b72bafa2eb3e91e8d65950cb38933ba"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"5a3905b3_9555f6c7","side":"PARENT","line":218,"in_reply_to":"5a3905b3_418682ba","updated":"2017-01-20 15:38:04.000000000","message":"This is just copy-paste from ManageableVD.","commit_id":"8200a13e7b72bafa2eb3e91e8d65950cb38933ba"}],"cinder/volume/drivers/ibm/ibm_storage/proxy.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"818366879f791d7c435509c2a07858b72a9be056","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._read_replication_devices()"},{"line_number":94,"context_line":"        self.meta.bypass_connection_check \u003d ("},{"line_number":95,"context_line":"            self._get_safely_from_configuration("},{"line_number":96,"context_line":"                storage.FLAG_KEYS.bypass_connection_check, False))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @_trace_time"},{"line_number":99,"context_line":"    def setup(self, context):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_3d0fb8e2","line":96,"range":{"start_line":96,"start_character":24,"end_line":96,"end_character":33},"updated":"2016-12-13 05:09:30.000000000","message":"FLAG_KEYS is a dict too,the same problem as self.meta.","commit_id":"e18c1fd81999ef49a250e4c7f2de3813867d2b82"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"6fdd6d84691346e4cadd266549a56e5cf5b85255","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._read_replication_devices()"},{"line_number":94,"context_line":"        self.meta.bypass_connection_check \u003d ("},{"line_number":95,"context_line":"            self._get_safely_from_configuration("},{"line_number":96,"context_line":"                storage.FLAG_KEYS.bypass_connection_check, False))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @_trace_time"},{"line_number":99,"context_line":"    def setup(self, context):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_f192c456","line":96,"range":{"start_line":96,"start_character":24,"end_line":96,"end_character":33},"in_reply_to":"1a6eadb0_3d0fb8e2","updated":"2016-12-13 09:15:40.000000000","message":"Done","commit_id":"e18c1fd81999ef49a250e4c7f2de3813867d2b82"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import volume as c_volume"},{"line_number":24,"context_line":"import cinder.volume.drivers.ibm.ibm_storage as storage"},{"line_number":25,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":"from oslo_utils import timeutils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"gettext.install(\u0027cinder\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_2ca8078d","line":27,"range":{"start_line":26,"start_character":5,"end_line":27,"end_character":15},"updated":"2016-12-14 20:11:29.000000000","message":"Move up to third party imports.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import volume as c_volume"},{"line_number":24,"context_line":"import cinder.volume.drivers.ibm.ibm_storage as storage"},{"line_number":25,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":"from oslo_utils import timeutils"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"gettext.install(\u0027cinder\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_270b5425","line":27,"range":{"start_line":26,"start_character":5,"end_line":27,"end_character":15},"in_reply_to":"1a6eadb0_2ca8078d","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        returns a string made out of code and status if present, else message"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if getattr(exception, \"code\", None) is not None \\"},{"line_number":259,"context_line":"           and \\"},{"line_number":260,"context_line":"           getattr(exception, \"status\", None) is not None:"},{"line_number":261,"context_line":"            return \"Status: \u0027%s\u0027, Code: %s\" % ("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ec9a8f6d","line":258,"range":{"start_line":258,"start_character":56,"end_line":258,"end_character":57},"updated":"2016-12-14 20:11:29.000000000","message":"Wrap in () to get rid of \\","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        returns a string made out of code and status if present, else message"},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if getattr(exception, \"code\", None) is not None \\"},{"line_number":259,"context_line":"           and \\"},{"line_number":260,"context_line":"           getattr(exception, \"status\", None) is not None:"},{"line_number":261,"context_line":"            return \"Status: \u0027%s\u0027, Code: %s\" % ("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a7176443","line":258,"range":{"start_line":258,"start_character":56,"end_line":258,"end_character":57},"in_reply_to":"1a6eadb0_ec9a8f6d","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @_trace_time"},{"line_number":384,"context_line":"    def _read_replication_devices(self):"},{"line_number":385,"context_line":"        \u0027\u0027\u0027Read replication devices from configuration"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        Several replication devices are permitted."},{"line_number":388,"context_line":"        If an entry already exists an error is assumed."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6c859f05","line":385,"range":{"start_line":385,"start_character":8,"end_line":385,"end_character":11},"updated":"2016-12-14 20:11:29.000000000","message":"Docstrings should actually be double quotes, not single quotes.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @_trace_time"},{"line_number":384,"context_line":"    def _read_replication_devices(self):"},{"line_number":385,"context_line":"        \u0027\u0027\u0027Read replication devices from configuration"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        Several replication devices are permitted."},{"line_number":388,"context_line":"        If an entry already exists an error is assumed."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e72b1c80","line":385,"range":{"start_line":385,"start_character":8,"end_line":385,"end_character":11},"in_reply_to":"1a6eadb0_6c859f05","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f87da759a4cc982e142d90fba868e5c049eacf94","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        return msg"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _get_driver_super(self):"},{"line_number":276,"context_line":"        \"\"\"Get\u0027s the opensource IBM Storage Drivers super class"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        TODO: should be modified"},{"line_number":279,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_879ef1b6","line":276,"range":{"start_line":276,"start_character":11,"end_line":276,"end_character":17},"updated":"2017-01-18 09:35:49.000000000","message":"Gets","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        return msg"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _get_driver_super(self):"},{"line_number":276,"context_line":"        \"\"\"Get\u0027s the opensource IBM Storage Drivers super class"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        TODO: should be modified"},{"line_number":279,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_fd4c979f","line":276,"range":{"start_line":276,"start_character":11,"end_line":276,"end_character":17},"in_reply_to":"7a3c09a3_879ef1b6","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def _get_driver_super(self):"},{"line_number":276,"context_line":"        \"\"\"Get\u0027s the opensource IBM Storage Drivers super class"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        TODO: should be modified"},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        return super(self.driver.__class__, self.driver)"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_b098906b","line":278,"range":{"start_line":278,"start_character":8,"end_line":278,"end_character":13},"updated":"2017-01-17 22:23:01.000000000","message":"Please put \"TODO(irc_nick)\". It would also be good to leave more detail than just \"should be modified\"","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def _get_driver_super(self):"},{"line_number":276,"context_line":"        \"\"\"Get\u0027s the opensource IBM Storage Drivers super class"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        TODO: should be modified"},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        return super(self.driver.__class__, self.driver)"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_dd7b5bbc","line":278,"range":{"start_line":278,"start_character":8,"end_line":278,"end_character":13},"in_reply_to":"7a3c09a3_b098906b","updated":"2017-01-18 16:58:38.000000000","message":"fixed","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        return config_value"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _get_extra_specs(self, obj):"},{"line_number":329,"context_line":"        \u0027\u0027\u0027get extra specs to match the object"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        object can be volume or consistency_group"},{"line_number":332,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_70b9c8cb","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":11},"updated":"2017-01-17 22:23:01.000000000","message":"docstring comments should actually be three double quotes, not single quotes.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        return config_value"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _get_extra_specs(self, obj):"},{"line_number":329,"context_line":"        \u0027\u0027\u0027get extra specs to match the object"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        object can be volume or consistency_group"},{"line_number":332,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_fd33b711","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":11},"in_reply_to":"7a3c09a3_70b9c8cb","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f87da759a4cc982e142d90fba868e5c049eacf94","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                LOG.error(_LE(\"Replication is missing backend_id: %(dev)s\"),"},{"line_number":414,"context_line":"                          {\u0027dev\u0027: dev})"},{"line_number":415,"context_line":"            elif self.targets.get(backend_id, None):"},{"line_number":416,"context_line":"                LOG.error(_LE(\"Multiple entry for replication %(dev)s\"),"},{"line_number":417,"context_line":"                          {\u0027dev\u0027: dev})"},{"line_number":418,"context_line":"            else:"},{"line_number":419,"context_line":"                self.targets[backend_id] \u003d {}"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_c7fd596f","line":416,"range":{"start_line":416,"start_character":31,"end_line":416,"end_character":45},"updated":"2017-01-18 09:35:49.000000000","message":"Multiple entries?","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                LOG.error(_LE(\"Replication is missing backend_id: %(dev)s\"),"},{"line_number":414,"context_line":"                          {\u0027dev\u0027: dev})"},{"line_number":415,"context_line":"            elif self.targets.get(backend_id, None):"},{"line_number":416,"context_line":"                LOG.error(_LE(\"Multiple entry for replication %(dev)s\"),"},{"line_number":417,"context_line":"                          {\u0027dev\u0027: dev})"},{"line_number":418,"context_line":"            else:"},{"line_number":419,"context_line":"                self.targets[backend_id] \u003d {}"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_60147a4c","line":416,"range":{"start_line":416,"start_character":31,"end_line":416,"end_character":45},"in_reply_to":"7a3c09a3_c7fd596f","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ba45b19c9cc6cca59d4d19d6b0e71d27f9173b36","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        object can be volume or consistency_group"},{"line_number":332,"context_line":"        \"\"\""},{"line_number":333,"context_line":"        type_id \u003d obj.get(\u0027volume_type_id\u0027, None)"},{"line_number":334,"context_line":"        if type_id is None:"},{"line_number":335,"context_line":"            return {}"},{"line_number":336,"context_line":"        return c_volume.volume_types.get_volume_type_extra_specs(type_id)"}],"source_content_type":"text/x-python","patch_set":41,"id":"7a3c09a3_b5dbdf20","line":333,"updated":"2017-01-18 20:03:27.000000000","message":"This could be a problem when being called from the create_consistency group API.\n\nThe volume_type_id could be a list of volume type ids:\nhttp://docs.openstack.org/admin-guide/blockstorage-consistency-groups.html\n\n\nTake a look here:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/emc/emc_vmax_common.py#L2487","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1a793592b5d97ea9b8f5e6f12c6f191873da8bef","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        object can be volume or consistency_group"},{"line_number":332,"context_line":"        \"\"\""},{"line_number":333,"context_line":"        type_id \u003d obj.get(\u0027volume_type_id\u0027, None)"},{"line_number":334,"context_line":"        if type_id is None:"},{"line_number":335,"context_line":"            return {}"},{"line_number":336,"context_line":"        return c_volume.volume_types.get_volume_type_extra_specs(type_id)"}],"source_content_type":"text/x-python","patch_set":41,"id":"5a3905b3_9d099834","line":333,"in_reply_to":"7a3c09a3_b5dbdf20","updated":"2017-01-20 15:38:04.000000000","message":"Done","commit_id":"f150b7626603abdcd56b04e6793529102d3bc6cb"}],"cinder/volume/drivers/ibm/ibm_storage/strings.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SETUP_INVALID_CREDENTIALS \u003d \"Invalid credentials.\""},{"line_number":38,"context_line":"SETUP_INVALID_ADDRESS \u003d \"Unable to connect to the IBM storage system\\"},{"line_number":39,"context_line":" at \u0027%(address)s\u0027, invalid address.\""},{"line_number":40,"context_line":"SETUP_UNKNOWN_ERROR \u003d \"Unknown error: \u0027%(error)s.\""},{"line_number":41,"context_line":"SETUP_NO_ISCSI_PORTALS \u003d \"There are no iSCSI portals available on \\"},{"line_number":42,"context_line":"the IBM XIV Storage System.\""},{"line_number":43,"context_line":"SETUP_SUCCEEDED \u003d \"Connection to the IBM XIV \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_06bb3628","line":40,"updated":"2016-12-14 16:26:24.000000000","message":"There\u0027s a significant problem with storing all of these messages as string constants here -- none of these will be exposed for translation in Zanata.\n\nThis applies to many of these, but SETUP_UNKNOWN_ERROR looks like an easy one to pick out in particular.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SETUP_INVALID_CREDENTIALS \u003d \"Invalid credentials.\""},{"line_number":38,"context_line":"SETUP_INVALID_ADDRESS \u003d \"Unable to connect to the IBM storage system\\"},{"line_number":39,"context_line":" at \u0027%(address)s\u0027, invalid address.\""},{"line_number":40,"context_line":"SETUP_UNKNOWN_ERROR \u003d \"Unknown error: \u0027%(error)s.\""},{"line_number":41,"context_line":"SETUP_NO_ISCSI_PORTALS \u003d \"There are no iSCSI portals available on \\"},{"line_number":42,"context_line":"the IBM XIV Storage System.\""},{"line_number":43,"context_line":"SETUP_SUCCEEDED \u003d \"Connection to the IBM XIV \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_2c96473f","line":40,"in_reply_to":"1a6eadb0_06bb3628","updated":"2016-12-14 20:11:29.000000000","message":"+1\n\nI think all of these could be wrapped in _(), but not clear from here what\u0027s exposed as an exception vs what\u0027s at info, warning, etc.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SETUP_INVALID_CREDENTIALS \u003d \"Invalid credentials.\""},{"line_number":38,"context_line":"SETUP_INVALID_ADDRESS \u003d \"Unable to connect to the IBM storage system\\"},{"line_number":39,"context_line":" at \u0027%(address)s\u0027, invalid address.\""},{"line_number":40,"context_line":"SETUP_UNKNOWN_ERROR \u003d \"Unknown error: \u0027%(error)s.\""},{"line_number":41,"context_line":"SETUP_NO_ISCSI_PORTALS \u003d \"There are no iSCSI portals available on \\"},{"line_number":42,"context_line":"the IBM XIV Storage System.\""},{"line_number":43,"context_line":"SETUP_SUCCEEDED \u003d \"Connection to the IBM XIV \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_34772903","line":40,"in_reply_to":"1a6eadb0_2c96473f","updated":"2016-12-16 03:19:36.000000000","message":"+1.  I found a few of these are in exception messages but are without _().  For example, UNEXPECTED_INTERVAL_VALUE.  It\u0027s hard to go back here to identify them too.  It\u0027s better to format these messages at the place where they are logged/raised.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SETUP_INVALID_CREDENTIALS \u003d \"Invalid credentials.\""},{"line_number":38,"context_line":"SETUP_INVALID_ADDRESS \u003d \"Unable to connect to the IBM storage system\\"},{"line_number":39,"context_line":" at \u0027%(address)s\u0027, invalid address.\""},{"line_number":40,"context_line":"SETUP_UNKNOWN_ERROR \u003d \"Unknown error: \u0027%(error)s.\""},{"line_number":41,"context_line":"SETUP_NO_ISCSI_PORTALS \u003d \"There are no iSCSI portals available on \\"},{"line_number":42,"context_line":"the IBM XIV Storage System.\""},{"line_number":43,"context_line":"SETUP_SUCCEEDED \u003d \"Connection to the IBM XIV \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c41a9e7c","line":40,"in_reply_to":"1a6eadb0_34772903","updated":"2016-12-20 06:34:47.000000000","message":"ok we will have to refactor this a bit in the coming patches then.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"consistency group %(cg)s: %(err)s\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"# PROMPTS"},{"line_number":123,"context_line":"CERTIFICATES_PATH \u003d \"/opt/ibm/ds8k_certs/\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"# DEFAULT INSTALLED VALUES"},{"line_number":126,"context_line":"XIV_BACKEND_PREFIX \u003d \"IBM-XIV\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_0b317f05","line":123,"updated":"2016-12-14 16:26:24.000000000","message":"This should likely be a config option -- or use a default like /etc/cinder/ibm/... .\n\n/opt/ is not really a \"normal\" place to put configuration.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"}],"cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import cryptish"},{"line_number":35,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":36,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":37,"context_line":"from oslo_log import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"OPENSTACK_PRODUCT_NAME \u003d \"OpenStack\""},{"line_number":40,"context_line":"PERF_CLASS_NAME_PREFIX \u003d \"cinder-qos\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_aca25797","line":37,"range":{"start_line":37,"start_character":5,"end_line":37,"end_character":13},"updated":"2016-12-14 20:11:29.000000000","message":"Move up to third party imports.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import cryptish"},{"line_number":35,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import proxy"},{"line_number":36,"context_line":"from cinder.volume.drivers.ibm.ibm_storage import strings"},{"line_number":37,"context_line":"from oslo_log import log as logging"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"OPENSTACK_PRODUCT_NAME \u003d \"OpenStack\""},{"line_number":40,"context_line":"PERF_CLASS_NAME_PREFIX \u003d \"cinder-qos\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_bd99367b","line":37,"range":{"start_line":37,"start_character":5,"end_line":37,"end_character":13},"in_reply_to":"1a6eadb0_aca25797","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def _schedule_name_from_schedule(self, schedule):"},{"line_number":62,"context_line":"        if schedule \u003d\u003d \u002700:00:20\u0027:"},{"line_number":63,"context_line":"            return \u0027min_interval\u0027"},{"line_number":64,"context_line":"        return \u0027cinder_{0}\u0027.format(schedule.replace(\u0027:\u0027, \u0027_\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"async_rates \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_d42275a2","line":64,"updated":"2016-12-16 03:19:36.000000000","message":"Please use %s style formatting to be consistent with other places.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def _schedule_name_from_schedule(self, schedule):"},{"line_number":62,"context_line":"        if schedule \u003d\u003d \u002700:00:20\u0027:"},{"line_number":63,"context_line":"            return \u0027min_interval\u0027"},{"line_number":64,"context_line":"        return \u0027cinder_{0}\u0027.format(schedule.replace(\u0027:\u0027, \u0027_\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"async_rates \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5dcd8264","line":64,"in_reply_to":"1a6eadb0_d42275a2","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return \u0027cinder_{0}\u0027.format(schedule.replace(\u0027:\u0027, \u0027_\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"async_rates \u003d ("},{"line_number":68,"context_line":"    Rate(rpo\u003d30, schedule\u003d\u002700:00:20\u0027),"},{"line_number":69,"context_line":"    Rate(rpo\u003d60, schedule\u003d\u002700:00:20\u0027),"},{"line_number":70,"context_line":"    Rate(rpo\u003d300, schedule\u003d\u002700:02:00\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_66622aaf","line":67,"updated":"2016-12-14 16:26:24.000000000","message":"This should be a class variable of XIVProxy, since it\u0027s only ever used there.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return \u0027cinder_{0}\u0027.format(schedule.replace(\u0027:\u0027, \u0027_\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"async_rates \u003d ("},{"line_number":68,"context_line":"    Rate(rpo\u003d30, schedule\u003d\u002700:00:20\u0027),"},{"line_number":69,"context_line":"    Rate(rpo\u003d60, schedule\u003d\u002700:00:20\u0027),"},{"line_number":70,"context_line":"    Rate(rpo\u003d300, schedule\u003d\u002700:02:00\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_bdd5b6e5","line":67,"in_reply_to":"1a6eadb0_66622aaf","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if active_backend_id:"},{"line_number":95,"context_line":"            LOG.info(_LI(\"__init__: active_backend_id: %(id)s\"),"},{"line_number":96,"context_line":"                     {\u0027id\u0027: active_backend_id})"},{"line_number":97,"context_line":"        self.ibm_storage_cli \u003d \\"},{"line_number":98,"context_line":"            self.meta[\u0027ibm_storage_portal\u0027] \u003d \\"},{"line_number":99,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d None"},{"line_number":100,"context_line":"        self.ibm_storage_remote_cli \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7450c10b","line":97,"updated":"2016-12-16 03:19:36.000000000","message":"Use () instead of \\","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if active_backend_id:"},{"line_number":95,"context_line":"            LOG.info(_LI(\"__init__: active_backend_id: %(id)s\"),"},{"line_number":96,"context_line":"                     {\u0027id\u0027: active_backend_id})"},{"line_number":97,"context_line":"        self.ibm_storage_cli \u003d \\"},{"line_number":98,"context_line":"            self.meta[\u0027ibm_storage_portal\u0027] \u003d \\"},{"line_number":99,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d None"},{"line_number":100,"context_line":"        self.ibm_storage_remote_cli \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5d70220b","line":97,"in_reply_to":"1a6eadb0_7450c10b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            LOG.info(_LI(\"__init__: active_backend_id: %(id)s\"),"},{"line_number":96,"context_line":"                     {\u0027id\u0027: active_backend_id})"},{"line_number":97,"context_line":"        self.ibm_storage_cli \u003d \\"},{"line_number":98,"context_line":"            self.meta[\u0027ibm_storage_portal\u0027] \u003d \\"},{"line_number":99,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d None"},{"line_number":100,"context_line":"        self.ibm_storage_remote_cli \u003d None"},{"line_number":101,"context_line":"        self.meta[\u0027ibm_storage_fc_targets\u0027] \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_94539d16","line":98,"updated":"2016-12-16 03:19:36.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                     {\u0027id\u0027: active_backend_id})"},{"line_number":97,"context_line":"        self.ibm_storage_cli \u003d \\"},{"line_number":98,"context_line":"            self.meta[\u0027ibm_storage_portal\u0027] \u003d \\"},{"line_number":99,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d None"},{"line_number":100,"context_line":"        self.ibm_storage_remote_cli \u003d None"},{"line_number":101,"context_line":"        self.meta[\u0027ibm_storage_fc_targets\u0027] \u003d []"},{"line_number":102,"context_line":"        self.meta[\u0027storage_version\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_5446654f","line":99,"updated":"2016-12-16 03:19:36.000000000","message":"Please make these 3 declarations separate.  Don\u0027t assign one to the other.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                     {\u0027id\u0027: active_backend_id})"},{"line_number":97,"context_line":"        self.ibm_storage_cli \u003d \\"},{"line_number":98,"context_line":"            self.meta[\u0027ibm_storage_portal\u0027] \u003d \\"},{"line_number":99,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d None"},{"line_number":100,"context_line":"        self.ibm_storage_remote_cli \u003d None"},{"line_number":101,"context_line":"        self.meta[\u0027ibm_storage_fc_targets\u0027] \u003d []"},{"line_number":102,"context_line":"        self.meta[\u0027storage_version\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_dd97d2e9","line":99,"in_reply_to":"1a6eadb0_5446654f","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def setup(self, context):"},{"line_number":107,"context_line":"        \"\"\"Connect ssl client.\"\"\""},{"line_number":108,"context_line":"        LOG.info(strings.SETUP_START)"},{"line_number":109,"context_line":"        msg \u003d \"Active backend_id: \u0027%(id)s\u0027.\" % {\u0027id\u0027: self.active_backend_id}"},{"line_number":110,"context_line":"        LOG.info(msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.ibm_storage_cli \u003d self._init_xcli(self.active_backend_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_acc9775b","line":109,"updated":"2016-12-14 20:11:29.000000000","message":"_LI()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.ibm_storage_cli \u003d self._init_xcli(self.active_backend_id)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if self._get_connection_type() \u003d\u003d storage.XIV_CONNECTION_TYPE_ISCSI:"},{"line_number":115,"context_line":"            self.meta[\u0027ibm_storage_iqn\u0027] \u003d self._call_xiv_xcli(\"config_get\")\\"},{"line_number":116,"context_line":"                .as_dict(\u0027name\u0027)[\u0027iscsi_name\u0027].value"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            portals \u003d storage.get_online_iscsi_ports(self.ibm_storage_cli)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_f4b2114b","line":115,"updated":"2016-12-16 03:19:36.000000000","message":"Use ()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            portals \u003d storage.get_online_iscsi_ports(self.ibm_storage_cli)"},{"line_number":119,"context_line":"            if len(portals) \u003d\u003d 0:"},{"line_number":120,"context_line":"                raise self._get_exception()("},{"line_number":121,"context_line":"                    \"%s %s\" %"},{"line_number":122,"context_line":"                    (storage.XIV_LOG_PREFIX,"},{"line_number":123,"context_line":"                        strings.SETUP_BASE_ERROR % {"},{"line_number":124,"context_line":"                            \u0027details\u0027: strings.SETUP_NO_ISCSI_PORTALS}))"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_94e39dd8","line":121,"updated":"2016-12-16 03:19:36.000000000","message":"Exception message need _()\n\nAlso please use keyword parameters.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @proxy._trace_time"},{"line_number":149,"context_line":"    def _update_active_schedule_objects(self):"},{"line_number":150,"context_line":"        \u0027\u0027\u0027Set schedule objects on active backend."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        The value 00:20:00 is covered in XIV by a pre-defined object named"},{"line_number":153,"context_line":"        min_interval."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_ecbfefa7","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":11},"updated":"2016-12-14 20:11:29.000000000","message":"s/\u0027\u0027\u0027/\"\"\"/","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            name \u003d rate.schedule_name"},{"line_number":160,"context_line":"            schedule \u003d schedules.get(name, None)"},{"line_number":161,"context_line":"            if schedule:"},{"line_number":162,"context_line":"                msg \u003d \u0027Exists on local backend %(sch)s\u0027 % {\u0027sch\u0027: name}"},{"line_number":163,"context_line":"                LOG.debug(msg)"},{"line_number":164,"context_line":"                interval \u003d schedule.get(\u0027interval\u0027, \u0027\u0027)"},{"line_number":165,"context_line":"                if interval !\u003d rate.schedule:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_0cdfcb0d","line":162,"range":{"start_line":162,"start_character":56,"end_line":162,"end_character":71},"updated":"2016-12-14 20:11:29.000000000","message":"Move into LOG.debug call and pass in format values as args.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                LOG.debug(msg)"},{"line_number":164,"context_line":"                interval \u003d schedule.get(\u0027interval\u0027, \u0027\u0027)"},{"line_number":165,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":166,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"},{"line_number":167,"context_line":"                           {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":168,"context_line":"                    LOG.error(msg)"},{"line_number":169,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_4ce543da","line":166,"range":{"start_line":166,"start_character":60,"end_line":166,"end_character":62},"updated":"2016-12-14 20:11:29.000000000","message":"Same.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                LOG.debug(msg)"},{"line_number":164,"context_line":"                interval \u003d schedule.get(\u0027interval\u0027, \u0027\u0027)"},{"line_number":165,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":166,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"},{"line_number":167,"context_line":"                           {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":168,"context_line":"                    LOG.error(msg)"},{"line_number":169,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_0125685a","line":166,"range":{"start_line":166,"start_character":60,"end_line":166,"end_character":62},"in_reply_to":"1a6eadb0_4ce543da","updated":"2016-12-20 06:34:47.000000000","message":"This msg is used in the exception being raised on line 170 as well though.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":170,"context_line":"                        data\u003dmsg)"},{"line_number":171,"context_line":"            else:"},{"line_number":172,"context_line":"                LOG.debug(\u0027create %(sch)s\u0027 % {\u0027sch\u0027: name})"},{"line_number":173,"context_line":"                self._call_xiv_xcli(\"schedule_create\","},{"line_number":174,"context_line":"                                    schedule\u003dname, type\u003d\u0027interval\u0027,"},{"line_number":175,"context_line":"                                    interval\u003drate.schedule)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8cd3db03","line":172,"range":{"start_line":172,"start_character":42,"end_line":172,"end_character":44},"updated":"2016-12-14 20:11:29.000000000","message":"% \u003e ,","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":170,"context_line":"                        data\u003dmsg)"},{"line_number":171,"context_line":"            else:"},{"line_number":172,"context_line":"                LOG.debug(\u0027create %(sch)s\u0027 % {\u0027sch\u0027: name})"},{"line_number":173,"context_line":"                self._call_xiv_xcli(\"schedule_create\","},{"line_number":174,"context_line":"                                    schedule\u003dname, type\u003d\u0027interval\u0027,"},{"line_number":175,"context_line":"                                    interval\u003drate.schedule)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a1ebd4da","line":172,"range":{"start_line":172,"start_character":42,"end_line":172,"end_character":44},"in_reply_to":"1a6eadb0_8cd3db03","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @proxy._trace_time"},{"line_number":178,"context_line":"    def _update_remote_schedule_objects(self):"},{"line_number":179,"context_line":"        \u0027\u0027\u0027Set schedule objects on remote backend."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        The value 00:20:00 is covered in XIV by a pre-defined object named"},{"line_number":182,"context_line":"        min_interval."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_54d665f1","line":179,"updated":"2016-12-16 03:19:36.000000000","message":"\"\"\"","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @proxy._trace_time"},{"line_number":178,"context_line":"    def _update_remote_schedule_objects(self):"},{"line_number":179,"context_line":"        \u0027\u0027\u0027Set schedule objects on remote backend."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        The value 00:20:00 is covered in XIV by a pre-defined object named"},{"line_number":182,"context_line":"        min_interval."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_21b6e4f8","line":179,"in_reply_to":"1a6eadb0_54d665f1","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                continue"},{"line_number":188,"context_line":"            name \u003d rate.schedule_name"},{"line_number":189,"context_line":"            if schedules.get(name, None):"},{"line_number":190,"context_line":"                LOG.debug(\u0027Exists on remote backend %(sch)s\u0027 % {\u0027sch\u0027: name})"},{"line_number":191,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":192,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":193,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_acd097f7","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":62},"updated":"2016-12-14 20:11:29.000000000","message":"% \u003e ,","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                continue"},{"line_number":188,"context_line":"            name \u003d rate.schedule_name"},{"line_number":189,"context_line":"            if schedules.get(name, None):"},{"line_number":190,"context_line":"                LOG.debug(\u0027Exists on remote backend %(sch)s\u0027 % {\u0027sch\u0027: name})"},{"line_number":191,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":192,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":193,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_81c7b862","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":62},"in_reply_to":"1a6eadb0_acd097f7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":192,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":193,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"},{"line_number":194,"context_line":"                           {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":195,"context_line":"                    LOG.error(msg)"},{"line_number":196,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":197,"context_line":"                        data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_d400b568","line":194,"updated":"2016-12-16 03:19:36.000000000","message":"Need _()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return"},{"line_number":206,"context_line":"        local_ibm_storage_cli \u003d self._init_xcli(strings.PRIMARY_BACKEND_ID)"},{"line_number":207,"context_line":"        if not local_ibm_storage_cli:"},{"line_number":208,"context_line":"            LOG.error(_LE(\u0027Failed to connect to main backend.\u0027"},{"line_number":209,"context_line":"                          \u0027Cannot retrieve main backend system_id\u0027))"},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":"        system_id \u003d local_ibm_storage_cli.cmd.config_get().as_dict("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_0c06eb85","line":208,"range":{"start_line":208,"start_character":61,"end_line":208,"end_character":62},"updated":"2016-12-14 20:11:29.000000000","message":"Missing space on the end.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            return"},{"line_number":206,"context_line":"        local_ibm_storage_cli \u003d self._init_xcli(strings.PRIMARY_BACKEND_ID)"},{"line_number":207,"context_line":"        if not local_ibm_storage_cli:"},{"line_number":208,"context_line":"            LOG.error(_LE(\u0027Failed to connect to main backend.\u0027"},{"line_number":209,"context_line":"                          \u0027Cannot retrieve main backend system_id\u0027))"},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":"        system_id \u003d local_ibm_storage_cli.cmd.config_get().as_dict("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a199147b","line":208,"range":{"start_line":208,"start_character":61,"end_line":208,"end_character":62},"in_reply_to":"1a6eadb0_0c06eb85","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0a92b9ff11ec8b1bb065b82ee002edf098ba27de","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":"        system_id \u003d local_ibm_storage_cli.cmd.config_get().as_dict("},{"line_number":212,"context_line":"            \u0027name\u0027)[\u0027system_id\u0027].value"},{"line_number":213,"context_line":"        LOG.debug(\u0027system_id: %(id)s\u0027 %"},{"line_number":214,"context_line":"                  {\u0027id\u0027: system_id})"},{"line_number":215,"context_line":"        self.system_id \u003d system_id"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_4cfc6372","line":213,"range":{"start_line":213,"start_character":37,"end_line":213,"end_character":39},"updated":"2016-12-14 20:11:29.000000000","message":"% \u003e ,","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":"        system_id \u003d local_ibm_storage_cli.cmd.config_get().as_dict("},{"line_number":212,"context_line":"            \u0027name\u0027)[\u0027system_id\u0027].value"},{"line_number":213,"context_line":"        LOG.debug(\u0027system_id: %(id)s\u0027 %"},{"line_number":214,"context_line":"                  {\u0027id\u0027: system_id})"},{"line_number":215,"context_line":"        self.system_id \u003d system_id"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_617a9c25","line":213,"range":{"start_line":213,"start_character":37,"end_line":213,"end_character":39},"in_reply_to":"1a6eadb0_4cfc6372","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            # list is not empty, check if class has the right values"},{"line_number":289,"context_line":"            for perf_class in classes_list:"},{"line_number":290,"context_line":"                if not perf_class.max_iops \u003d\u003d specs.get(\u0027iops\u0027, \u00270\u0027) or \\"},{"line_number":291,"context_line":"                        not perf_class.max_bw \u003d\u003d specs.get(\u0027bw\u0027, \u00270\u0027):"},{"line_number":292,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":293,"context_line":"                        data\u003dstrings.PERF_CLASS_VALUES_ERROR %"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_14f78d8b","line":290,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"            # list is not empty, check if class has the right values"},{"line_number":289,"context_line":"            for perf_class in classes_list:"},{"line_number":290,"context_line":"                if not perf_class.max_iops \u003d\u003d specs.get(\u0027iops\u0027, \u00270\u0027) or \\"},{"line_number":291,"context_line":"                        not perf_class.max_bw \u003d\u003d specs.get(\u0027bw\u0027, \u00270\u0027):"},{"line_number":292,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":293,"context_line":"                        data\u003dstrings.PERF_CLASS_VALUES_ERROR %"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e1bb0cc2","line":290,"in_reply_to":"1a6eadb0_14f78d8b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            LOG.debug(\u0027_get_replication_info: specs %(specs)s\u0027,"},{"line_number":346,"context_line":"                      {\u0027specs\u0027: specs})"},{"line_number":347,"context_line":"            info[\u0027enabled\u0027] \u003d specs.get("},{"line_number":348,"context_line":"                \u0027replication_enabled\u0027, \u0027\u0027).upper() \\"},{"line_number":349,"context_line":"                in (u\u0027TRUE\u0027, strings.METADATA_IS_TRUE)"},{"line_number":350,"context_line":"            replication_type \u003d specs.get(\u0027replication_type\u0027, SYNC).lower()"},{"line_number":351,"context_line":"            if replication_type in (u\u0027sync\u0027, u\u0027\u003cis\u003e sync\u0027):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_34e569a7","line":348,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            LOG.debug(\u0027_get_replication_info: specs %(specs)s\u0027,"},{"line_number":346,"context_line":"                      {\u0027specs\u0027: specs})"},{"line_number":347,"context_line":"            info[\u0027enabled\u0027] \u003d specs.get("},{"line_number":348,"context_line":"                \u0027replication_enabled\u0027, \u0027\u0027).upper() \\"},{"line_number":349,"context_line":"                in (u\u0027TRUE\u0027, strings.METADATA_IS_TRUE)"},{"line_number":350,"context_line":"            replication_type \u003d specs.get(\u0027replication_type\u0027, SYNC).lower()"},{"line_number":351,"context_line":"            if replication_type in (u\u0027sync\u0027, u\u0027\u003cis\u003e sync\u0027):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_61cffc55","line":348,"in_reply_to":"1a6eadb0_34e569a7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":429,"context_line":"        self._create_volume(volume)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        if cg:"},{"line_number":432,"context_line":"            volume_update[\u0027consistencygroup_id\u0027] \u003d \\"},{"line_number":433,"context_line":"                volume.get(\u0027consistencygroup_id\u0027, None)"},{"line_number":434,"context_line":"            try:"},{"line_number":435,"context_line":"                self._call_xiv_xcli("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_949b9d17","line":432,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":429,"context_line":"        self._create_volume(volume)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        if cg:"},{"line_number":432,"context_line":"            volume_update[\u0027consistencygroup_id\u0027] \u003d \\"},{"line_number":433,"context_line":"                volume.get(\u0027consistencygroup_id\u0027, None)"},{"line_number":434,"context_line":"            try:"},{"line_number":435,"context_line":"                self._call_xiv_xcli("}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_41fbe078","line":432,"in_reply_to":"1a6eadb0_949b9d17","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        lun_id \u003d self._vol_map_and_get_lun_id("},{"line_number":711,"context_line":"            volume, connector, host)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        meta \u003d \\"},{"line_number":714,"context_line":"            {"},{"line_number":715,"context_line":"                \u0027driver_volume_type\u0027: connection_type,"},{"line_number":716,"context_line":"                \u0027data\u0027:"},{"line_number":717,"context_line":"                {"},{"line_number":718,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":719,"context_line":"                    \u0027target_lun\u0027: lun_id,"},{"line_number":720,"context_line":"                    \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":721,"context_line":"                },"},{"line_number":722,"context_line":"            }"},{"line_number":723,"context_line":"        if connection_type \u003d\u003d storage.XIV_CONNECTION_TYPE_ISCSI:"},{"line_number":724,"context_line":"            meta[\u0027data\u0027][\u0027target_portal\u0027] \u003d self.meta[\u0027ibm_storage_portal\u0027]"},{"line_number":725,"context_line":"            meta[\u0027data\u0027][\u0027target_iqn\u0027] \u003d self.meta[\u0027ibm_storage_iqn\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_f405b145","line":722,"range":{"start_line":713,"start_character":15,"end_line":722,"end_character":13},"updated":"2016-12-16 03:19:36.000000000","message":"See guideline on dictionaries:\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        lun_id \u003d self._vol_map_and_get_lun_id("},{"line_number":711,"context_line":"            volume, connector, host)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        meta \u003d \\"},{"line_number":714,"context_line":"            {"},{"line_number":715,"context_line":"                \u0027driver_volume_type\u0027: connection_type,"},{"line_number":716,"context_line":"                \u0027data\u0027:"},{"line_number":717,"context_line":"                {"},{"line_number":718,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":719,"context_line":"                    \u0027target_lun\u0027: lun_id,"},{"line_number":720,"context_line":"                    \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":721,"context_line":"                },"},{"line_number":722,"context_line":"            }"},{"line_number":723,"context_line":"        if connection_type \u003d\u003d storage.XIV_CONNECTION_TYPE_ISCSI:"},{"line_number":724,"context_line":"            meta[\u0027data\u0027][\u0027target_portal\u0027] \u003d self.meta[\u0027ibm_storage_portal\u0027]"},{"line_number":725,"context_line":"            meta[\u0027data\u0027][\u0027target_iqn\u0027] \u003d self.meta[\u0027ibm_storage_iqn\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e1306c58","line":722,"range":{"start_line":713,"start_character":15,"end_line":722,"end_character":13},"in_reply_to":"1a6eadb0_f405b145","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":744,"context_line":"            modules \u003d set()"},{"line_number":745,"context_line":"            for wwpn in fc_targets:"},{"line_number":746,"context_line":"                modules.add(wwpn[-2])"},{"line_number":747,"context_line":"            meta[\u0027data\u0027][\u0027recommended_connections\u0027] \u003d \\"},{"line_number":748,"context_line":"                len(modules) * CONNECTIONS_PER_MODULE"},{"line_number":749,"context_line":"            meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":750,"context_line":"            if fc_targets \u003d\u003d []:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3493a9fb","line":747,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":744,"context_line":"            modules \u003d set()"},{"line_number":745,"context_line":"            for wwpn in fc_targets:"},{"line_number":746,"context_line":"                modules.add(wwpn[-2])"},{"line_number":747,"context_line":"            meta[\u0027data\u0027][\u0027recommended_connections\u0027] \u003d \\"},{"line_number":748,"context_line":"                len(modules) * CONNECTIONS_PER_MODULE"},{"line_number":749,"context_line":"            meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":750,"context_line":"            if fc_targets \u003d\u003d []:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_010ba87d","line":747,"in_reply_to":"1a6eadb0_3493a9fb","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":812,"context_line":"                        {"},{"line_number":813,"context_line":"                            \u0027driver_volume_type\u0027: self._get_connection_type(),"},{"line_number":814,"context_line":"                            \u0027data\u0027: {\u0027volume_id\u0027: volume[\u0027id\u0027], },"},{"line_number":815,"context_line":"                        }"},{"line_number":816,"context_line":"                    meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":817,"context_line":"                    meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d \\"},{"line_number":818,"context_line":"                        self._build_initiator_target_map(fc_targets, connector)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_94c2bde7","line":815,"updated":"2016-12-16 03:19:36.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":812,"context_line":"                        {"},{"line_number":813,"context_line":"                            \u0027driver_volume_type\u0027: self._get_connection_type(),"},{"line_number":814,"context_line":"                            \u0027data\u0027: {\u0027volume_id\u0027: volume[\u0027id\u0027], },"},{"line_number":815,"context_line":"                        }"},{"line_number":816,"context_line":"                    meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":817,"context_line":"                    meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d \\"},{"line_number":818,"context_line":"                        self._build_initiator_target_map(fc_targets, connector)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_218504ce","line":815,"in_reply_to":"1a6eadb0_94c2bde7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":814,"context_line":"                            \u0027data\u0027: {\u0027volume_id\u0027: volume[\u0027id\u0027], },"},{"line_number":815,"context_line":"                        }"},{"line_number":816,"context_line":"                    meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":817,"context_line":"                    meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d \\"},{"line_number":818,"context_line":"                        self._build_initiator_target_map(fc_targets, connector)"},{"line_number":819,"context_line":"                self._call_xiv_xcli(\"host_delete\", host\u003dhost.name)"},{"line_number":820,"context_line":"                if not self._is_iscsi():"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b4b5f97e","line":817,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":814,"context_line":"                            \u0027data\u0027: {\u0027volume_id\u0027: volume[\u0027id\u0027], },"},{"line_number":815,"context_line":"                        }"},{"line_number":816,"context_line":"                    meta[\u0027data\u0027][\u0027target_wwn\u0027] \u003d fc_targets"},{"line_number":817,"context_line":"                    meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d \\"},{"line_number":818,"context_line":"                        self._build_initiator_target_map(fc_targets, connector)"},{"line_number":819,"context_line":"                self._call_xiv_xcli(\"host_delete\", host\u003dhost.name)"},{"line_number":820,"context_line":"                if not self._is_iscsi():"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_8176d803","line":817,"in_reply_to":"1a6eadb0_b4b5f97e","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1169,"context_line":"            active \u003d volume_replication_mgr.is_mirror_active("},{"line_number":1170,"context_line":"                resource_id\u003dvolume[\u0027name\u0027])"},{"line_number":1171,"context_line":"        except Exception as e:"},{"line_number":1172,"context_line":"            active \u003d False"},{"line_number":1173,"context_line":"        state \u003d \u0027active\u0027 if active else \u0027inactive\u0027"},{"line_number":1174,"context_line":"        LOG.debug(\u0027Mirroring is %(state)s\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_14af8d2a","line":1171,"updated":"2016-12-16 03:19:36.000000000","message":"Remove e as it is not used.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1169,"context_line":"            active \u003d volume_replication_mgr.is_mirror_active("},{"line_number":1170,"context_line":"                resource_id\u003dvolume[\u0027name\u0027])"},{"line_number":1171,"context_line":"        except Exception as e:"},{"line_number":1172,"context_line":"            active \u003d False"},{"line_number":1173,"context_line":"        state \u003d \u0027active\u0027 if active else \u0027inactive\u0027"},{"line_number":1174,"context_line":"        LOG.debug(\u0027Mirroring is %(state)s\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c1c9b027","line":1171,"in_reply_to":"1a6eadb0_14af8d2a","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"        # Create volume manager for both master and remote"},{"line_number":1275,"context_line":"        volume_replication_mgr \u003d volume_recovery_manager.VolumeRecoveryManager("},{"line_number":1276,"context_line":"            False, self.ibm_storage_cli)"},{"line_number":1277,"context_line":"        failover_volume_replication_mgr \u003d \\"},{"line_number":1278,"context_line":"            volume_recovery_manager.VolumeRecoveryManager("},{"line_number":1279,"context_line":"                True, self.ibm_storage_remote_cli)"},{"line_number":1280,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_34aac919","line":1277,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"        # Create volume manager for both master and remote"},{"line_number":1275,"context_line":"        volume_replication_mgr \u003d volume_recovery_manager.VolumeRecoveryManager("},{"line_number":1276,"context_line":"            False, self.ibm_storage_cli)"},{"line_number":1277,"context_line":"        failover_volume_replication_mgr \u003d \\"},{"line_number":1278,"context_line":"            volume_recovery_manager.VolumeRecoveryManager("},{"line_number":1279,"context_line":"                True, self.ibm_storage_remote_cli)"},{"line_number":1280,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_41de80dd","line":1277,"in_reply_to":"1a6eadb0_34aac919","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"        self.meta[\u0027stat\u0027][\u0027QoS_support\u0027] \u003d \\"},{"line_number":1432,"context_line":"            self._check_storage_version_for_qos_support()"},{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"        self.meta[\u0027stat\u0027][\u0027location_info\u0027] \u003d\\"},{"line_number":1435,"context_line":"            (\u0027%(destination)s:%(hostname)s:%(pool)s\u0027 %"},{"line_number":1436,"context_line":"             {\u0027destination\u0027: strings.XIV_BACKEND_PREFIX,"},{"line_number":1437,"context_line":"              \u0027hostname\u0027: self.storage_info[storage.FLAG_KEYS[\u0027address\u0027]],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7466012b","line":1434,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"        self.meta[\u0027stat\u0027][\u0027QoS_support\u0027] \u003d \\"},{"line_number":1432,"context_line":"            self._check_storage_version_for_qos_support()"},{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"        self.meta[\u0027stat\u0027][\u0027location_info\u0027] \u003d\\"},{"line_number":1435,"context_line":"            (\u0027%(destination)s:%(hostname)s:%(pool)s\u0027 %"},{"line_number":1436,"context_line":"             {\u0027destination\u0027: strings.XIV_BACKEND_PREFIX,"},{"line_number":1437,"context_line":"              \u0027hostname\u0027: self.storage_info[storage.FLAG_KEYS[\u0027address\u0027]],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_01e728ac","line":1434,"in_reply_to":"1a6eadb0_7466012b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1503,"context_line":"                vol_src\u003dsrc_vref[\u0027name\u0027],"},{"line_number":1504,"context_line":"                vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":1505,"context_line":"        except errors.XCLIError as e:"},{"line_number":1506,"context_line":"            error \u003d \"Fatal: Failed to copy from \u0027%s\u0027 to \u0027%s\u0027: %s\" % \\"},{"line_number":1507,"context_line":"                (src_vref.get(\u0027name\u0027, \u0027\u0027), volume.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1508,"context_line":"                 self._get_code_and_status_or_message(e))"},{"line_number":1509,"context_line":"            LOG.error(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_9469ddfb","line":1506,"updated":"2016-12-16 03:19:36.000000000","message":"()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1503,"context_line":"                vol_src\u003dsrc_vref[\u0027name\u0027],"},{"line_number":1504,"context_line":"                vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":1505,"context_line":"        except errors.XCLIError as e:"},{"line_number":1506,"context_line":"            error \u003d \"Fatal: Failed to copy from \u0027%s\u0027 to \u0027%s\u0027: %s\" % \\"},{"line_number":1507,"context_line":"                (src_vref.get(\u0027name\u0027, \u0027\u0027), volume.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1508,"context_line":"                 self._get_code_and_status_or_message(e))"},{"line_number":1509,"context_line":"            LOG.error(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c197f0e9","line":1506,"in_reply_to":"1a6eadb0_9469ddfb","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        A utility method to translate from id"},{"line_number":1537,"context_line":"        to CG name on the storage"},{"line_number":1538,"context_line":"        \u0027\u0027\u0027"},{"line_number":1539,"context_line":"        return \"cg_{id}\".format(id\u003did)"},{"line_number":1540,"context_line":""},{"line_number":1541,"context_line":"    def _group_name_from_id(self, id):"},{"line_number":1542,"context_line":"        \u0027\u0027\u0027Get storage group name from id."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_3481e98f","line":1539,"updated":"2016-12-16 03:19:36.000000000","message":"Please use %s instead of .format.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        A utility method to translate from id"},{"line_number":1537,"context_line":"        to CG name on the storage"},{"line_number":1538,"context_line":"        \u0027\u0027\u0027"},{"line_number":1539,"context_line":"        return \"cg_{id}\".format(id\u003did)"},{"line_number":1540,"context_line":""},{"line_number":1541,"context_line":"    def _group_name_from_id(self, id):"},{"line_number":1542,"context_line":"        \u0027\u0027\u0027Get storage group name from id."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a18d94d4","line":1539,"in_reply_to":"1a6eadb0_3481e98f","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"        A utility method to translate from id"},{"line_number":1545,"context_line":"        to Snapshot Group name on the storage"},{"line_number":1546,"context_line":"        \u0027\u0027\u0027"},{"line_number":1547,"context_line":"        return \"cgs_{id}\".format(id\u003did)"},{"line_number":1548,"context_line":""},{"line_number":1549,"context_line":"    def _cg_name_from_volume(self, volume):"},{"line_number":1550,"context_line":"        \u0027\u0027\u0027Get storage CG name from volume."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b443396b","line":1547,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"        A utility method to translate from id"},{"line_number":1545,"context_line":"        to Snapshot Group name on the storage"},{"line_number":1546,"context_line":"        \u0027\u0027\u0027"},{"line_number":1547,"context_line":"        return \"cgs_{id}\".format(id\u003did)"},{"line_number":1548,"context_line":""},{"line_number":1549,"context_line":"    def _cg_name_from_volume(self, volume):"},{"line_number":1550,"context_line":"        \u0027\u0027\u0027Get storage CG name from volume."}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c1be1064","line":1547,"in_reply_to":"1a6eadb0_b443396b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1591,"context_line":""},{"line_number":1592,"context_line":"    def _volume_name_from_cg_snapshot(self, cgs, vol):"},{"line_number":1593,"context_line":"        # Note: The string is limited by the storage to 63 characters"},{"line_number":1594,"context_line":"        return \u0027{cgs}.{vol}\u0027.format(cgs\u003dcgs, vol\u003dvol)[0:62]"},{"line_number":1595,"context_line":""},{"line_number":1596,"context_line":"    @proxy._trace_time"},{"line_number":1597,"context_line":"    def create_consistencygroup(self, context, group):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_744d2199","line":1594,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1591,"context_line":""},{"line_number":1592,"context_line":"    def _volume_name_from_cg_snapshot(self, cgs, vol):"},{"line_number":1593,"context_line":"        # Note: The string is limited by the storage to 63 characters"},{"line_number":1594,"context_line":"        return \u0027{cgs}.{vol}\u0027.format(cgs\u003dcgs, vol\u003dvol)[0:62]"},{"line_number":1595,"context_line":""},{"line_number":1596,"context_line":"    @proxy._trace_time"},{"line_number":1597,"context_line":"    def create_consistencygroup(self, context, group):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_016c8806","line":1594,"in_reply_to":"1a6eadb0_744d2199","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1608,"context_line":"                pool\u003dself.storage_info["},{"line_number":1609,"context_line":"                    storage.FLAG_KEYS[\u0027storage_pool\u0027]]).as_list"},{"line_number":1610,"context_line":"        except errors.CgNameExistsError as e:"},{"line_number":1611,"context_line":"            error \u003d \"consistency group %s already exists on backend\" % cgname"},{"line_number":1612,"context_line":"            LOG.error(error)"},{"line_number":1613,"context_line":"            raise self._get_exception()(error)"},{"line_number":1614,"context_line":"        except errors.CgLimitReachedError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_34580956","line":1611,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1608,"context_line":"                pool\u003dself.storage_info["},{"line_number":1609,"context_line":"                    storage.FLAG_KEYS[\u0027storage_pool\u0027]]).as_list"},{"line_number":1610,"context_line":"        except errors.CgNameExistsError as e:"},{"line_number":1611,"context_line":"            error \u003d \"consistency group %s already exists on backend\" % cgname"},{"line_number":1612,"context_line":"            LOG.error(error)"},{"line_number":1613,"context_line":"            raise self._get_exception()(error)"},{"line_number":1614,"context_line":"        except errors.CgLimitReachedError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c11a907c","line":1611,"in_reply_to":"1a6eadb0_34580956","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            LOG.error(error)"},{"line_number":1613,"context_line":"            raise self._get_exception()(error)"},{"line_number":1614,"context_line":"        except errors.CgLimitReachedError as e:"},{"line_number":1615,"context_line":"            error \u003d \"Reached Maximum number of consistency groups\""},{"line_number":1616,"context_line":"            LOG.error(error)"},{"line_number":1617,"context_line":"            raise self._get_exception()(error)"},{"line_number":1618,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b43a59e5","line":1615,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            LOG.error(error)"},{"line_number":1613,"context_line":"            raise self._get_exception()(error)"},{"line_number":1614,"context_line":"        except errors.CgLimitReachedError as e:"},{"line_number":1615,"context_line":"            error \u003d \"Reached Maximum number of consistency groups\""},{"line_number":1616,"context_line":"            LOG.error(error)"},{"line_number":1617,"context_line":"            raise self._get_exception()(error)"},{"line_number":1618,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a1003403","line":1615,"in_reply_to":"1a6eadb0_b43a59e5","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"                LOG.error("},{"line_number":1663,"context_line":"                    _LE(\"Creating CG from cgsnapshot failed: %(details)s\"),"},{"line_number":1664,"context_line":"                    {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1665,"context_line":"                raise e"},{"line_number":1666,"context_line":"            created_volumes \u003d []"},{"line_number":1667,"context_line":"            try:"},{"line_number":1668,"context_line":"                groupname \u003d self._group_name_from_cgsnapshot(cgsnapshot)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_1424edc2","line":1665,"updated":"2016-12-16 03:19:36.000000000","message":"Remove e","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"                LOG.error("},{"line_number":1663,"context_line":"                    _LE(\"Creating CG from cgsnapshot failed: %(details)s\"),"},{"line_number":1664,"context_line":"                    {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1665,"context_line":"                raise e"},{"line_number":1666,"context_line":"            created_volumes \u003d []"},{"line_number":1667,"context_line":"            try:"},{"line_number":1668,"context_line":"                groupname \u003d self._group_name_from_cgsnapshot(cgsnapshot)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_041f365b","line":1665,"in_reply_to":"1a6eadb0_1424edc2","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1692,"context_line":"                # cleanup and then raise exception"},{"line_number":1693,"context_line":"                self._silent_cleanup_consistencygroup_from_src("},{"line_number":1694,"context_line":"                    context, group, created_volumes, cgname)"},{"line_number":1695,"context_line":"                raise e"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        elif source_cg and sorted_source_vols:"},{"line_number":1698,"context_line":"            LOG.debug(\"Creating from CG %(cg)s .\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_941e3d6e","line":1695,"updated":"2016-12-16 03:19:36.000000000","message":"Remove e","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1692,"context_line":"                # cleanup and then raise exception"},{"line_number":1693,"context_line":"                self._silent_cleanup_consistencygroup_from_src("},{"line_number":1694,"context_line":"                    context, group, created_volumes, cgname)"},{"line_number":1695,"context_line":"                raise e"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        elif source_cg and sorted_source_vols:"},{"line_number":1698,"context_line":"            LOG.debug(\"Creating from CG %(cg)s .\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a42e8289","line":1695,"in_reply_to":"1a6eadb0_941e3d6e","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1703,"context_line":"            except Exception as e:"},{"line_number":1704,"context_line":"                LOG.error(_LE(\"Creating CG from CG failed: %(details)s\"),"},{"line_number":1705,"context_line":"                          {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1706,"context_line":"                raise e"},{"line_number":1707,"context_line":"            created_volumes \u003d []"},{"line_number":1708,"context_line":"            try:"},{"line_number":1709,"context_line":"                for volume, source in zip(volumes, sorted_source_vols):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_542ae590","line":1706,"updated":"2016-12-16 03:19:36.000000000","message":"Remove e","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1703,"context_line":"            except Exception as e:"},{"line_number":1704,"context_line":"                LOG.error(_LE(\"Creating CG from CG failed: %(details)s\"),"},{"line_number":1705,"context_line":"                          {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1706,"context_line":"                raise e"},{"line_number":1707,"context_line":"            created_volumes \u003d []"},{"line_number":1708,"context_line":"            try:"},{"line_number":1709,"context_line":"                for volume, source in zip(volumes, sorted_source_vols):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e4795a94","line":1706,"in_reply_to":"1a6eadb0_542ae590","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                # cleanup and then raise exception"},{"line_number":1722,"context_line":"                self._silent_cleanup_consistencygroup_from_src("},{"line_number":1723,"context_line":"                    context, group, created_volumes, cgname)"},{"line_number":1724,"context_line":"                raise e"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"        else:"},{"line_number":1727,"context_line":"            error \u003d \u0027create_consistencygroup_from_src called without a source\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b411795f","line":1724,"updated":"2016-12-16 03:19:36.000000000","message":"Just \"raise\" is enough","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                # cleanup and then raise exception"},{"line_number":1722,"context_line":"                self._silent_cleanup_consistencygroup_from_src("},{"line_number":1723,"context_line":"                    context, group, created_volumes, cgname)"},{"line_number":1724,"context_line":"                raise e"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"        else:"},{"line_number":1727,"context_line":"            error \u003d \u0027create_consistencygroup_from_src called without a source\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_64662aee","line":1724,"in_reply_to":"1a6eadb0_b411795f","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1784,"context_line":"                    \"cg_delete\", cg\u003dcgname).as_list"},{"line_number":1785,"context_line":"                model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":1786,"context_line":"            except errors.CgDoesNotExistError as e:"},{"line_number":1787,"context_line":"                error \u003d \"consistency group %s does not exist \" \\"},{"line_number":1788,"context_line":"                        \"on backend\" % cgname"},{"line_number":1789,"context_line":"                LOG.error(error)"},{"line_number":1790,"context_line":"                raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_54010505","line":1787,"updated":"2016-12-16 03:19:36.000000000","message":"_()\n\nUse () instead of \\","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1784,"context_line":"                    \"cg_delete\", cg\u003dcgname).as_list"},{"line_number":1785,"context_line":"                model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":1786,"context_line":"            except errors.CgDoesNotExistError as e:"},{"line_number":1787,"context_line":"                error \u003d \"consistency group %s does not exist \" \\"},{"line_number":1788,"context_line":"                        \"on backend\" % cgname"},{"line_number":1789,"context_line":"                LOG.error(error)"},{"line_number":1790,"context_line":"                raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_04a49605","line":1787,"in_reply_to":"1a6eadb0_54010505","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"                LOG.error(error)"},{"line_number":1790,"context_line":"                raise self._get_exception()(error)"},{"line_number":1791,"context_line":"            except errors.CgHasMirrorError as e:"},{"line_number":1792,"context_line":"                error \u003d \"consistency group %s is being mirrored \" % cgname"},{"line_number":1793,"context_line":"                LOG.error(error)"},{"line_number":1794,"context_line":"                raise self._get_exception()(error)"},{"line_number":1795,"context_line":"            except errors.CgNotEmptyError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b7089b29","line":1792,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"                LOG.error(error)"},{"line_number":1790,"context_line":"                raise self._get_exception()(error)"},{"line_number":1791,"context_line":"            except errors.CgHasMirrorError as e:"},{"line_number":1792,"context_line":"                error \u003d \"consistency group %s is being mirrored \" % cgname"},{"line_number":1793,"context_line":"                LOG.error(error)"},{"line_number":1794,"context_line":"                raise self._get_exception()(error)"},{"line_number":1795,"context_line":"            except errors.CgNotEmptyError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_24a7d20b","line":1792,"in_reply_to":"1a6eadb0_b7089b29","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1793,"context_line":"                LOG.error(error)"},{"line_number":1794,"context_line":"                raise self._get_exception()(error)"},{"line_number":1795,"context_line":"            except errors.CgNotEmptyError as e:"},{"line_number":1796,"context_line":"                error \u003d \"consistency group %s is not empty \" % cgname"},{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                raise self._get_exception()(error)"},{"line_number":1799,"context_line":"            except errors.CgBadNameError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_f716934a","line":1796,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1793,"context_line":"                LOG.error(error)"},{"line_number":1794,"context_line":"                raise self._get_exception()(error)"},{"line_number":1795,"context_line":"            except errors.CgNotEmptyError as e:"},{"line_number":1796,"context_line":"                error \u003d \"consistency group %s is not empty \" % cgname"},{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                raise self._get_exception()(error)"},{"line_number":1799,"context_line":"            except errors.CgBadNameError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_64ad4ae8","line":1796,"in_reply_to":"1a6eadb0_f716934a","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                raise self._get_exception()(error)"},{"line_number":1799,"context_line":"            except errors.CgBadNameError as e:"},{"line_number":1800,"context_line":"                error \u003d \"consistency group %s does not exist \" % cgname"},{"line_number":1801,"context_line":"                LOG.error(error)"},{"line_number":1802,"context_line":"                raise self._get_exception()(error)"},{"line_number":1803,"context_line":"            except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_17122f57","line":1800,"updated":"2016-12-16 03:19:36.000000000","message":"_()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                raise self._get_exception()(error)"},{"line_number":1799,"context_line":"            except errors.CgBadNameError as e:"},{"line_number":1800,"context_line":"                error \u003d \"consistency group %s does not exist \" % cgname"},{"line_number":1801,"context_line":"                LOG.error(error)"},{"line_number":1802,"context_line":"                raise self._get_exception()(error)"},{"line_number":1803,"context_line":"            except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a4b3e24b","line":1800,"in_reply_to":"1a6eadb0_17122f57","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1801,"context_line":"                LOG.error(error)"},{"line_number":1802,"context_line":"                raise self._get_exception()(error)"},{"line_number":1803,"context_line":"            except errors.XCLIError as e:"},{"line_number":1804,"context_line":"                error \u003d \"Fatal: %s. CG: %s\" \\"},{"line_number":1805,"context_line":"                    % self._get_code_and_status_or_message(e), cgname"},{"line_number":1806,"context_line":"                LOG.error(error)"},{"line_number":1807,"context_line":"                raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_97055f12","line":1804,"updated":"2016-12-16 03:19:36.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1801,"context_line":"                LOG.error(error)"},{"line_number":1802,"context_line":"                raise self._get_exception()(error)"},{"line_number":1803,"context_line":"            except errors.XCLIError as e:"},{"line_number":1804,"context_line":"                error \u003d \"Fatal: %s. CG: %s\" \\"},{"line_number":1805,"context_line":"                    % self._get_code_and_status_or_message(e), cgname"},{"line_number":1806,"context_line":"                LOG.error(error)"},{"line_number":1807,"context_line":"                raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c4845e5f","line":1804,"in_reply_to":"1a6eadb0_97055f12","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                    self._call_xiv_xcli("},{"line_number":1873,"context_line":"                        \"cg_add_vol\", vol\u003dvolume[\u0027name\u0027], cg\u003dcgname)"},{"line_number":1874,"context_line":"                except Exception:"},{"line_number":1875,"context_line":"                    LOG.debug(\"cg_add_vol(%s, %s) failed\" %"},{"line_number":1876,"context_line":"                              volume[\u0027name\u0027], cgname)"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_17394fd7","line":1875,"updated":"2016-12-16 03:19:36.000000000","message":"Use keyword parameters.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1872,"context_line":"                    self._call_xiv_xcli("},{"line_number":1873,"context_line":"                        \"cg_add_vol\", vol\u003dvolume[\u0027name\u0027], cg\u003dcgname)"},{"line_number":1874,"context_line":"                except Exception:"},{"line_number":1875,"context_line":"                    LOG.debug(\"cg_add_vol(%s, %s) failed\" %"},{"line_number":1876,"context_line":"                              volume[\u0027name\u0027], cgname)"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e43cfa94","line":1875,"in_reply_to":"1a6eadb0_17394fd7","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1925,"context_line":"            LOG.error(error)"},{"line_number":1926,"context_line":"            raise self._get_exception()(error)"},{"line_number":1927,"context_line":"        except errors.XCLIError as e:"},{"line_number":1928,"context_line":"            error \u003d _LE(\"Fatal: CG %(cg)s, Group %(group)s. %(err)s\") % \\"},{"line_number":1929,"context_line":"                {\u0027cg\u0027: cgname,"},{"line_number":1930,"context_line":"                 \u0027group\u0027: groupname,"},{"line_number":1931,"context_line":"                 \u0027err\u0027: self._get_code_and_status_or_message(e)}"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7750c30b","line":1928,"updated":"2016-12-16 03:19:36.000000000","message":"Use _(), not LE\n\nUse () instead of \\","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1925,"context_line":"            LOG.error(error)"},{"line_number":1926,"context_line":"            raise self._get_exception()(error)"},{"line_number":1927,"context_line":"        except errors.XCLIError as e:"},{"line_number":1928,"context_line":"            error \u003d _LE(\"Fatal: CG %(cg)s, Group %(group)s. %(err)s\") % \\"},{"line_number":1929,"context_line":"                {\u0027cg\u0027: cgname,"},{"line_number":1930,"context_line":"                 \u0027group\u0027: groupname,"},{"line_number":1931,"context_line":"                 \u0027err\u0027: self._get_code_and_status_or_message(e)}"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_04401606","line":1928,"in_reply_to":"1a6eadb0_7750c30b","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1955,"context_line":"            self._call_xiv_xcli("},{"line_number":1956,"context_line":"                \"snap_group_delete\", snap_group\u003dgroupname).as_list"},{"line_number":1957,"context_line":"        except errors.CgDoesNotExistError as e:"},{"line_number":1958,"context_line":"            error \u003d _LE(\"consistency group %s does not exist on backend\") % \\"},{"line_number":1959,"context_line":"                cgname"},{"line_number":1960,"context_line":"            LOG.error(error)"},{"line_number":1961,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_17406f33","line":1958,"updated":"2016-12-16 03:19:36.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1955,"context_line":"            self._call_xiv_xcli("},{"line_number":1956,"context_line":"                \"snap_group_delete\", snap_group\u003dgroupname).as_list"},{"line_number":1957,"context_line":"        except errors.CgDoesNotExistError as e:"},{"line_number":1958,"context_line":"            error \u003d _LE(\"consistency group %s does not exist on backend\") % \\"},{"line_number":1959,"context_line":"                cgname"},{"line_number":1960,"context_line":"            LOG.error(error)"},{"line_number":1961,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_24435214","line":1958,"in_reply_to":"1a6eadb0_17406f33","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1960,"context_line":"            LOG.error(error)"},{"line_number":1961,"context_line":"            raise self._get_exception()(error)"},{"line_number":1962,"context_line":"        except errors.PoolSnapshotLimitReachedError as e:"},{"line_number":1963,"context_line":"            error \u003d _LE(\"Reached Maximum size allocated for snapshots\")"},{"line_number":1964,"context_line":"            LOG.error(error)"},{"line_number":1965,"context_line":"            raise self._get_exception()(error)"},{"line_number":1966,"context_line":"        except errors.CgEmptyError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_f76bf3b4","line":1963,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1960,"context_line":"            LOG.error(error)"},{"line_number":1961,"context_line":"            raise self._get_exception()(error)"},{"line_number":1962,"context_line":"        except errors.PoolSnapshotLimitReachedError as e:"},{"line_number":1963,"context_line":"            error \u003d _LE(\"Reached Maximum size allocated for snapshots\")"},{"line_number":1964,"context_line":"            LOG.error(error)"},{"line_number":1965,"context_line":"            raise self._get_exception()(error)"},{"line_number":1966,"context_line":"        except errors.CgEmptyError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_6449ca30","line":1963,"in_reply_to":"1a6eadb0_f76bf3b4","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1964,"context_line":"            LOG.error(error)"},{"line_number":1965,"context_line":"            raise self._get_exception()(error)"},{"line_number":1966,"context_line":"        except errors.CgEmptyError as e:"},{"line_number":1967,"context_line":"            error \u003d _LE(\"Consistency group %s is empty\") % cgname"},{"line_number":1968,"context_line":"            LOG.error(error)"},{"line_number":1969,"context_line":"            raise self._get_exception()(error)"},{"line_number":1970,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_977abf86","line":1967,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1964,"context_line":"            LOG.error(error)"},{"line_number":1965,"context_line":"            raise self._get_exception()(error)"},{"line_number":1966,"context_line":"        except errors.CgEmptyError as e:"},{"line_number":1967,"context_line":"            error \u003d _LE(\"Consistency group %s is empty\") % cgname"},{"line_number":1968,"context_line":"            LOG.error(error)"},{"line_number":1969,"context_line":"            raise self._get_exception()(error)"},{"line_number":1970,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a44f6232","line":1967,"in_reply_to":"1a6eadb0_977abf86","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":1968,"context_line":"            LOG.error(error)"},{"line_number":1969,"context_line":"            raise self._get_exception()(error)"},{"line_number":1970,"context_line":"        except errors.XCLIError as e:"},{"line_number":1971,"context_line":"            error \u003d _LE(\"Fatal: CG %(cg)s, Group %(group)s. %(err)s\") % {"},{"line_number":1972,"context_line":"                \u0027cg\u0027: cgname,"},{"line_number":1973,"context_line":"                \u0027group\u0027: groupname,"},{"line_number":1974,"context_line":"                \u0027err\u0027: self._get_code_and_status_or_message(e)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_374bab5a","line":1971,"updated":"2016-12-16 03:19:36.000000000","message":"same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":1968,"context_line":"            LOG.error(error)"},{"line_number":1969,"context_line":"            raise self._get_exception()(error)"},{"line_number":1970,"context_line":"        except errors.XCLIError as e:"},{"line_number":1971,"context_line":"            error \u003d _LE(\"Fatal: CG %(cg)s, Group %(group)s. %(err)s\") % {"},{"line_number":1972,"context_line":"                \u0027cg\u0027: cgname,"},{"line_number":1973,"context_line":"                \u0027group\u0027: groupname,"},{"line_number":1974,"context_line":"                \u0027err\u0027: self._get_code_and_status_or_message(e)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e4631aaf","line":1971,"in_reply_to":"1a6eadb0_374bab5a","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2032,"context_line":"        except Exception as e:"},{"line_number":2033,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2034,"context_line":"            raise self._get_exception()("},{"line_number":2035,"context_line":"                \"%s %s\" % ("},{"line_number":2036,"context_line":"                    storage.XIV_LOG_PREFIX,"},{"line_number":2037,"context_line":"                    strings.INVALID_CONNECTOR_INFO % {\u0027details\u0027: details}))"},{"line_number":2038,"context_line":"        host \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_575d8713","line":2035,"updated":"2016-12-16 03:19:36.000000000","message":"Use keyword parameters.\n\nNeed _()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2032,"context_line":"        except Exception as e:"},{"line_number":2033,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2034,"context_line":"            raise self._get_exception()("},{"line_number":2035,"context_line":"                \"%s %s\" % ("},{"line_number":2036,"context_line":"                    storage.XIV_LOG_PREFIX,"},{"line_number":2037,"context_line":"                    strings.INVALID_CONNECTOR_INFO % {\u0027details\u0027: details}))"},{"line_number":2038,"context_line":"        host \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e4d87a55","line":2035,"in_reply_to":"1a6eadb0_575d8713","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2105,"context_line":"        \"\"\"Check on chap state and define host accordingly.\"\"\""},{"line_number":2106,"context_line":"        chap_name \u003d None"},{"line_number":2107,"context_line":"        chap_secret \u003d None"},{"line_number":2108,"context_line":"        if (self._get_connection_type() \u003d\u003d storage.XIV_CONNECTION_TYPE_ISCSI) \\"},{"line_number":2109,"context_line":"                and (self._get_chap_type() \u003d\u003d storage.CHAP_ENABLED):"},{"line_number":2110,"context_line":"            host_bunch \u003d dict({\u0027name\u0027: host, \u0027chap\u0027: None, })"},{"line_number":2111,"context_line":"            chap \u003d self._create_chap(host\u003dhost_bunch)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_77852358","line":2108,"updated":"2016-12-16 03:19:36.000000000","message":"Use () instead of \\","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2105,"context_line":"        \"\"\"Check on chap state and define host accordingly.\"\"\""},{"line_number":2106,"context_line":"        chap_name \u003d None"},{"line_number":2107,"context_line":"        chap_secret \u003d None"},{"line_number":2108,"context_line":"        if (self._get_connection_type() \u003d\u003d storage.XIV_CONNECTION_TYPE_ISCSI) \\"},{"line_number":2109,"context_line":"                and (self._get_chap_type() \u003d\u003d storage.CHAP_ENABLED):"},{"line_number":2110,"context_line":"            host_bunch \u003d dict({\u0027name\u0027: host, \u0027chap\u0027: None, })"},{"line_number":2111,"context_line":"            chap \u003d self._create_chap(host\u003dhost_bunch)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_84750633","line":2108,"in_reply_to":"1a6eadb0_77852358","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2221,"context_line":"                \"host_add_port\", host\u003dhost_bunch.name,"},{"line_number":2222,"context_line":"                iscsi_name\u003dhost_bunch.initiator)"},{"line_number":2223,"context_line":"        else:"},{"line_number":2224,"context_line":"            msg \u003d _LE(\"No iSCSI initiator found!\")"},{"line_number":2225,"context_line":"            LOG.error(msg)"},{"line_number":2226,"context_line":"            raise self._get_exception()(msg)"},{"line_number":2227,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b77b3b7a","line":2224,"updated":"2016-12-16 03:19:36.000000000","message":"Use _()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":2313,"context_line":"                     self._call_xiv_xcli("},{"line_number":2314,"context_line":"                         \"mapping_list\","},{"line_number":2315,"context_line":"                         host\u003dhost[\u0027name\u0027]).as_list]"},{"line_number":2316,"context_line":"        for lun_id in xrange(MIN_LUNID, MAX_LUNID):"},{"line_number":2317,"context_line":"            if lun_id not in used_luns:"},{"line_number":2318,"context_line":"                self._call_xiv_xcli("},{"line_number":2319,"context_line":"                    \"map_vol\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_267e72ae","line":2316,"updated":"2016-12-14 16:26:24.000000000","message":"six.moves.xrange for Python 3 compat.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2313,"context_line":"                     self._call_xiv_xcli("},{"line_number":2314,"context_line":"                         \"mapping_list\","},{"line_number":2315,"context_line":"                         host\u003dhost[\u0027name\u0027]).as_list]"},{"line_number":2316,"context_line":"        for lun_id in xrange(MIN_LUNID, MAX_LUNID):"},{"line_number":2317,"context_line":"            if lun_id not in used_luns:"},{"line_number":2318,"context_line":"                self._call_xiv_xcli("},{"line_number":2319,"context_line":"                    \"map_vol\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e494fa37","line":2316,"in_reply_to":"1a6eadb0_267e72ae","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"        \"\"\""},{"line_number":2335,"context_line":""},{"line_number":2336,"context_line":"        target_wwpns \u003d []"},{"line_number":2337,"context_line":"        target_wwpns +\u003d  \\"},{"line_number":2338,"context_line":"            [t.wwpn for t in"},{"line_number":2339,"context_line":"                self._call_xiv_xcli(\"fc_port_list\") if"},{"line_number":2340,"context_line":"                t.wwpn !\u003d \u00270000000000000000\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_97ef1f1d","line":2337,"updated":"2016-12-16 03:19:36.000000000","message":"Use ()","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"        \"\"\""},{"line_number":2335,"context_line":""},{"line_number":2336,"context_line":"        target_wwpns \u003d []"},{"line_number":2337,"context_line":"        target_wwpns +\u003d  \\"},{"line_number":2338,"context_line":"            [t.wwpn for t in"},{"line_number":2339,"context_line":"                self._call_xiv_xcli(\"fc_port_list\") if"},{"line_number":2340,"context_line":"                t.wwpn !\u003d \u00270000000000000000\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_84ac268d","line":2337,"in_reply_to":"1a6eadb0_97ef1f1d","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e3f027ec621de83a546d81b8893e790ee652ebc3","unresolved":false,"context_lines":[{"line_number":2346,"context_line":"        return fc_targets"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"    def _sort_last_digit(self, a, b):"},{"line_number":2349,"context_line":"        return cmp(a[-1:], b[-1:])"},{"line_number":2350,"context_line":""},{"line_number":2351,"context_line":"    @proxy._trace_time"},{"line_number":2352,"context_line":"    def _get_xcli(self, xcli, backend_id):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_06ac1633","line":2349,"updated":"2016-12-14 16:26:24.000000000","message":"Need to remove cmp for Python 3 compat.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2346,"context_line":"        return fc_targets"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"    def _sort_last_digit(self, a, b):"},{"line_number":2349,"context_line":"        return cmp(a[-1:], b[-1:])"},{"line_number":2350,"context_line":""},{"line_number":2351,"context_line":"    @proxy._trace_time"},{"line_number":2352,"context_line":"    def _get_xcli(self, xcli, backend_id):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a443e2ad","line":2349,"in_reply_to":"1a6eadb0_06ac1633","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2375,"context_line":"        \"\"\"Wrapper around XCLI to call remote storage.\"\"\""},{"line_number":2376,"context_line":"        remote_id \u003d self._get_secondary_backend_id()"},{"line_number":2377,"context_line":"        if not remote_id:"},{"line_number":2378,"context_line":"            raise Exception"},{"line_number":2379,"context_line":"        self.ibm_storage_remote_cli \u003d self._get_xcli("},{"line_number":2380,"context_line":"            self.ibm_storage_remote_cli, remote_id)"},{"line_number":2381,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_37e72b41","line":2378,"updated":"2016-12-16 03:19:36.000000000","message":"Use a more specific exception, please.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2427,"context_line":""},{"line_number":2428,"context_line":"    @proxy._trace_time"},{"line_number":2429,"context_line":"    def _init_xcli(self, backend_id\u003dstrings.PRIMARY_BACKEND_ID):"},{"line_number":2430,"context_line":"        \"\"\"Initilize XCLI connection"},{"line_number":2431,"context_line":""},{"line_number":2432,"context_line":"        returns an XCLIClient object"},{"line_number":2433,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_97d63f4d","line":2430,"updated":"2016-12-16 03:19:36.000000000","message":"Missing ending period.","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2427,"context_line":""},{"line_number":2428,"context_line":"    @proxy._trace_time"},{"line_number":2429,"context_line":"    def _init_xcli(self, backend_id\u003dstrings.PRIMARY_BACKEND_ID):"},{"line_number":2430,"context_line":"        \"\"\"Initilize XCLI connection"},{"line_number":2431,"context_line":""},{"line_number":2432,"context_line":"        returns an XCLIClient object"},{"line_number":2433,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_a4df62d4","line":2430,"in_reply_to":"1a6eadb0_97d63f4d","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2439,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR, {\u0027details\u0027: details})"},{"line_number":2440,"context_line":"            raise self.meta[\u0027exception\u0027].InvalidParameterValue("},{"line_number":2441,"context_line":"                \"%s %s\" % (storage.XIV_LOG_PREFIX, strings.SETUP_BASE_ERROR %"},{"line_number":2442,"context_line":"                           {\u0027details\u0027: details}))"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":"        self._verify_xiv_flags(address, user, password)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_773a839a","line":2441,"updated":"2016-12-16 03:19:36.000000000","message":"Use keyword parameters %(var)s.\n\nInvalidParameterValue(err\u003d_(\u0027xxxx\u0027))","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2438,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2439,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR, {\u0027details\u0027: details})"},{"line_number":2440,"context_line":"            raise self.meta[\u0027exception\u0027].InvalidParameterValue("},{"line_number":2441,"context_line":"                \"%s %s\" % (storage.XIV_LOG_PREFIX, strings.SETUP_BASE_ERROR %"},{"line_number":2442,"context_line":"                           {\u0027details\u0027: details}))"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":"        self._verify_xiv_flags(address, user, password)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_24ea7274","line":2441,"in_reply_to":"1a6eadb0_773a839a","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2449,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"},{"line_number":2450,"context_line":"                      {\u0027details\u0027: strings.SETUP_INVALID_ENCRYPTION})"},{"line_number":2451,"context_line":"            raise self.meta[\u0027exception\u0027].InvalidParameterValue("},{"line_number":2452,"context_line":"                \"%s %s\" % (storage.XIV_LOG_PREFIX, strings.SETUP_BASE_ERROR %"},{"line_number":2453,"context_line":"                           {\u0027details\u0027: strings.SETUP_INVALID_ENCRYPTION}))"},{"line_number":2454,"context_line":""},{"line_number":2455,"context_line":"        certs \u003d certificate.CertificateCollector()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_b7409b08","line":2452,"updated":"2016-12-16 03:19:36.000000000","message":"Same","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2449,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"},{"line_number":2450,"context_line":"                      {\u0027details\u0027: strings.SETUP_INVALID_ENCRYPTION})"},{"line_number":2451,"context_line":"            raise self.meta[\u0027exception\u0027].InvalidParameterValue("},{"line_number":2452,"context_line":"                \"%s %s\" % (storage.XIV_LOG_PREFIX, strings.SETUP_BASE_ERROR %"},{"line_number":2453,"context_line":"                           {\u0027details\u0027: strings.SETUP_INVALID_ENCRYPTION}))"},{"line_number":2454,"context_line":""},{"line_number":2455,"context_line":"        certs \u003d certificate.CertificateCollector()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_e4687af7","line":2452,"in_reply_to":"1a6eadb0_b7409b08","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5a0f97afb129b22abc736178da173843d8b129be","unresolved":false,"context_lines":[{"line_number":2470,"context_line":"                \u0027address\u0027: address}"},{"line_number":2471,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"},{"line_number":2472,"context_line":"                      {\u0027details\u0027: err_msg})"},{"line_number":2473,"context_line":"            raise self.meta[\u0027exception\u0027].HostNotFound(err_msg)"},{"line_number":2474,"context_line":"        except Exception as er:"},{"line_number":2475,"context_line":"            err_msg \u003d strings.SETUP_UNKNOWN_ERROR % {\u0027error\u0027: er}"},{"line_number":2476,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_7761a3a8","line":2473,"updated":"2016-12-16 03:19:36.000000000","message":"HostNotFound(host\u003dxxxx)","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"313e4d0a358a65d0451a25adefc75b6792065c3d","unresolved":false,"context_lines":[{"line_number":2470,"context_line":"                \u0027address\u0027: address}"},{"line_number":2471,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"},{"line_number":2472,"context_line":"                      {\u0027details\u0027: err_msg})"},{"line_number":2473,"context_line":"            raise self.meta[\u0027exception\u0027].HostNotFound(err_msg)"},{"line_number":2474,"context_line":"        except Exception as er:"},{"line_number":2475,"context_line":"            err_msg \u003d strings.SETUP_UNKNOWN_ERROR % {\u0027error\u0027: er}"},{"line_number":2476,"context_line":"            LOG.error(strings.SETUP_BASE_ERROR,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a6eadb0_c44c5ea0","line":2473,"in_reply_to":"1a6eadb0_7761a3a8","updated":"2016-12-20 06:34:47.000000000","message":"Done","commit_id":"c9bed136bf8c2a3985f08cfa1efe274efc2f55e8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            portals \u003d storage.get_online_iscsi_ports(self.ibm_storage_cli)"},{"line_number":120,"context_line":"            if len(portals) \u003d\u003d 0:"},{"line_number":121,"context_line":"                raise self._get_exception()("},{"line_number":122,"context_line":"                    \"%s %s\" %"},{"line_number":123,"context_line":"                    (storage.XIV_LOG_PREFIX,"},{"line_number":124,"context_line":"                        strings.SETUP_BASE_ERROR % {"},{"line_number":125,"context_line":"                            \u0027details\u0027: strings.SETUP_NO_ISCSI_PORTALS}))"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_61d8c254","line":122,"updated":"2016-12-22 13:39:08.000000000","message":"Please use keyword parameters.  Also this message needs to be wrapped in _().","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                LOG.debug(\u0027Exists on local backend %(sch)s\u0027, {\u0027sch\u0027: name})"},{"line_number":162,"context_line":"                interval \u003d schedule.get(\u0027interval\u0027, \u0027\u0027)"},{"line_number":163,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":164,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"},{"line_number":165,"context_line":"                           {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":166,"context_line":"                    LOG.error(msg)"},{"line_number":167,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_e1cbd270","line":164,"updated":"2016-12-22 13:39:08.000000000","message":"This message also needs _().","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                LOG.debug(\u0027Exists on remote backend %(sch)s\u0027, {\u0027sch\u0027: name})"},{"line_number":189,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":190,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":191,"context_line":"                    msg \u003d (strings.UNEXPECTED_INTERVAL_VALUE %"},{"line_number":192,"context_line":"                           {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":193,"context_line":"                    LOG.error(msg)"},{"line_number":194,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_e192f256","line":191,"updated":"2016-12-22 13:39:08.000000000","message":"_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        except errors.XCLIError as e:"},{"line_number":247,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":248,"context_line":"            msg \u003d strings.PERF_CLASS_ADD_ERROR % {\u0027details\u0027: details}"},{"line_number":249,"context_line":"            LOG.error(msg)"},{"line_number":250,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":251,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":252,"context_line":"                    \u0027details\u0027: details})"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_01c5363b","line":249,"updated":"2016-12-22 13:39:08.000000000","message":"_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            return True"},{"line_number":264,"context_line":"        except errors.XCLIError as e:"},{"line_number":265,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":266,"context_line":"            LOG.error(strings.PERF_CLASS_ADD_ERROR, {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":268,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {\u0027details\u0027: details})"},{"line_number":269,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_61e282d7","line":266,"updated":"2016-12-22 13:39:08.000000000","message":"Save the message and use it here and in the exception below.\n\n_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":266,"context_line":"            LOG.error(strings.PERF_CLASS_ADD_ERROR, {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":268,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {\u0027details\u0027: details})"},{"line_number":269,"context_line":"        return True"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _check_perf_class_on_backend(self, specs):"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_a1ec6ac8","line":268,"updated":"2016-12-22 13:39:08.000000000","message":"_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                if (not perf_class.max_iops \u003d\u003d specs.get(\u0027iops\u0027, \u00270\u0027) or"},{"line_number":288,"context_line":"                        not perf_class.max_bw \u003d\u003d specs.get(\u0027bw\u0027, \u00270\u0027)):"},{"line_number":289,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":290,"context_line":"                        data\u003dstrings.PERF_CLASS_VALUES_ERROR %"},{"line_number":291,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":292,"context_line":"        except errors.XCLIError as e:"},{"line_number":293,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_e1ce7259","line":290,"updated":"2016-12-22 13:39:08.000000000","message":"_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":292,"context_line":"        except errors.XCLIError as e:"},{"line_number":293,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":294,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":295,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":296,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_a1038a72","line":294,"updated":"2016-12-22 13:39:08.000000000","message":"Same the message and use it here and below.\n\n_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":294,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":295,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":296,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"            # class does not exist, create it"},{"line_number":299,"context_line":"        if not classes_list:"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_01f3769f","line":296,"updated":"2016-12-22 13:39:08.000000000","message":"_()","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        except errors.XCLIError as e:"},{"line_number":310,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":311,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":312,"context_line":"            raise e"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_810cc695","line":311,"updated":"2016-12-22 13:39:08.000000000","message":"_LE()\n\nSimilar comments applies to all messages.  It needs _, _LE, etc.","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7233baf8f0b1749125cb24c1c5136af8db2c10d8","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        except errors.XCLIError as e:"},{"line_number":310,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":311,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":312,"context_line":"            raise e"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            args \u003d self._qos_create_kwargs_for_xcli(specs)"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_e13cb231","line":312,"updated":"2016-12-22 13:39:08.000000000","message":"Just \"raise\", no need to add \"e\".","commit_id":"b44a9e3eab9ce2977db9148e600a4faa6e0faf8a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        if remote_id:"},{"line_number":138,"context_line":"            self._update_active_schedule_objects()"},{"line_number":139,"context_line":"            self._update_remote_schedule_objects()"},{"line_number":140,"context_line":"        LOG.info(strings.SETUP_SUCCEEDED)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _get_schedule_from_rpo(self, rpo):"},{"line_number":143,"context_line":"        return [rate for rate in self.async_rates"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_9d940be3","line":140,"updated":"2016-12-23 04:44:04.000000000","message":"_LI","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        volume_type \u003d volume_types.get_volume_type(ctxt, type_id)"},{"line_number":221,"context_line":"        if not volume_type:"},{"line_number":222,"context_line":"            return None"},{"line_number":223,"context_line":"        qos_specs_id \u003d volume_type.get(\u0027qos_specs_id\u0027, None)"},{"line_number":224,"context_line":"        if qos_specs_id:"},{"line_number":225,"context_line":"            return qos_specs.get_qos_specs("},{"line_number":226,"context_line":"                ctxt, qos_specs_id).get(\u0027specs\u0027, None)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_fd66f727","line":223,"updated":"2016-12-23 04:44:04.000000000","message":"None is not needed as it is the default.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        qos_specs_id \u003d volume_type.get(\u0027qos_specs_id\u0027, None)"},{"line_number":224,"context_line":"        if qos_specs_id:"},{"line_number":225,"context_line":"            return qos_specs.get_qos_specs("},{"line_number":226,"context_line":"                ctxt, qos_specs_id).get(\u0027specs\u0027, None)"},{"line_number":227,"context_line":"        return None"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_3d715fe1","line":226,"updated":"2016-12-23 04:44:04.000000000","message":"None is not needed as it is the default.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":250,"context_line":"            LOG.error(_(strings.PERF_CLASS_ADD_ERROR % {\u0027details\u0027: details}))"},{"line_number":251,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":252,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":253,"context_line":"                    \u0027details\u0027: details})"},{"line_number":254,"context_line":"        return True"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def _qos_add_vol(self, volume, perf_class_name):"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_1d457b6f","line":253,"range":{"start_line":252,"start_character":21,"end_line":253,"end_character":39},"updated":"2016-12-23 04:44:04.000000000","message":"Needs _()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                if (not perf_class.max_iops \u003d\u003d specs.get(\u0027iops\u0027, \u00270\u0027) or"},{"line_number":289,"context_line":"                        not perf_class.max_bw \u003d\u003d specs.get(\u0027bw\u0027, \u00270\u0027)):"},{"line_number":290,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":291,"context_line":"                        data\u003dstrings.PERF_CLASS_VALUES_ERROR %"},{"line_number":292,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":293,"context_line":"        except errors.XCLIError as e:"},{"line_number":294,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":295,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_3d3f9fd7","line":292,"range":{"start_line":291,"start_character":29,"end_line":292,"end_character":52},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":293,"context_line":"        except errors.XCLIError as e:"},{"line_number":294,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":295,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":296,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":297,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":298,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_7d2127b4","line":295,"updated":"2016-12-23 04:44:04.000000000","message":"_LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":295,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":296,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":297,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            # class does not exist, create it"},{"line_number":300,"context_line":"        if not classes_list:"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_dd185387","line":297,"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":323,"context_line":"            self._call_xiv_xcli(\"perf_class_delete\","},{"line_number":324,"context_line":"                                perf_class\u003dperf_class_name)"},{"line_number":325,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":326,"context_line":"            raise e"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _qos_specs_from_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_1d13bb67","line":325,"updated":"2016-12-23 04:44:04.000000000","message":"_LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        if so, checks if it has been associated with a qos class"},{"line_number":333,"context_line":"        returns the name of that class"},{"line_number":334,"context_line":"        \"\"\""},{"line_number":335,"context_line":"        type_id \u003d volume.get(\u0027volume_type_id\u0027, None)"},{"line_number":336,"context_line":"        if not type_id:"},{"line_number":337,"context_line":"            return None"},{"line_number":338,"context_line":"        return self._get_qos_specs(type_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_3d16bf55","line":335,"updated":"2016-12-23 04:44:04.000000000","message":"None is not needed.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        return self._get_qos_specs(type_id)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def _get_replication_info(self, specs):"},{"line_number":341,"context_line":"        info \u003d dict({\u0027enabled\u0027: False, \u0027mode\u0027: None, \u0027rpo\u0027: 0})"},{"line_number":342,"context_line":"        if specs:"},{"line_number":343,"context_line":"            LOG.debug(\u0027_get_replication_info: specs %(specs)s\u0027,"},{"line_number":344,"context_line":"                      {\u0027specs\u0027: specs})"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d8ff81ff","line":341,"updated":"2016-12-23 04:44:04.000000000","message":"Dictionary comprehension {} performs better than dict().","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            elif replication_type in (u\u0027async\u0027, u\u0027\u003cis\u003e async\u0027):"},{"line_number":352,"context_line":"                info[\u0027mode\u0027] \u003d ASYNC"},{"line_number":353,"context_line":"            else:"},{"line_number":354,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":355,"context_line":"                       \u0027replication type %(info)s\u0027 %"},{"line_number":356,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":357,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_783695e8","line":354,"updated":"2016-12-23 04:44:04.000000000","message":"_LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                info[\u0027mode\u0027] \u003d ASYNC"},{"line_number":353,"context_line":"            else:"},{"line_number":354,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":355,"context_line":"                       \u0027replication type %(info)s\u0027 %"},{"line_number":356,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":357,"context_line":"                LOG.error(msg)"},{"line_number":358,"context_line":"                raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38808d46","line":355,"updated":"2016-12-23 04:44:04.000000000","message":"% -\u003e ,","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":357,"context_line":"                LOG.error(msg)"},{"line_number":358,"context_line":"                raise self._get_exception()("},{"line_number":359,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"},{"line_number":360,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":361,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":362,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_b8471d4a","line":359,"range":{"start_line":359,"start_character":28,"end_line":359,"end_character":56},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":361,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":362,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"},{"line_number":363,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":364,"context_line":"                       \u0027replication type %(info)s\u0027"},{"line_number":365,"context_line":"                       \u0027_get_replication_info: invalid rpo %(rpo)s\u0027 %"},{"line_number":366,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38724dae","line":363,"updated":"2016-12-23 04:44:04.000000000","message":"Needs _LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"},{"line_number":363,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":364,"context_line":"                       \u0027replication type %(info)s\u0027"},{"line_number":365,"context_line":"                       \u0027_get_replication_info: invalid rpo %(rpo)s\u0027 %"},{"line_number":366,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":367,"context_line":"                LOG.error(msg)"},{"line_number":368,"context_line":"                raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_b8b55d32","line":365,"updated":"2016-12-23 04:44:04.000000000","message":"Change % to ,","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":367,"context_line":"                LOG.error(msg)"},{"line_number":368,"context_line":"                raise self._get_exception()("},{"line_number":369,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":370,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":371,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":372,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d89b01c8","line":369,"range":{"start_line":369,"start_character":28,"end_line":369,"end_character":55},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.error(msg)"},{"line_number":368,"context_line":"                raise self._get_exception()("},{"line_number":369,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":370,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":371,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":372,"context_line":"            LOG.debug(msg)"},{"line_number":373,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38a96de0","line":370,"updated":"2016-12-23 04:44:04.000000000","message":"Change % to ,","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                \"vol_create\", vol\u003dvolume[\u0027name\u0027], size_blocks\u003dsize,"},{"line_number":382,"context_line":"                pool\u003dself.storage_info[storage.FLAG_KEYS[\u0027storage_pool\u0027]])"},{"line_number":383,"context_line":"        except errors.SystemOutOfSpaceError:"},{"line_number":384,"context_line":"            msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":385,"context_line":"                   {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":386,"context_line":"            LOG.error(msg)"},{"line_number":387,"context_line":"            raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_789215a1","line":384,"updated":"2016-12-23 04:44:04.000000000","message":"Need _LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                   {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":386,"context_line":"            LOG.error(msg)"},{"line_number":387,"context_line":"            raise self._get_exception()("},{"line_number":388,"context_line":"                message\u003dstrings.CREATE_VOLUME_BASE_ERROR %"},{"line_number":389,"context_line":"                {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":390,"context_line":"        except errors.PoolOutOfSpaceError:"},{"line_number":391,"context_line":"            err \u003d strings.CREATE_VOLUME_POOL_OUT_OF_SPACE % {"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38f7adf6","line":388,"range":{"start_line":388,"start_character":24,"end_line":388,"end_character":55},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        except errors.PoolOutOfSpaceError:"},{"line_number":391,"context_line":"            err \u003d strings.CREATE_VOLUME_POOL_OUT_OF_SPACE % {"},{"line_number":392,"context_line":"                \u0027pool\u0027: self.storage_info[storage.FLAG_KEYS[\u0027storage_pool\u0027]]}"},{"line_number":393,"context_line":"            msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":394,"context_line":"                   {\u0027details\u0027: err})"},{"line_number":395,"context_line":"            LOG.error(msg)"},{"line_number":396,"context_line":"            raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d8d06156","line":393,"range":{"start_line":393,"start_character":19,"end_line":393,"end_character":51},"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                   {\u0027details\u0027: err})"},{"line_number":395,"context_line":"            LOG.error(msg)"},{"line_number":396,"context_line":"            raise self._get_exception()("},{"line_number":397,"context_line":"                message\u003dstrings.CREATE_VOLUME_BASE_ERROR %"},{"line_number":398,"context_line":"                {\u0027details\u0027: err})"},{"line_number":399,"context_line":"        except errors.XCLIError as e:"},{"line_number":400,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_18cbc9a6","line":397,"range":{"start_line":397,"start_character":24,"end_line":397,"end_character":57},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                {\u0027details\u0027: err})"},{"line_number":399,"context_line":"        except errors.XCLIError as e:"},{"line_number":400,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":401,"context_line":"            msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":402,"context_line":"                   {\u0027details\u0027: details})"},{"line_number":403,"context_line":"            LOG.error(msg)"},{"line_number":404,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_98bfb9fa","line":401,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                   {\u0027details\u0027: details})"},{"line_number":403,"context_line":"            LOG.error(msg)"},{"line_number":404,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":405,"context_line":"                data\u003dstrings.CREATE_VOLUME_BASE_ERROR % {"},{"line_number":406,"context_line":"                    \u0027details\u0027: details})"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d83781ae","line":405,"range":{"start_line":405,"start_character":21,"end_line":405,"end_character":53},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        if cg and replication_info[\u0027enabled\u0027]:"},{"line_number":418,"context_line":"            \u0027\u0027\u0027An unsupported illegal configuration\u0027\u0027\u0027"},{"line_number":419,"context_line":"            msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":420,"context_line":"                   {\u0027details\u0027: strings.REPLICA_OF_CG_UNSUPPORTED})"},{"line_number":421,"context_line":"            LOG.error(msg)"},{"line_number":422,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_584c7142","line":419,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                   {\u0027details\u0027: strings.REPLICA_OF_CG_UNSUPPORTED})"},{"line_number":421,"context_line":"            LOG.error(msg)"},{"line_number":422,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":423,"context_line":"                data\u003dstrings.CREATE_VOLUME_BASE_ERROR % {"},{"line_number":424,"context_line":"                    \u0027details\u0027: strings.REPLICA_OF_CG_UNSUPPORTED})"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        volume_update \u003d {}"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_b851ddda","line":423,"range":{"start_line":423,"start_character":21,"end_line":423,"end_character":53},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        if cg:"},{"line_number":430,"context_line":"            volume_update[\u0027consistencygroup_id\u0027] \u003d ("},{"line_number":431,"context_line":"                volume.get(\u0027consistencygroup_id\u0027, None))"},{"line_number":432,"context_line":"            try:"},{"line_number":433,"context_line":"                self._call_xiv_xcli("},{"line_number":434,"context_line":"                    \"cg_add_vol\", vol\u003dvolume[\u0027name\u0027], cg\u003dcg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d85ea1e8","line":431,"updated":"2016-12-23 04:44:04.000000000","message":"None is note needed.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            except errors.XCLIError as e:"},{"line_number":436,"context_line":"                details \u003d self._get_code_and_status_or_message(e)"},{"line_number":437,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"},{"line_number":438,"context_line":"                msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":439,"context_line":"                       {\u0027details\u0027: details})"},{"line_number":440,"context_line":"                LOG.error(msg)"},{"line_number":441,"context_line":"                raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_786e9597","line":438,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":439,"context_line":"                       {\u0027details\u0027: details})"},{"line_number":440,"context_line":"                LOG.error(msg)"},{"line_number":441,"context_line":"                raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":442,"context_line":"                    data\u003dstrings.CREATE_VOLUME_BASE_ERROR % {"},{"line_number":443,"context_line":"                        \u0027details\u0027: details})"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        perf_class_name \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_986df99a","line":442,"range":{"start_line":442,"start_character":25,"end_line":442,"end_character":57},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                if cg:"},{"line_number":457,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"},{"line_number":458,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"},{"line_number":459,"context_line":"                msg \u003d (strings.PERF_CLASS_ADD_ERROR,"},{"line_number":460,"context_line":"                       {\u0027details\u0027: details})"},{"line_number":461,"context_line":"                LOG.error(msg)"},{"line_number":462,"context_line":"                raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d805c1c2","line":459,"updated":"2016-12-23 04:44:04.000000000","message":"_LE()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                       {\u0027details\u0027: details})"},{"line_number":461,"context_line":"                LOG.error(msg)"},{"line_number":462,"context_line":"                raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":463,"context_line":"                    data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":464,"context_line":"                        \u0027details\u0027: details})"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        LOG.debug(\u0027checking replication_info %(rep)s\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_f808c5db","line":463,"range":{"start_line":463,"start_character":25,"end_line":463,"end_character":52},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                self._replication_create(volume, replication_info)"},{"line_number":472,"context_line":"            except Exception as e:"},{"line_number":473,"context_line":"                details \u003d self._get_code_and_status_or_message(e)"},{"line_number":474,"context_line":"                msg \u003d (\u0027Failed _replication_create for \u0027"},{"line_number":475,"context_line":"                       \u0027volume %(vol)s: %(err)s\u0027 %"},{"line_number":476,"context_line":"                       {\u0027vol\u0027: volume[\u0027name\u0027], \u0027err\u0027: details})"},{"line_number":477,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38132d0f","line":474,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                       \u0027volume %(vol)s: %(err)s\u0027 %"},{"line_number":476,"context_line":"                       {\u0027vol\u0027: volume[\u0027name\u0027], \u0027err\u0027: details})"},{"line_number":477,"context_line":"                LOG.error(msg)"},{"line_number":478,"context_line":"                if perf_class_name:"},{"line_number":479,"context_line":"                    # TBD - remove from QoS"},{"line_number":480,"context_line":"                    pass"},{"line_number":481,"context_line":"                if cg:"},{"line_number":482,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"},{"line_number":483,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_980419c1","line":480,"range":{"start_line":478,"start_character":1,"end_line":480,"end_character":24},"updated":"2016-12-23 04:44:04.000000000","message":"Shouldn\u0027t this be removed?  It\u0027s not doing anything.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                if cg:"},{"line_number":482,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"},{"line_number":483,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"},{"line_number":484,"context_line":"                raise e"},{"line_number":485,"context_line":"            volume_update[\u0027replication_status\u0027] \u003d \u0027enabled\u0027"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"        return volume_update"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_b8ff1da9","line":484,"updated":"2016-12-23 04:44:04.000000000","message":"Just \"raise\" without e.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":490,"context_line":"        LOG.debug(\u0027_get_replication_target_params\u0027)"},{"line_number":491,"context_line":"        targets \u003d self._get_targets()"},{"line_number":492,"context_line":"        if not targets:"},{"line_number":493,"context_line":"            LOG.error(strings.REPLICA_NO_TARGETS)"},{"line_number":494,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":495,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":496,"context_line":"        no_of_targets \u003d len(targets)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_18274965","line":493,"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        if not targets:"},{"line_number":493,"context_line":"            LOG.error(strings.REPLICA_NO_TARGETS)"},{"line_number":494,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":495,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":496,"context_line":"        no_of_targets \u003d len(targets)"},{"line_number":497,"context_line":"        if no_of_targets \u003e 1:"},{"line_number":498,"context_line":"            LOG.error(strings.REPLICA_TOO_MANY_TARGETS,"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_382a4d2d","line":495,"range":{"start_line":495,"start_character":21,"end_line":495,"end_character":47},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":495,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":496,"context_line":"        no_of_targets \u003d len(targets)"},{"line_number":497,"context_line":"        if no_of_targets \u003e 1:"},{"line_number":498,"context_line":"            LOG.error(strings.REPLICA_TOO_MANY_TARGETS,"},{"line_number":499,"context_line":"                      {\u0027tgts\u0027: no_of_targets})"},{"line_number":500,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":501,"context_line":"                data\u003dstrings.REPLICA_TOO_MANY_TARGETS % {"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_5821d14c","line":498,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            LOG.error(strings.REPLICA_TOO_MANY_TARGETS,"},{"line_number":499,"context_line":"                      {\u0027tgts\u0027: no_of_targets})"},{"line_number":500,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":501,"context_line":"                data\u003dstrings.REPLICA_TOO_MANY_TARGETS % {"},{"line_number":502,"context_line":"                    \u0027tgts\u0027: no_of_targets})"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        LOG.debug(\u0027_get_replication_target_params selecting target...\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_d8d30137","line":501,"range":{"start_line":501,"start_character":21,"end_line":501,"end_character":53},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        LOG.debug(\u0027_get_replication_target_params selecting target...\u0027)"},{"line_number":505,"context_line":"        target \u003d self._get_target()"},{"line_number":506,"context_line":"        if not target:"},{"line_number":507,"context_line":"            LOG.error(strings.REPLICA_NO_TARGETS)"},{"line_number":508,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":509,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":510,"context_line":"        params \u003d self._get_target_params(target)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_38e16dff","line":507,"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        if not target:"},{"line_number":507,"context_line":"            LOG.error(strings.REPLICA_NO_TARGETS)"},{"line_number":508,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":509,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":510,"context_line":"        params \u003d self._get_target_params(target)"},{"line_number":511,"context_line":"        if not params:"},{"line_number":512,"context_line":"            LOG.error(strings.REPLICA_TARGET_INFO_MISSING,"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_58cf117f","line":509,"range":{"start_line":509,"start_character":21,"end_line":509,"end_character":47},"updated":"2016-12-23 04:44:04.000000000","message":"_()","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":509,"context_line":"                data\u003dstrings.REPLICA_NO_TARGETS)"},{"line_number":510,"context_line":"        params \u003d self._get_target_params(target)"},{"line_number":511,"context_line":"        if not params:"},{"line_number":512,"context_line":"            LOG.error(strings.REPLICA_TARGET_INFO_MISSING,"},{"line_number":513,"context_line":"                      {\u0027target\u0027: target})"},{"line_number":514,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":515,"context_line":"                data\u003dstrings.REPLICA_TARGET_INFO_MISSING % {"}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_18b109e2","line":512,"updated":"2016-12-23 04:44:04.000000000","message":"_LE","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90679d389f192ee50f3f0ce7d3d0d8a80b660a59","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            LOG.error(strings.REPLICA_TARGET_INFO_MISSING,"},{"line_number":513,"context_line":"                      {\u0027target\u0027: target})"},{"line_number":514,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":515,"context_line":"                data\u003dstrings.REPLICA_TARGET_INFO_MISSING % {"},{"line_number":516,"context_line":"                    \u0027target\u0027: target})"},{"line_number":517,"context_line":"        return target, params"},{"line_number":518,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da4df55a_98c5f93d","line":515,"range":{"start_line":515,"start_character":21,"end_line":515,"end_character":56},"updated":"2016-12-23 04:44:04.000000000","message":"_()\n\nPlease make similar change in all other places.","commit_id":"5576ee83fbb692a92ff3c2501dccd355fcb085cb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                LOG.debug(\u0027Exists on remote backend %(sch)s\u0027, {\u0027sch\u0027: name})"},{"line_number":192,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":193,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":194,"context_line":"                    msg \u003d (_(\"Schedule %(sch)s exists with incorrect\""},{"line_number":195,"context_line":"                             \"value %(int)s\")"},{"line_number":196,"context_line":"                           % {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":197,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_c3bdc6d8","line":194,"updated":"2017-01-03 19:43:50.000000000","message":"Missing space at the end","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f7ebb5587b11d8a4265a4e098ee1469aa7e605d0","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                LOG.debug(\u0027Exists on remote backend %(sch)s\u0027, {\u0027sch\u0027: name})"},{"line_number":192,"context_line":"                interval \u003d schedules.get(name, None)[\u0027interval\u0027]"},{"line_number":193,"context_line":"                if interval !\u003d rate.schedule:"},{"line_number":194,"context_line":"                    msg \u003d (_(\"Schedule %(sch)s exists with incorrect\""},{"line_number":195,"context_line":"                             \"value %(int)s\")"},{"line_number":196,"context_line":"                           % {\u0027sch\u0027: name, \u0027int\u0027: interval})"},{"line_number":197,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_e9ecd9bc","line":194,"in_reply_to":"ba5201f7_c3bdc6d8","updated":"2017-01-07 10:38:32.000000000","message":"Done","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            return True"},{"line_number":250,"context_line":"        except errors.XCLIError as e:"},{"line_number":251,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":252,"context_line":"            LOG.error(strings.PERF_CLASS_ADD_ERROR, {\u0027details\u0027: details})"},{"line_number":253,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":254,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":255,"context_line":"                    \u0027details\u0027: details})"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_2396924c","line":252,"range":{"start_line":252,"start_character":22,"end_line":252,"end_character":50},"updated":"2017-01-03 19:43:50.000000000","message":"_LE","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":252,"context_line":"            LOG.error(strings.PERF_CLASS_ADD_ERROR, {\u0027details\u0027: details})"},{"line_number":253,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":254,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":255,"context_line":"                    \u0027details\u0027: details})"},{"line_number":256,"context_line":"        return True"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_c38b061d","line":254,"range":{"start_line":254,"start_character":21,"end_line":254,"end_character":49},"updated":"2017-01-03 19:43:50.000000000","message":"_","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f7ebb5587b11d8a4265a4e098ee1469aa7e605d0","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":252,"context_line":"            LOG.error(strings.PERF_CLASS_ADD_ERROR, {\u0027details\u0027: details})"},{"line_number":253,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":254,"context_line":"                data\u003dstrings.PERF_CLASS_ADD_ERROR % {"},{"line_number":255,"context_line":"                    \u0027details\u0027: details})"},{"line_number":256,"context_line":"        return True"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_898c2ddb","line":254,"range":{"start_line":254,"start_character":21,"end_line":254,"end_character":49},"in_reply_to":"ba5201f7_c38b061d","updated":"2017-01-07 10:38:32.000000000","message":"moved the PERF_CLASS related errors from strings.py to xiv_proxy.py, and fixed their marker levels to _ (always used in exceptions).","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            return True"},{"line_number":267,"context_line":"        except errors.XCLIError as e:"},{"line_number":268,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":269,"context_line":"            msg \u003d strings.PERF_CLASS_ADD_ERROR % {\u0027details\u0027: details}"},{"line_number":270,"context_line":"            LOG.error(msg)"},{"line_number":271,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":272,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_43c6364a","line":269,"range":{"start_line":269,"start_character":18,"end_line":269,"end_character":46},"updated":"2017-01-03 19:43:50.000000000","message":"_","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                if (not perf_class.max_iops \u003d\u003d specs.get(\u0027iops\u0027, \u00270\u0027) or"},{"line_number":291,"context_line":"                        not perf_class.max_bw \u003d\u003d specs.get(\u0027bw\u0027, \u00270\u0027)):"},{"line_number":292,"context_line":"                    raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":293,"context_line":"                        data\u003dstrings.PERF_CLASS_VALUES_ERROR %"},{"line_number":294,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":295,"context_line":"        except errors.XCLIError as e:"},{"line_number":296,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_e3e72ae2","line":293,"range":{"start_line":293,"start_character":29,"end_line":293,"end_character":60},"updated":"2017-01-03 19:43:50.000000000","message":"_","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                        {\u0027details\u0027: perf_class_name})"},{"line_number":295,"context_line":"        except errors.XCLIError as e:"},{"line_number":296,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":297,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":298,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":299,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_e3e80a7f","line":297,"range":{"start_line":297,"start_character":22,"end_line":297,"end_character":46},"updated":"2017-01-03 19:43:50.000000000","message":"_LE","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":296,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":297,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":298,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":299,"context_line":"                data\u003dstrings.PERF_CLASS_ERROR % {\u0027details\u0027: details})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"            # class does not exist, create it"},{"line_number":302,"context_line":"        if not classes_list:"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_83d73eec","line":299,"range":{"start_line":299,"start_character":21,"end_line":299,"end_character":45},"updated":"2017-01-03 19:43:50.000000000","message":"_","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        except errors.XCLIError as e:"},{"line_number":313,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":314,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":315,"context_line":"            raise"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_e3356a46","line":314,"range":{"start_line":314,"start_character":22,"end_line":314,"end_character":46},"updated":"2017-01-03 19:43:50.000000000","message":"_LE","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dbad6b0d5083c182f21c7a4d13506136486a329f","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":325,"context_line":"            self._call_xiv_xcli(\"perf_class_delete\","},{"line_number":326,"context_line":"                                perf_class\u003dperf_class_name)"},{"line_number":327,"context_line":"            LOG.error(strings.PERF_CLASS_ERROR, {\u0027details\u0027: details})"},{"line_number":328,"context_line":"            raise e"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _qos_specs_from_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba5201f7_83457eb4","line":327,"range":{"start_line":327,"start_character":22,"end_line":327,"end_character":46},"updated":"2017-01-03 19:43:50.000000000","message":"_LE","commit_id":"6ad8c95f8531b89babff96ae8ce77d13621aaba7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def setup(self, context):"},{"line_number":117,"context_line":"        \"\"\"Connect ssl client.\"\"\""},{"line_number":118,"context_line":"        LOG.info(strings.SETUP_START)"},{"line_number":119,"context_line":"        msg \u003d (_LI(\"Active backend_id: \u0027%(id)s\u0027.\") %"},{"line_number":120,"context_line":"               {\u0027id\u0027: self.active_backend_id})"},{"line_number":121,"context_line":"        LOG.info(msg)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_cf29d29c","line":119,"updated":"2017-01-07 22:09:07.000000000","message":"% -\u003e ,","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"248e49eaf5d2cc6f1c2a91fc4658f80384697835","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def setup(self, context):"},{"line_number":117,"context_line":"        \"\"\"Connect ssl client.\"\"\""},{"line_number":118,"context_line":"        LOG.info(strings.SETUP_START)"},{"line_number":119,"context_line":"        msg \u003d (_LI(\"Active backend_id: \u0027%(id)s\u0027.\") %"},{"line_number":120,"context_line":"               {\u0027id\u0027: self.active_backend_id})"},{"line_number":121,"context_line":"        LOG.info(msg)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_efd84f55","line":119,"in_reply_to":"ba5201f7_cf29d29c","updated":"2017-01-08 14:59:29.000000000","message":"Actually % is correct in this case since it\u0027s doing the string formatting immediately.\n\nThat said, this is only used for the log message, so I would rather see this moved into the logging call and passed in as args.","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def setup(self, context):"},{"line_number":117,"context_line":"        \"\"\"Connect ssl client.\"\"\""},{"line_number":118,"context_line":"        LOG.info(strings.SETUP_START)"},{"line_number":119,"context_line":"        msg \u003d (_LI(\"Active backend_id: \u0027%(id)s\u0027.\") %"},{"line_number":120,"context_line":"               {\u0027id\u0027: self.active_backend_id})"},{"line_number":121,"context_line":"        LOG.info(msg)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_6d57f226","line":119,"in_reply_to":"ba5201f7_efd84f55","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if remote_id:"},{"line_number":149,"context_line":"            self._update_active_schedule_objects()"},{"line_number":150,"context_line":"            self._update_remote_schedule_objects()"},{"line_number":151,"context_line":"        LOG.info(strings.SETUP_SUCCEEDED)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _get_schedule_from_rpo(self, rpo):"},{"line_number":154,"context_line":"        return [rate for rate in self.async_rates"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_2f117e5d","line":151,"range":{"start_line":151,"start_character":17,"end_line":151,"end_character":40},"updated":"2017-01-07 22:09:07.000000000","message":"_LE","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if remote_id:"},{"line_number":149,"context_line":"            self._update_active_schedule_objects()"},{"line_number":150,"context_line":"            self._update_remote_schedule_objects()"},{"line_number":151,"context_line":"        LOG.info(strings.SETUP_SUCCEEDED)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _get_schedule_from_rpo(self, rpo):"},{"line_number":154,"context_line":"        return [rate for rate in self.async_rates"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_49b31b98","line":151,"range":{"start_line":151,"start_character":17,"end_line":151,"end_character":40},"in_reply_to":"ba5201f7_2f117e5d","updated":"2017-01-10 06:41:51.000000000","message":"you meant _LI, right?","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"55dd9f0598a31f8f9133c7fcd76672a7bd3b5afc","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if remote_id:"},{"line_number":149,"context_line":"            self._update_active_schedule_objects()"},{"line_number":150,"context_line":"            self._update_remote_schedule_objects()"},{"line_number":151,"context_line":"        LOG.info(strings.SETUP_SUCCEEDED)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _get_schedule_from_rpo(self, rpo):"},{"line_number":154,"context_line":"        return [rate for rate in self.async_rates"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_534512b1","line":151,"range":{"start_line":151,"start_character":17,"end_line":151,"end_character":40},"in_reply_to":"ba5201f7_49b31b98","updated":"2017-01-11 04:59:03.000000000","message":"You are right!","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            return True"},{"line_number":261,"context_line":"        except errors.XCLIError as e:"},{"line_number":262,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":263,"context_line":"            LOG.error(_LE(\"Unable to add volume to performance \""},{"line_number":264,"context_line":"                          \"class:\\n%(details)s\"), {\u0027details\u0027: details})"},{"line_number":265,"context_line":"            msg_data \u003d (_(\"Unable to add volume to performance \""},{"line_number":266,"context_line":"                          \"class:\\n%(details)s\") % {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_2a088c27","line":264,"range":{"start_line":263,"start_character":0,"end_line":264,"end_character":71},"updated":"2017-01-07 22:09:07.000000000","message":"Remove this.  This error message and the following exception message are identical.  In this case, call LOG.error(msg_data) to re-use the same message and the message will be translated only once.","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            return True"},{"line_number":261,"context_line":"        except errors.XCLIError as e:"},{"line_number":262,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":263,"context_line":"            LOG.error(_LE(\"Unable to add volume to performance \""},{"line_number":264,"context_line":"                          \"class:\\n%(details)s\"), {\u0027details\u0027: details})"},{"line_number":265,"context_line":"            msg_data \u003d (_(\"Unable to add volume to performance \""},{"line_number":266,"context_line":"                          \"class:\\n%(details)s\") % {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_3039bdd9","line":264,"range":{"start_line":263,"start_character":0,"end_line":264,"end_character":71},"in_reply_to":"ba5201f7_2a088c27","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            LOG.error(_LE(\"Unable to add volume to performance \""},{"line_number":264,"context_line":"                          \"class:\\n%(details)s\"), {\u0027details\u0027: details})"},{"line_number":265,"context_line":"            msg_data \u003d (_(\"Unable to add volume to performance \""},{"line_number":266,"context_line":"                          \"class:\\n%(details)s\") % {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":268,"context_line":"                data\u003d(msg_data))"},{"line_number":269,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_6f0f0637","line":266,"updated":"2017-01-07 22:09:07.000000000","message":"LOG.error(msg_data)","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            LOG.error(_LE(\"Unable to add volume to performance \""},{"line_number":264,"context_line":"                          \"class:\\n%(details)s\"), {\u0027details\u0027: details})"},{"line_number":265,"context_line":"            msg_data \u003d (_(\"Unable to add volume to performance \""},{"line_number":266,"context_line":"                          \"class:\\n%(details)s\") % {\u0027details\u0027: details})"},{"line_number":267,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":268,"context_line":"                data\u003d(msg_data))"},{"line_number":269,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_9030a9ea","line":266,"in_reply_to":"ba5201f7_6f0f0637","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        return self._get_qos_specs(type_id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def _get_replication_info(self, specs):"},{"line_number":359,"context_line":"        info \u003d dict({\u0027enabled\u0027: False, \u0027mode\u0027: None, \u0027rpo\u0027: 0})"},{"line_number":360,"context_line":"        if specs:"},{"line_number":361,"context_line":"            LOG.debug(\u0027_get_replication_info: specs %(specs)s\u0027,"},{"line_number":362,"context_line":"                      {\u0027specs\u0027: specs})"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_8a117854","line":359,"range":{"start_line":359,"start_character":15,"end_line":359,"end_character":19},"updated":"2017-01-07 22:09:07.000000000","message":"Actually using dictionary comprehension {} has better performance than using dict().  Just remove dict().","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        return self._get_qos_specs(type_id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"    def _get_replication_info(self, specs):"},{"line_number":359,"context_line":"        info \u003d dict({\u0027enabled\u0027: False, \u0027mode\u0027: None, \u0027rpo\u0027: 0})"},{"line_number":360,"context_line":"        if specs:"},{"line_number":361,"context_line":"            LOG.debug(\u0027_get_replication_info: specs %(specs)s\u0027,"},{"line_number":362,"context_line":"                      {\u0027specs\u0027: specs})"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_b0992dd3","line":359,"range":{"start_line":359,"start_character":15,"end_line":359,"end_character":19},"in_reply_to":"ba5201f7_8a117854","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            elif replication_type in (u\u0027async\u0027, u\u0027\u003cis\u003e async\u0027):"},{"line_number":370,"context_line":"                info[\u0027mode\u0027] \u003d ASYNC"},{"line_number":371,"context_line":"            else:"},{"line_number":372,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":373,"context_line":"                       \u0027replication type %(info)s\u0027 %"},{"line_number":374,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":375,"context_line":"                LOG.error(msg)"},{"line_number":376,"context_line":"                raise self._get_exception()("},{"line_number":377,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_aa1c7c6a","line":374,"range":{"start_line":372,"start_character":22,"end_line":374,"end_character":38},"updated":"2017-01-07 22:09:07.000000000","message":"Need _LE\n\nAlso change % to ,","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            elif replication_type in (u\u0027async\u0027, u\u0027\u003cis\u003e async\u0027):"},{"line_number":370,"context_line":"                info[\u0027mode\u0027] \u003d ASYNC"},{"line_number":371,"context_line":"            else:"},{"line_number":372,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":373,"context_line":"                       \u0027replication type %(info)s\u0027 %"},{"line_number":374,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":375,"context_line":"                LOG.error(msg)"},{"line_number":376,"context_line":"                raise self._get_exception()("},{"line_number":377,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_f0249561","line":374,"range":{"start_line":372,"start_character":22,"end_line":374,"end_character":38},"in_reply_to":"ba5201f7_aa1c7c6a","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"248e49eaf5d2cc6f1c2a91fc4658f80384697835","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            elif replication_type in (u\u0027async\u0027, u\u0027\u003cis\u003e async\u0027):"},{"line_number":370,"context_line":"                info[\u0027mode\u0027] \u003d ASYNC"},{"line_number":371,"context_line":"            else:"},{"line_number":372,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":373,"context_line":"                       \u0027replication type %(info)s\u0027 %"},{"line_number":374,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":375,"context_line":"                LOG.error(msg)"},{"line_number":376,"context_line":"                raise self._get_exception()("},{"line_number":377,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_2fdfb73a","line":374,"range":{"start_line":372,"start_character":22,"end_line":374,"end_character":38},"in_reply_to":"ba5201f7_aa1c7c6a","updated":"2017-01-08 14:59:29.000000000","message":"Same comment as above.","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":375,"context_line":"                LOG.error(msg)"},{"line_number":376,"context_line":"                raise self._get_exception()("},{"line_number":377,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"},{"line_number":378,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":379,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":380,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_ca170043","line":377,"range":{"start_line":377,"start_character":28,"end_line":377,"end_character":56},"updated":"2017-01-07 22:09:07.000000000","message":"Need _","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                       {\u0027info\u0027: info})"},{"line_number":375,"context_line":"                LOG.error(msg)"},{"line_number":376,"context_line":"                raise self._get_exception()("},{"line_number":377,"context_line":"                    message\u003dstrings.REPLICA_INVALID_MODE %"},{"line_number":378,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":379,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":380,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_dd731a14","line":377,"range":{"start_line":377,"start_character":28,"end_line":377,"end_character":56},"in_reply_to":"ba5201f7_ca170043","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":379,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":380,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"},{"line_number":381,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":382,"context_line":"                       \u0027replication type %(info)s\u0027"},{"line_number":383,"context_line":"                       \u0027_get_replication_info: invalid rpo %(rpo)s\u0027 %"},{"line_number":384,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_ea284488","line":383,"range":{"start_line":381,"start_character":22,"end_line":383,"end_character":67},"updated":"2017-01-07 22:09:07.000000000","message":"Need _LE\n\nAlso %-\u003e,","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                    {\u0027mode\u0027: replication_type})"},{"line_number":379,"context_line":"            info[\u0027rpo\u0027] \u003d int(specs.get(\u0027rpo\u0027, u\u0027\u003cis\u003e 0\u0027)[5:])"},{"line_number":380,"context_line":"            if info[\u0027rpo\u0027] and info[\u0027rpo\u0027] not in self._get_supported_rpo():"},{"line_number":381,"context_line":"                msg \u003d (\u0027_get_replication_info: invalid \u0027"},{"line_number":382,"context_line":"                       \u0027replication type %(info)s\u0027"},{"line_number":383,"context_line":"                       \u0027_get_replication_info: invalid rpo %(rpo)s\u0027 %"},{"line_number":384,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_1734a448","line":383,"range":{"start_line":381,"start_character":22,"end_line":383,"end_character":67},"in_reply_to":"ba5201f7_ea284488","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("},{"line_number":387,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":388,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":389,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":390,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_0a2ca897","line":387,"range":{"start_line":387,"start_character":28,"end_line":387,"end_character":55},"updated":"2017-01-07 22:09:07.000000000","message":"Need _","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                       {\u0027info\u0027: info, \u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("},{"line_number":387,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":388,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":389,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":390,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_fdc53e0a","line":387,"range":{"start_line":387,"start_character":28,"end_line":387,"end_character":55},"in_reply_to":"ba5201f7_0a2ca897","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("},{"line_number":387,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":388,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":389,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":390,"context_line":"            LOG.debug(msg)"},{"line_number":391,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_2a1fac5b","line":388,"range":{"start_line":388,"start_character":58,"end_line":388,"end_character":59},"updated":"2017-01-07 22:09:07.000000000","message":"% -\u003e ,","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                LOG.error(msg)"},{"line_number":386,"context_line":"                raise self._get_exception()("},{"line_number":387,"context_line":"                    message\u003dstrings.REPLICA_INVALID_RPO % {\u0027rpo\u0027: info[\u0027rpo\u0027]})"},{"line_number":388,"context_line":"            msg \u003d (\u0027_get_replication_info: info %(info)s\u0027 %"},{"line_number":389,"context_line":"                   {\u0027info\u0027: info})"},{"line_number":390,"context_line":"            LOG.debug(msg)"},{"line_number":391,"context_line":"        return info"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_9dd7d2be","line":388,"range":{"start_line":388,"start_character":58,"end_line":388,"end_character":59},"in_reply_to":"ba5201f7_2a1fac5b","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                \"vol_create\", vol\u003dvolume[\u0027name\u0027], size_blocks\u003dsize,"},{"line_number":400,"context_line":"                pool\u003dself.storage_info[storage.FLAG_KEYS[\u0027storage_pool\u0027]])"},{"line_number":401,"context_line":"        except errors.SystemOutOfSpaceError:"},{"line_number":402,"context_line":"            msg \u003d (strings.CREATE_VOLUME_BASE_ERROR,"},{"line_number":403,"context_line":"                   {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":404,"context_line":"            LOG.error(msg)"},{"line_number":405,"context_line":"            raise self._get_exception()("}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_6a445449","line":402,"range":{"start_line":402,"start_character":19,"end_line":402,"end_character":51},"updated":"2017-01-07 22:09:07.000000000","message":"Need _LE","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                   {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":404,"context_line":"            LOG.error(msg)"},{"line_number":405,"context_line":"            raise self._get_exception()("},{"line_number":406,"context_line":"                message\u003dstrings.CREATE_VOLUME_BASE_ERROR %"},{"line_number":407,"context_line":"                {\u0027details\u0027: strings.CREATE_VOLUME_SYSTEM_OUT_OF_SPACE})"},{"line_number":408,"context_line":"        except errors.PoolOutOfSpaceError:"},{"line_number":409,"context_line":"            err \u003d strings.CREATE_VOLUME_POOL_OUT_OF_SPACE % {"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba5201f7_4a7070a4","line":406,"range":{"start_line":406,"start_character":24,"end_line":406,"end_character":56},"updated":"2017-01-07 22:09:07.000000000","message":"Need _","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c900e80091041d42febb6f559cc11d6041055209","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                      \u0027snap_size\u0027: snapshot_size})"},{"line_number":875,"context_line":"            LOG.error(error)"},{"line_number":876,"context_line":"            raise self._get_exception()(error)"},{"line_number":877,"context_line":"        self.create_volume(volume)"},{"line_number":878,"context_line":"        try:"},{"line_number":879,"context_line":"            self._call_xiv_xcli("},{"line_number":880,"context_line":"                \"vol_copy\", vol_src\u003dsnapshot_name, vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":881,"context_line":"        except errors.XCLIError as e:"},{"line_number":882,"context_line":"            error \u003d (_(\"Fatal error in copying volume: %(details)s\"),"},{"line_number":883,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":884,"context_line":"            LOG.error(error)"},{"line_number":885,"context_line":"            self._silent_delete_volume(volume)"},{"line_number":886,"context_line":"            raise self._get_exception()(error)"},{"line_number":887,"context_line":"        if snapshot_size \u003d\u003d volume_size:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":"        size \u003d storage.gigabytes_to_blocks(volume_size)"},{"line_number":890,"context_line":"        try:"},{"line_number":891,"context_line":"            self._call_xiv_xcli("},{"line_number":892,"context_line":"                \"vol_resize\", vol\u003dvolume[\u0027name\u0027], size_blocks\u003dsize)"},{"line_number":893,"context_line":"        except errors.XCLIError as e:"},{"line_number":894,"context_line":"            error \u003d (_(\"Fatal error in resize volume: %(details)s\"),"},{"line_number":895,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_bff9f54f","line":892,"range":{"start_line":877,"start_character":0,"end_line":892,"end_character":67},"updated":"2017-01-13 07:30:12.000000000","message":"If the volume size is bigger than the snapshot_size, for example, the volume size is 2G and the snapshot_size is 1G. I think the code purpose here is that create the 1G vol first, then do vol_copy and then extend the volume to 2G. But the code here seems to create 2G volume first, then do vol_copy and then resize the vol from 2G to 2G.","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b07153972647be7b69dd6897b070906db1834892","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                      \u0027snap_size\u0027: snapshot_size})"},{"line_number":875,"context_line":"            LOG.error(error)"},{"line_number":876,"context_line":"            raise self._get_exception()(error)"},{"line_number":877,"context_line":"        self.create_volume(volume)"},{"line_number":878,"context_line":"        try:"},{"line_number":879,"context_line":"            self._call_xiv_xcli("},{"line_number":880,"context_line":"                \"vol_copy\", vol_src\u003dsnapshot_name, vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":881,"context_line":"        except errors.XCLIError as e:"},{"line_number":882,"context_line":"            error \u003d (_(\"Fatal error in copying volume: %(details)s\"),"},{"line_number":883,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":884,"context_line":"            LOG.error(error)"},{"line_number":885,"context_line":"            self._silent_delete_volume(volume)"},{"line_number":886,"context_line":"            raise self._get_exception()(error)"},{"line_number":887,"context_line":"        if snapshot_size \u003d\u003d volume_size:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":"        size \u003d storage.gigabytes_to_blocks(volume_size)"},{"line_number":890,"context_line":"        try:"},{"line_number":891,"context_line":"            self._call_xiv_xcli("},{"line_number":892,"context_line":"                \"vol_resize\", vol\u003dvolume[\u0027name\u0027], size_blocks\u003dsize)"},{"line_number":893,"context_line":"        except errors.XCLIError as e:"},{"line_number":894,"context_line":"            error \u003d (_(\"Fatal error in resize volume: %(details)s\"),"},{"line_number":895,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_97ff8000","line":892,"range":{"start_line":877,"start_character":0,"end_line":892,"end_character":67},"in_reply_to":"7a3c09a3_a35b9753","updated":"2017-01-15 20:11:51.000000000","message":"Checked it again. The reason that we do the resize is because vol_copy also resizes the target to the size of the source volume. So in such a case we need to fix it afterwards. I\u0027ll add a comment to explain it.","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f4e961c6e15041c41f4ccec2e12969357d42c1dc","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                      \u0027snap_size\u0027: snapshot_size})"},{"line_number":875,"context_line":"            LOG.error(error)"},{"line_number":876,"context_line":"            raise self._get_exception()(error)"},{"line_number":877,"context_line":"        self.create_volume(volume)"},{"line_number":878,"context_line":"        try:"},{"line_number":879,"context_line":"            self._call_xiv_xcli("},{"line_number":880,"context_line":"                \"vol_copy\", vol_src\u003dsnapshot_name, vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":881,"context_line":"        except errors.XCLIError as e:"},{"line_number":882,"context_line":"            error \u003d (_(\"Fatal error in copying volume: %(details)s\"),"},{"line_number":883,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":884,"context_line":"            LOG.error(error)"},{"line_number":885,"context_line":"            self._silent_delete_volume(volume)"},{"line_number":886,"context_line":"            raise self._get_exception()(error)"},{"line_number":887,"context_line":"        if snapshot_size \u003d\u003d volume_size:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":"        size \u003d storage.gigabytes_to_blocks(volume_size)"},{"line_number":890,"context_line":"        try:"},{"line_number":891,"context_line":"            self._call_xiv_xcli("},{"line_number":892,"context_line":"                \"vol_resize\", vol\u003dvolume[\u0027name\u0027], size_blocks\u003dsize)"},{"line_number":893,"context_line":"        except errors.XCLIError as e:"},{"line_number":894,"context_line":"            error \u003d (_(\"Fatal error in resize volume: %(details)s\"),"},{"line_number":895,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_a35b9753","line":892,"range":{"start_line":877,"start_character":0,"end_line":892,"end_character":67},"in_reply_to":"7a3c09a3_bff9f54f","updated":"2017-01-13 18:55:22.000000000","message":"Wow. I think you have a good point here. Thanks!","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c900e80091041d42febb6f559cc11d6041055209","unresolved":false,"context_lines":[{"line_number":942,"context_line":"            return"},{"line_number":943,"context_line":"        shrink \u003d \u0027yes\u0027 if wanted_size \u003c volume_size else \u0027no\u0027"},{"line_number":944,"context_line":"        size \u003d storage.gigabytes_to_blocks(wanted_size)"},{"line_number":945,"context_line":"        try:"},{"line_number":946,"context_line":"            self._call_xiv_xcli("},{"line_number":947,"context_line":"                \"vol_resize\", vol\u003dvolume[\u0027name\u0027],"},{"line_number":948,"context_line":"                size_blocks\u003dsize, shrink_volume\u003dshrink)"},{"line_number":949,"context_line":"        except errors.XCLIError as e:"},{"line_number":950,"context_line":"            error \u003d (_(\"Fatal error in vol_resize: %(details)s\"),"},{"line_number":951,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":952,"context_line":"            LOG.error(error)"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_5f7731d4","line":949,"range":{"start_line":945,"start_character":0,"end_line":949,"end_character":37},"updated":"2017-01-13 07:30:12.000000000","message":"How about extend a replication volume?","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f4e961c6e15041c41f4ccec2e12969357d42c1dc","unresolved":false,"context_lines":[{"line_number":942,"context_line":"            return"},{"line_number":943,"context_line":"        shrink \u003d \u0027yes\u0027 if wanted_size \u003c volume_size else \u0027no\u0027"},{"line_number":944,"context_line":"        size \u003d storage.gigabytes_to_blocks(wanted_size)"},{"line_number":945,"context_line":"        try:"},{"line_number":946,"context_line":"            self._call_xiv_xcli("},{"line_number":947,"context_line":"                \"vol_resize\", vol\u003dvolume[\u0027name\u0027],"},{"line_number":948,"context_line":"                size_blocks\u003dsize, shrink_volume\u003dshrink)"},{"line_number":949,"context_line":"        except errors.XCLIError as e:"},{"line_number":950,"context_line":"            error \u003d (_(\"Fatal error in vol_resize: %(details)s\"),"},{"line_number":951,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":952,"context_line":"            LOG.error(error)"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_439f5303","line":949,"range":{"start_line":945,"start_character":0,"end_line":949,"end_character":37},"in_reply_to":"7a3c09a3_5f7731d4","updated":"2017-01-13 18:55:22.000000000","message":"Extending a replicated volume would fail on the storage and return with a relevant error.","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"c900e80091041d42febb6f559cc11d6041055209","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"            LOG.error(error)"},{"line_number":1512,"context_line":"            raise self._get_exception()(error)"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"        self.create_volume(volume)"},{"line_number":1515,"context_line":"        try:"},{"line_number":1516,"context_line":"            self._call_xiv_xcli("},{"line_number":1517,"context_line":"                \"vol_copy\","},{"line_number":1518,"context_line":"                vol_src\u003dsrc_vref[\u0027name\u0027],"},{"line_number":1519,"context_line":"                vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":1520,"context_line":"        except errors.XCLIError as e:"},{"line_number":1521,"context_line":"            error \u003d (_(\"Failed to copy from \u0027%(src)s\u0027 to \u0027%(vol)s\u0027: \""},{"line_number":1522,"context_line":"                       \"%(details)s\"),"},{"line_number":1523,"context_line":"                     {\u0027src\u0027: src_vref.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1524,"context_line":"                      \u0027vol\u0027: volume.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1525,"context_line":"                      \u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1526,"context_line":"            LOG.error(error)"},{"line_number":1527,"context_line":"            self._silent_delete_volume(volume\u003dvolume)"},{"line_number":1528,"context_line":"            raise self._get_exception()(error)"},{"line_number":1529,"context_line":"        if src_vref_size \u003d\u003d volume_size:"},{"line_number":1530,"context_line":"            return"},{"line_number":1531,"context_line":"        size \u003d storage.gigabytes_to_blocks(volume_size)"},{"line_number":1532,"context_line":"        try:"},{"line_number":1533,"context_line":"            self._call_xiv_xcli("},{"line_number":1534,"context_line":"                \"vol_resize\","},{"line_number":1535,"context_line":"                vol\u003dvolume[\u0027name\u0027],"},{"line_number":1536,"context_line":"                size_blocks\u003dsize)"},{"line_number":1537,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_df30810a","line":1534,"range":{"start_line":1514,"start_character":0,"end_line":1534,"end_character":29},"updated":"2017-01-13 07:30:12.000000000","message":"The same comments with create_volume_from_snapshot","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f4e961c6e15041c41f4ccec2e12969357d42c1dc","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"            LOG.error(error)"},{"line_number":1512,"context_line":"            raise self._get_exception()(error)"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"        self.create_volume(volume)"},{"line_number":1515,"context_line":"        try:"},{"line_number":1516,"context_line":"            self._call_xiv_xcli("},{"line_number":1517,"context_line":"                \"vol_copy\","},{"line_number":1518,"context_line":"                vol_src\u003dsrc_vref[\u0027name\u0027],"},{"line_number":1519,"context_line":"                vol_trg\u003dvolume[\u0027name\u0027])"},{"line_number":1520,"context_line":"        except errors.XCLIError as e:"},{"line_number":1521,"context_line":"            error \u003d (_(\"Failed to copy from \u0027%(src)s\u0027 to \u0027%(vol)s\u0027: \""},{"line_number":1522,"context_line":"                       \"%(details)s\"),"},{"line_number":1523,"context_line":"                     {\u0027src\u0027: src_vref.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1524,"context_line":"                      \u0027vol\u0027: volume.get(\u0027name\u0027, \u0027\u0027),"},{"line_number":1525,"context_line":"                      \u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1526,"context_line":"            LOG.error(error)"},{"line_number":1527,"context_line":"            self._silent_delete_volume(volume\u003dvolume)"},{"line_number":1528,"context_line":"            raise self._get_exception()(error)"},{"line_number":1529,"context_line":"        if src_vref_size \u003d\u003d volume_size:"},{"line_number":1530,"context_line":"            return"},{"line_number":1531,"context_line":"        size \u003d storage.gigabytes_to_blocks(volume_size)"},{"line_number":1532,"context_line":"        try:"},{"line_number":1533,"context_line":"            self._call_xiv_xcli("},{"line_number":1534,"context_line":"                \"vol_resize\","},{"line_number":1535,"context_line":"                vol\u003dvolume[\u0027name\u0027],"},{"line_number":1536,"context_line":"                size_blocks\u003dsize)"},{"line_number":1537,"context_line":"        except errors.XCLIError as e:"}],"source_content_type":"text/x-python","patch_set":36,"id":"7a3c09a3_97109550","line":1534,"range":{"start_line":1514,"start_character":0,"end_line":1534,"end_character":29},"in_reply_to":"7a3c09a3_df30810a","updated":"2017-01-13 18:55:22.000000000","message":"The same as create_volume_from_snapshot. Thanks!","commit_id":"09efd0e9639bc74a6fe37d98de5c2bc57e0d6f11"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                if cg:"},{"line_number":504,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"},{"line_number":505,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"},{"line_number":506,"context_line":"                raise e"},{"line_number":507,"context_line":"            volume_update[\u0027replication_status\u0027] \u003d \u0027enabled\u0027"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        return volume_update"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_b207ea16","line":506,"range":{"start_line":506,"start_character":21,"end_line":506,"end_character":23},"updated":"2017-01-17 04:57:26.000000000","message":"Just say \"raise\" without \"e\" is enough as you are not changing the exception.","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":503,"context_line":"                if cg:"},{"line_number":504,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"},{"line_number":505,"context_line":"                self._silent_delete_volume(volume\u003dvolume)"},{"line_number":506,"context_line":"                raise e"},{"line_number":507,"context_line":"            volume_update[\u0027replication_status\u0027] \u003d \u0027enabled\u0027"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        return volume_update"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_09296ce6","line":506,"range":{"start_line":506,"start_character":21,"end_line":506,"end_character":23},"in_reply_to":"7a3c09a3_b207ea16","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        target, params \u003d self._get_replication_target_params()"},{"line_number":543,"context_line":"        LOG.info(_LI(\u0027Target %(target)s: %(params)s\u0027),"},{"line_number":544,"context_line":"                 {\u0027target\u0027: target, \u0027params\u0027: str(params)})"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        try:"},{"line_number":547,"context_line":"            pool \u003d params[\u0027san_clustername\u0027]"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_12135e5c","line":544,"range":{"start_line":544,"start_character":46,"end_line":544,"end_character":49},"updated":"2017-01-17 04:57:26.000000000","message":"str() -\u003e six.text_type()","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        target, params \u003d self._get_replication_target_params()"},{"line_number":543,"context_line":"        LOG.info(_LI(\u0027Target %(target)s: %(params)s\u0027),"},{"line_number":544,"context_line":"                 {\u0027target\u0027: target, \u0027params\u0027: str(params)})"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        try:"},{"line_number":547,"context_line":"            pool \u003d params[\u0027san_clustername\u0027]"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_09708c0a","line":544,"range":{"start_line":544,"start_character":46,"end_line":544,"end_character":49},"in_reply_to":"7a3c09a3_12135e5c","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            try:"},{"line_number":685,"context_line":"                target, params \u003d self._get_replication_target_params()"},{"line_number":686,"context_line":"                LOG.info(_LI(\u0027Target %(target)s: %(params)s\u0027),"},{"line_number":687,"context_line":"                         {\u0027target\u0027: target, \u0027params\u0027: str(params)})"},{"line_number":688,"context_line":"            except Exception as e:"},{"line_number":689,"context_line":"                LOG.error(_LE(\"Unable to delete replicated volume \""},{"line_number":690,"context_line":"                              \"\u0027%(volume)s\u0027 :\\n%(error)s.\"),"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_3233faf7","line":687,"range":{"start_line":687,"start_character":54,"end_line":687,"end_character":57},"updated":"2017-01-17 04:57:26.000000000","message":"six.text_type","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            try:"},{"line_number":685,"context_line":"                target, params \u003d self._get_replication_target_params()"},{"line_number":686,"context_line":"                LOG.info(_LI(\u0027Target %(target)s: %(params)s\u0027),"},{"line_number":687,"context_line":"                         {\u0027target\u0027: target, \u0027params\u0027: str(params)})"},{"line_number":688,"context_line":"            except Exception as e:"},{"line_number":689,"context_line":"                LOG.error(_LE(\"Unable to delete replicated volume \""},{"line_number":690,"context_line":"                              \"\u0027%(volume)s\u0027 :\\n%(error)s.\"),"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_69f8304a","line":687,"range":{"start_line":687,"start_character":54,"end_line":687,"end_character":57},"in_reply_to":"7a3c09a3_3233faf7","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":769,"context_line":"            meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d ("},{"line_number":770,"context_line":"                self._build_initiator_target_map(fc_targets, connector))"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        LOG.debug(str(meta))"},{"line_number":773,"context_line":"        return meta"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_324a1a56","line":772,"range":{"start_line":772,"start_character":18,"end_line":772,"end_character":21},"updated":"2017-01-17 04:57:26.000000000","message":"six.text_type","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":769,"context_line":"            meta[\u0027data\u0027][\u0027initiator_target_map\u0027] \u003d ("},{"line_number":770,"context_line":"                self._build_initiator_target_map(fc_targets, connector))"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        LOG.debug(str(meta))"},{"line_number":773,"context_line":"        return meta"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_89be3c63","line":772,"range":{"start_line":772,"start_character":18,"end_line":772,"end_character":21},"in_reply_to":"7a3c09a3_324a1a56","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":787,"context_line":"        if host is None:"},{"line_number":788,"context_line":"            LOG.error(TERMINATE_CONNECTION_BASE_ERROR,"},{"line_number":789,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":790,"context_line":"                       \u0027error\u0027: _LE(\"Host not found.\")})"},{"line_number":791,"context_line":"            return"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        fc_targets \u003d {}"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_727662a5","line":790,"range":{"start_line":790,"start_character":32,"end_line":790,"end_character":36},"updated":"2017-01-17 04:57:26.000000000","message":"I don\u0027t think this is necessary.","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":787,"context_line":"        if host is None:"},{"line_number":788,"context_line":"            LOG.error(TERMINATE_CONNECTION_BASE_ERROR,"},{"line_number":789,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":790,"context_line":"                       \u0027error\u0027: _LE(\"Host not found.\")})"},{"line_number":791,"context_line":"            return"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        fc_targets \u003d {}"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_4980d48b","line":790,"range":{"start_line":790,"start_character":32,"end_line":790,"end_character":36},"in_reply_to":"7a3c09a3_727662a5","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":848,"context_line":"            LOG.error(TERMINATE_CONNECTION_HOST_ERROR,"},{"line_number":849,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":850,"context_line":"                       \u0027host\u0027: host.get(\u0027name\u0027),"},{"line_number":851,"context_line":"                       \u0027error\u0027: _LE(\"Host not found.\")})"},{"line_number":852,"context_line":"        except errors.XCLIError as err:"},{"line_number":853,"context_line":"            details \u003d self._get_code_and_status_or_message(err)"},{"line_number":854,"context_line":"            LOG.error(TERMINATE_CONNECTION_HOST_ERROR,"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_32613ad4","line":851,"range":{"start_line":851,"start_character":32,"end_line":851,"end_character":36},"updated":"2017-01-17 04:57:26.000000000","message":"No need for this.","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":848,"context_line":"            LOG.error(TERMINATE_CONNECTION_HOST_ERROR,"},{"line_number":849,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":850,"context_line":"                       \u0027host\u0027: host.get(\u0027name\u0027),"},{"line_number":851,"context_line":"                       \u0027error\u0027: _LE(\"Host not found.\")})"},{"line_number":852,"context_line":"        except errors.XCLIError as err:"},{"line_number":853,"context_line":"            details \u003d self._get_code_and_status_or_message(err)"},{"line_number":854,"context_line":"            LOG.error(TERMINATE_CONNECTION_HOST_ERROR,"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_4957f425","line":851,"range":{"start_line":851,"start_character":32,"end_line":851,"end_character":36},"in_reply_to":"7a3c09a3_32613ad4","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":1436,"context_line":"        connection_type \u003d self._get_connection_type()"},{"line_number":1437,"context_line":"        backend_name \u003d None"},{"line_number":1438,"context_line":"        if self.driver:"},{"line_number":1439,"context_line":"            backend_name \u003d \\"},{"line_number":1440,"context_line":"                self.driver.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":1441,"context_line":"        self.meta[\u0027stat\u0027][\"volume_backend_name\"] \u003d backend_name or \\"},{"line_number":1442,"context_line":"            \u0027%s_%s_%s_%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_b2f1aa03","line":1439,"range":{"start_line":1439,"start_character":27,"end_line":1439,"end_character":28},"updated":"2017-01-17 04:57:26.000000000","message":"Better to use () instead of \\\n\nSame comments apply to other places using \\","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":1436,"context_line":"        connection_type \u003d self._get_connection_type()"},{"line_number":1437,"context_line":"        backend_name \u003d None"},{"line_number":1438,"context_line":"        if self.driver:"},{"line_number":1439,"context_line":"            backend_name \u003d \\"},{"line_number":1440,"context_line":"                self.driver.configuration.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":1441,"context_line":"        self.meta[\u0027stat\u0027][\"volume_backend_name\"] \u003d backend_name or \\"},{"line_number":1442,"context_line":"            \u0027%s_%s_%s_%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_4c762207","line":1439,"range":{"start_line":1439,"start_character":27,"end_line":1439,"end_character":28},"in_reply_to":"7a3c09a3_b2f1aa03","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        self.meta[\u0027stat\u0027][\u0027total_capacity_gb\u0027] \u003d int(soft_size)"},{"line_number":1479,"context_line":"        self.meta[\u0027stat\u0027][\u0027free_capacity_gb\u0027] \u003d int("},{"line_number":1480,"context_line":"            pool.get(\u0027empty_space_soft\u0027, pool.get(\u0027empty_space\u0027)))"},{"line_number":1481,"context_line":"        self.meta[\u0027stat\u0027][\u0027reserved_percentage\u0027] \u003d 0  # WTF?"},{"line_number":1482,"context_line":"        self.meta[\u0027stat\u0027][\u0027consistencygroup_support\u0027] \u003d True"},{"line_number":1483,"context_line":""},{"line_number":1484,"context_line":"        # thin/thick provision"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_52e32633","line":1481,"range":{"start_line":1481,"start_character":51,"end_line":1481,"end_character":53},"updated":"2017-01-17 04:57:26.000000000","message":"Should read from cinder.conf.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L264","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"        self.meta[\u0027stat\u0027][\u0027total_capacity_gb\u0027] \u003d int(soft_size)"},{"line_number":1479,"context_line":"        self.meta[\u0027stat\u0027][\u0027free_capacity_gb\u0027] \u003d int("},{"line_number":1480,"context_line":"            pool.get(\u0027empty_space_soft\u0027, pool.get(\u0027empty_space\u0027)))"},{"line_number":1481,"context_line":"        self.meta[\u0027stat\u0027][\u0027reserved_percentage\u0027] \u003d 0  # WTF?"},{"line_number":1482,"context_line":"        self.meta[\u0027stat\u0027][\u0027consistencygroup_support\u0027] \u003d True"},{"line_number":1483,"context_line":""},{"line_number":1484,"context_line":"        # thin/thick provision"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_ecd42ebe","line":1481,"range":{"start_line":1481,"start_character":51,"end_line":1481,"end_character":53},"in_reply_to":"7a3c09a3_52e32633","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":2412,"context_line":"            self.ibm_storage_cli, self.active_backend_id)"},{"line_number":2413,"context_line":""},{"line_number":2414,"context_line":"        if self.ibm_storage_cli:"},{"line_number":2415,"context_line":"            LOG.info(_LI(\"_call_xiv_xcli #1: %s\") % method)"},{"line_number":2416,"context_line":"        else:"},{"line_number":2417,"context_line":"            LOG.debug(\"_call_xiv_xcli #2: %s\" % method)"},{"line_number":2418,"context_line":"        return getattr(self.ibm_storage_cli.cmd, method)(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_32021ab5","line":2415,"range":{"start_line":2415,"start_character":50,"end_line":2415,"end_character":51},"updated":"2017-01-17 04:57:26.000000000","message":"% -\u003e ,","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":2412,"context_line":"            self.ibm_storage_cli, self.active_backend_id)"},{"line_number":2413,"context_line":""},{"line_number":2414,"context_line":"        if self.ibm_storage_cli:"},{"line_number":2415,"context_line":"            LOG.info(_LI(\"_call_xiv_xcli #1: %s\") % method)"},{"line_number":2416,"context_line":"        else:"},{"line_number":2417,"context_line":"            LOG.debug(\"_call_xiv_xcli #2: %s\" % method)"},{"line_number":2418,"context_line":"        return getattr(self.ibm_storage_cli.cmd, method)(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_ec70aede","line":2415,"range":{"start_line":2415,"start_character":50,"end_line":2415,"end_character":51},"in_reply_to":"7a3c09a3_32021ab5","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":2414,"context_line":"        if self.ibm_storage_cli:"},{"line_number":2415,"context_line":"            LOG.info(_LI(\"_call_xiv_xcli #1: %s\") % method)"},{"line_number":2416,"context_line":"        else:"},{"line_number":2417,"context_line":"            LOG.debug(\"_call_xiv_xcli #2: %s\" % method)"},{"line_number":2418,"context_line":"        return getattr(self.ibm_storage_cli.cmd, method)(*args, **kwargs)"},{"line_number":2419,"context_line":""},{"line_number":2420,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_722e6244","line":2417,"range":{"start_line":2417,"start_character":46,"end_line":2417,"end_character":47},"updated":"2017-01-17 04:57:26.000000000","message":"% -\u003e ,","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":2414,"context_line":"        if self.ibm_storage_cli:"},{"line_number":2415,"context_line":"            LOG.info(_LI(\"_call_xiv_xcli #1: %s\") % method)"},{"line_number":2416,"context_line":"        else:"},{"line_number":2417,"context_line":"            LOG.debug(\"_call_xiv_xcli #2: %s\" % method)"},{"line_number":2418,"context_line":"        return getattr(self.ibm_storage_cli.cmd, method)(*args, **kwargs)"},{"line_number":2419,"context_line":""},{"line_number":2420,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_2c7716d4","line":2417,"range":{"start_line":2417,"start_character":46,"end_line":2417,"end_character":47},"in_reply_to":"7a3c09a3_722e6244","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":2426,"context_line":"        self.ibm_storage_remote_cli \u003d self._get_xcli("},{"line_number":2427,"context_line":"            self.ibm_storage_remote_cli, remote_id)"},{"line_number":2428,"context_line":""},{"line_number":2429,"context_line":"        LOG.debug(\"_call_remote_xiv_xcli: %s\" % method)"},{"line_number":2430,"context_line":"        return getattr(self.ibm_storage_remote_cli.cmd, method)("},{"line_number":2431,"context_line":"            *args,"},{"line_number":2432,"context_line":"            **kwargs)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_9233ceaa","line":2429,"range":{"start_line":2429,"start_character":46,"end_line":2429,"end_character":47},"updated":"2017-01-17 04:57:26.000000000","message":"% -\u003e ,","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"f2f5aefe3808a47b49fd65785e7d894f3216ec75","unresolved":false,"context_lines":[{"line_number":2426,"context_line":"        self.ibm_storage_remote_cli \u003d self._get_xcli("},{"line_number":2427,"context_line":"            self.ibm_storage_remote_cli, remote_id)"},{"line_number":2428,"context_line":""},{"line_number":2429,"context_line":"        LOG.debug(\"_call_remote_xiv_xcli: %s\" % method)"},{"line_number":2430,"context_line":"        return getattr(self.ibm_storage_remote_cli.cmd, method)("},{"line_number":2431,"context_line":"            *args,"},{"line_number":2432,"context_line":"            **kwargs)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_874f036a","line":2429,"range":{"start_line":2429,"start_character":46,"end_line":2429,"end_character":47},"in_reply_to":"7a3c09a3_9233ceaa","updated":"2017-01-17 14:34:11.000000000","message":"Done","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cf396b85688157ba47afe323541f5419918aa8d","unresolved":false,"context_lines":[{"line_number":2456,"context_line":"        else:"},{"line_number":2457,"context_line":"            params \u003d self._get_target_params(backend_id)"},{"line_number":2458,"context_line":"            if not params:"},{"line_number":2459,"context_line":"                msg \u003d (_(\"Missing target information for target \u0027%(target)s\u0027\"),"},{"line_number":2460,"context_line":"                       {\u0027target\u0027: backend_id})"},{"line_number":2461,"context_line":"                LOG.error(msg)"},{"line_number":2462,"context_line":"                raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":38,"id":"7a3c09a3_5216c6f1","line":2459,"range":{"start_line":2459,"start_character":78,"end_line":2459,"end_character":79},"updated":"2017-01-17 04:57:26.000000000","message":", -\u003e %","commit_id":"27528cf7b8ff1316e22127371818a6ac978ac8a9"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"86c48ea3ce91062a2f3dbcb1cf4e10ecb7553f38","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# performance class strings - used in exceptions"},{"line_number":58,"context_line":"PERF_CLASS_ERROR \u003d _(\"Unable to create or get performance class: %(details)s\")"},{"line_number":59,"context_line":"PERF_CLASS_ADD_ERROR \u003d \\"},{"line_number":60,"context_line":"    _(\"Unable to add volume to performance class: %(details)s\")"},{"line_number":61,"context_line":"PERF_CLASS_VALUES_ERROR \u003d _(\"A performance class with the same name but \""},{"line_number":62,"context_line":"                            \"different values exists:  %(details)s\")"}],"source_content_type":"text/x-python","patch_set":39,"id":"7a3c09a3_d0e0c798","line":59,"updated":"2017-01-17 18:39:02.000000000","message":"nuke the \\  you already have the _()","commit_id":"a3699d3928e43c37deb90700bca9ac462992ba57"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"9f771b41026f0f05e679077eb92fb93d6624c369","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# performance class strings - used in exceptions"},{"line_number":58,"context_line":"PERF_CLASS_ERROR \u003d _(\"Unable to create or get performance class: %(details)s\")"},{"line_number":59,"context_line":"PERF_CLASS_ADD_ERROR \u003d \\"},{"line_number":60,"context_line":"    _(\"Unable to add volume to performance class: %(details)s\")"},{"line_number":61,"context_line":"PERF_CLASS_VALUES_ERROR \u003d _(\"A performance class with the same name but \""},{"line_number":62,"context_line":"                            \"different values exists:  %(details)s\")"}],"source_content_type":"text/x-python","patch_set":39,"id":"7a3c09a3_86ae05e4","line":59,"in_reply_to":"7a3c09a3_d0e0c798","updated":"2017-01-17 19:01:07.000000000","message":"Done","commit_id":"a3699d3928e43c37deb90700bca9ac462992ba57"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        replication_info \u003d self._get_replication_info(specs)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if cg and replication_info[\u0027enabled\u0027]:"},{"line_number":448,"context_line":"            \u0027\u0027\u0027An unsupported illegal configuration\u0027\u0027\u0027"},{"line_number":449,"context_line":"            msg \u003d _(\"Unable to create volume: \""},{"line_number":450,"context_line":"                    \"Replication of consistency group is not supported\")"},{"line_number":451,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_30be60ff","line":448,"updated":"2017-01-17 22:18:45.000000000","message":"Better to comment with \u0027#\u0027","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        replication_info \u003d self._get_replication_info(specs)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if cg and replication_info[\u0027enabled\u0027]:"},{"line_number":448,"context_line":"            \u0027\u0027\u0027An unsupported illegal configuration\u0027\u0027\u0027"},{"line_number":449,"context_line":"            msg \u003d _(\"Unable to create volume: \""},{"line_number":450,"context_line":"                    \"Replication of consistency group is not supported\")"},{"line_number":451,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9aad59eb","line":448,"in_reply_to":"7a3c09a3_30be60ff","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f87da759a4cc982e142d90fba868e5c049eacf94","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        return volume_update"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _get_replication_target_params(self):"},{"line_number":514,"context_line":"        LOG.debug(\u0027_get_replication_target_params\u0027)"},{"line_number":515,"context_line":"        targets \u003d self._get_targets()"},{"line_number":516,"context_line":"        if not targets:"},{"line_number":517,"context_line":"            msg \u003d _(\"No targets available for replication\")"},{"line_number":518,"context_line":"            LOG.error(msg)"},{"line_number":519,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":520,"context_line":"        no_of_targets \u003d len(targets)"},{"line_number":521,"context_line":"        if no_of_targets \u003e 1:"},{"line_number":522,"context_line":"            msg \u003d _(\"Too many targets configured. Only one is supported\")"},{"line_number":523,"context_line":"            LOG.error(msg)"},{"line_number":524,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        LOG.debug(\u0027_get_replication_target_params selecting target...\u0027)"},{"line_number":527,"context_line":"        target \u003d self._get_target()"},{"line_number":528,"context_line":"        if not target:"},{"line_number":529,"context_line":"            msg \u003d _(\"No targets available for replication\")"},{"line_number":530,"context_line":"            LOG.error(msg)"},{"line_number":531,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":532,"context_line":"        params \u003d self._get_target_params(target)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_2bfee0ad","line":529,"range":{"start_line":514,"start_character":1,"end_line":529,"end_character":59},"updated":"2017-01-18 09:35:49.000000000","message":"Add \u0027.\u0027 to the end of the debug messages.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        return volume_update"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def _get_replication_target_params(self):"},{"line_number":514,"context_line":"        LOG.debug(\u0027_get_replication_target_params\u0027)"},{"line_number":515,"context_line":"        targets \u003d self._get_targets()"},{"line_number":516,"context_line":"        if not targets:"},{"line_number":517,"context_line":"            msg \u003d _(\"No targets available for replication\")"},{"line_number":518,"context_line":"            LOG.error(msg)"},{"line_number":519,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":520,"context_line":"        no_of_targets \u003d len(targets)"},{"line_number":521,"context_line":"        if no_of_targets \u003e 1:"},{"line_number":522,"context_line":"            msg \u003d _(\"Too many targets configured. Only one is supported\")"},{"line_number":523,"context_line":"            LOG.error(msg)"},{"line_number":524,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        LOG.debug(\u0027_get_replication_target_params selecting target...\u0027)"},{"line_number":527,"context_line":"        target \u003d self._get_target()"},{"line_number":528,"context_line":"        if not target:"},{"line_number":529,"context_line":"            msg \u003d _(\"No targets available for replication\")"},{"line_number":530,"context_line":"            LOG.error(msg)"},{"line_number":531,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException(data\u003dmsg)"},{"line_number":532,"context_line":"        params \u003d self._get_target_params(target)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_bae69541","line":529,"range":{"start_line":514,"start_character":1,"end_line":529,"end_character":59},"in_reply_to":"7a3c09a3_2bfee0ad","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                \"cg_remove_vol\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":658,"context_line":"        except errors.XCLIError as e:"},{"line_number":659,"context_line":"            error \u003d (_LE(\"Failed removing volume %(vol)s from \""},{"line_number":660,"context_line":"                         \"consistency group %(cg)s: %(err)s\"),"},{"line_number":661,"context_line":"                     {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":662,"context_line":"                      \u0027cg\u0027: cgname,"},{"line_number":663,"context_line":"                      \u0027err\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":664,"context_line":"            LOG.error(error)"},{"line_number":665,"context_line":"        self._silent_delete_volume(volume\u003dvolume)"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_d05c3c7f","line":663,"range":{"start_line":660,"start_character":61,"end_line":663,"end_character":69},"updated":"2017-01-17 22:23:01.000000000","message":"Move this in to the logger call to be passed as an argument, otherwise you are just creating a tuple here that will not log correctly.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":657,"context_line":"                \"cg_remove_vol\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":658,"context_line":"        except errors.XCLIError as e:"},{"line_number":659,"context_line":"            error \u003d (_LE(\"Failed removing volume %(vol)s from \""},{"line_number":660,"context_line":"                         \"consistency group %(cg)s: %(err)s\"),"},{"line_number":661,"context_line":"                     {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":662,"context_line":"                      \u0027cg\u0027: cgname,"},{"line_number":663,"context_line":"                      \u0027err\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":664,"context_line":"            LOG.error(error)"},{"line_number":665,"context_line":"        self._silent_delete_volume(volume\u003dvolume)"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3a40e506","line":663,"range":{"start_line":660,"start_character":61,"end_line":663,"end_character":69},"in_reply_to":"7a3c09a3_d05c3c7f","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":698,"context_line":"                        \"vol_delete\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":699,"context_line":"                except errors.XCLIError as e:"},{"line_number":700,"context_line":"                    msg \u003d (_LE(\"Unable to delete replicated volume \""},{"line_number":701,"context_line":"                               \"\u0027%(volume)s\u0027: %(error)s.\"),"},{"line_number":702,"context_line":"                           {\u0027error\u0027: self._get_code_and_status_or_message(e),"},{"line_number":703,"context_line":"                           \u0027volume\u0027: volume[\u0027name\u0027]})"},{"line_number":704,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_f0de98db","line":701,"range":{"start_line":701,"start_character":58,"end_line":701,"end_character":59},"updated":"2017-01-17 22:23:01.000000000","message":"Same as above.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":698,"context_line":"                        \"vol_delete\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":699,"context_line":"                except errors.XCLIError as e:"},{"line_number":700,"context_line":"                    msg \u003d (_LE(\"Unable to delete replicated volume \""},{"line_number":701,"context_line":"                               \"\u0027%(volume)s\u0027: %(error)s.\"),"},{"line_number":702,"context_line":"                           {\u0027error\u0027: self._get_code_and_status_or_message(e),"},{"line_number":703,"context_line":"                           \u0027volume\u0027: volume[\u0027name\u0027]})"},{"line_number":704,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_dafd21b2","line":701,"range":{"start_line":701,"start_character":58,"end_line":701,"end_character":59},"in_reply_to":"7a3c09a3_f0de98db","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f87da759a4cc982e142d90fba868e5c049eacf94","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        object.  If they are incompatible, raise a"},{"line_number":1028,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":1029,"context_line":"        \"\"\""},{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        existing_volume \u003d reference[\u0027source-name\u0027]"},{"line_number":1032,"context_line":"        LOG.debug(\"manage_volume: %(volume)s\", {\u0027volume\u0027: existing_volume})"},{"line_number":1033,"context_line":"        # check that volume exists"},{"line_number":1034,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4477999f","line":1031,"range":{"start_line":1030,"start_character":0,"end_line":1031,"end_character":50},"updated":"2017-01-18 09:35:49.000000000","message":"Volume can be managed though \u0027source-name\u0027 or \u0027source-id\u0027. Only \u0027source-name\u0027 is covered here. If manage volume though \u0027source-id\u0027 is not supported here, exception should be raised.\n\nAlso add volume type check since there should be some VolumeTypeMismatch between the backhanded volume and the given volume type.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        object.  If they are incompatible, raise a"},{"line_number":1028,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":1029,"context_line":"        \"\"\""},{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        existing_volume \u003d reference[\u0027source-name\u0027]"},{"line_number":1032,"context_line":"        LOG.debug(\"manage_volume: %(volume)s\", {\u0027volume\u0027: existing_volume})"},{"line_number":1033,"context_line":"        # check that volume exists"},{"line_number":1034,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7c5417c9","line":1031,"range":{"start_line":1030,"start_character":0,"end_line":1031,"end_character":50},"in_reply_to":"7a3c09a3_4477999f","updated":"2017-01-18 16:58:38.000000000","message":"Can you please show me where it says that source-id can be used? I want to fully understand this before making any changes.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"    @proxy._trace_time"},{"line_number":1355,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":1356,"context_line":"        \u0027\u0027\u0027Change volume type."},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"        Returns a boolean indicating whether the retype occurred."},{"line_number":1359,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_f0613806","line":1356,"range":{"start_line":1356,"start_character":8,"end_line":1356,"end_character":11},"updated":"2017-01-17 22:23:01.000000000","message":"/\u0027\u0027\u0027/\"\"\"/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"    @proxy._trace_time"},{"line_number":1355,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":1356,"context_line":"        \u0027\u0027\u0027Change volume type."},{"line_number":1357,"context_line":""},{"line_number":1358,"context_line":"        Returns a boolean indicating whether the retype occurred."},{"line_number":1359,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3aaf057e","line":1356,"range":{"start_line":1356,"start_character":8,"end_line":1356,"end_character":11},"in_reply_to":"7a3c09a3_f0613806","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c0ffcd7873e93c89ef7ca9d999a21eaa4d2e585f","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"        replication_info \u003d self._get_replication_info(specs)"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":"        if replication_info.get(\u0027enabled\u0027):"},{"line_number":1634,"context_line":"            \u0027\u0027\u0027An unsupported illegal configuration\u0027\u0027\u0027"},{"line_number":1635,"context_line":"            msg \u003d _(\"Unable to create consistency group: \""},{"line_number":1636,"context_line":"                    \"Replication of consistency group is not supported\")"},{"line_number":1637,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_50a5ac44","line":1634,"updated":"2017-01-17 22:18:45.000000000","message":"use \u0027#\u0027 for comment.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"        replication_info \u003d self._get_replication_info(specs)"},{"line_number":1632,"context_line":""},{"line_number":1633,"context_line":"        if replication_info.get(\u0027enabled\u0027):"},{"line_number":1634,"context_line":"            \u0027\u0027\u0027An unsupported illegal configuration\u0027\u0027\u0027"},{"line_number":1635,"context_line":"            msg \u003d _(\"Unable to create consistency group: \""},{"line_number":1636,"context_line":"                    \"Replication of consistency group is not supported\")"},{"line_number":1637,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_1ae329da","line":1634,"in_reply_to":"7a3c09a3_50a5ac44","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"            LOG.error(error)"},{"line_number":1654,"context_line":"            raise self._get_exception()(error)"},{"line_number":1655,"context_line":"        except errors.XCLIError as e:"},{"line_number":1656,"context_line":"            error \u003d (_(\"Fatal error in cg_create: %(details)s\"),"},{"line_number":1657,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1658,"context_line":"            LOG.error(error)"},{"line_number":1659,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_30066020","line":1656,"range":{"start_line":1656,"start_character":63,"end_line":1656,"end_character":64},"updated":"2017-01-17 22:23:01.000000000","message":"/,/%/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"            LOG.error(error)"},{"line_number":1654,"context_line":"            raise self._get_exception()(error)"},{"line_number":1655,"context_line":"        except errors.XCLIError as e:"},{"line_number":1656,"context_line":"            error \u003d (_(\"Fatal error in cg_create: %(details)s\"),"},{"line_number":1657,"context_line":"                     {\u0027details\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1658,"context_line":"            LOG.error(error)"},{"line_number":1659,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_dad521e5","line":1656,"range":{"start_line":1656,"start_character":63,"end_line":1656,"end_character":64},"in_reply_to":"7a3c09a3_30066020","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"                    \"cg_remove_vol\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":1791,"context_line":"            except errors.XCLIError as e:"},{"line_number":1792,"context_line":"                error \u003d (_LE(\"Failed removing volume %(vol)s from \""},{"line_number":1793,"context_line":"                             \"consistency group %(cg)s: %(err)s\"),"},{"line_number":1794,"context_line":"                         {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":1795,"context_line":"                          \u0027cg\u0027: cgname,"},{"line_number":1796,"context_line":"                          \u0027err\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                # continue in spite of error"},{"line_number":1799,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6b50f90b","line":1796,"range":{"start_line":1793,"start_character":65,"end_line":1796,"end_character":73},"updated":"2017-01-17 22:23:01.000000000","message":"Move into logger call.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"                    \"cg_remove_vol\", vol\u003dvolume[\u0027name\u0027])"},{"line_number":1791,"context_line":"            except errors.XCLIError as e:"},{"line_number":1792,"context_line":"                error \u003d (_LE(\"Failed removing volume %(vol)s from \""},{"line_number":1793,"context_line":"                             \"consistency group %(cg)s: %(err)s\"),"},{"line_number":1794,"context_line":"                         {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":1795,"context_line":"                          \u0027cg\u0027: cgname,"},{"line_number":1796,"context_line":"                          \u0027err\u0027: self._get_code_and_status_or_message(e)})"},{"line_number":1797,"context_line":"                LOG.error(error)"},{"line_number":1798,"context_line":"                # continue in spite of error"},{"line_number":1799,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_da4361ad","line":1796,"range":{"start_line":1793,"start_character":65,"end_line":1796,"end_character":73},"in_reply_to":"7a3c09a3_6b50f90b","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector)"},{"line_number":2074,"context_line":"        except Exception as e:"},{"line_number":2075,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2076,"context_line":"            ex_details \u003d (_(\"Invalid connector information: \u0027%(details)s.\u0027\"),"},{"line_number":2077,"context_line":"                          {\u0027details\u0027: details})"},{"line_number":2078,"context_line":"            raise self._get_exception()(\"%(prefix)s %(ex_details)s\" %"},{"line_number":2079,"context_line":"                                        {\u0027prefix\u0027: storage.XIV_LOG_PREFIX,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_2b6271d8","line":2076,"range":{"start_line":2076,"start_character":76,"end_line":2076,"end_character":77},"updated":"2017-01-17 22:23:01.000000000","message":"/,/%/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector)"},{"line_number":2074,"context_line":"        except Exception as e:"},{"line_number":2075,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2076,"context_line":"            ex_details \u003d (_(\"Invalid connector information: \u0027%(details)s.\u0027\"),"},{"line_number":2077,"context_line":"                          {\u0027details\u0027: details})"},{"line_number":2078,"context_line":"            raise self._get_exception()(\"%(prefix)s %(ex_details)s\" %"},{"line_number":2079,"context_line":"                                        {\u0027prefix\u0027: storage.XIV_LOG_PREFIX,"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_da71a10d","line":2076,"range":{"start_line":2076,"start_character":76,"end_line":2076,"end_character":77},"in_reply_to":"7a3c09a3_2b6271d8","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2183,"context_line":"        try:"},{"line_number":2184,"context_line":"            domain \u003d self._call_xiv_xcli("},{"line_number":2185,"context_line":"                \"pool_list\", pool\u003dpool_name).as_list[0].get(\u0027domain\u0027)"},{"line_number":2186,"context_line":"            LOG.debug(\"Pool\u0027s domain: %s\" % domain)"},{"line_number":2187,"context_line":"        except AttributeError:"},{"line_number":2188,"context_line":"            pass"},{"line_number":2189,"context_line":"        return domain"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_eb9949c5","line":2186,"range":{"start_line":2186,"start_character":41,"end_line":2186,"end_character":43},"updated":"2017-01-17 22:23:01.000000000","message":"/%/,/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2183,"context_line":"        try:"},{"line_number":2184,"context_line":"            domain \u003d self._call_xiv_xcli("},{"line_number":2185,"context_line":"                \"pool_list\", pool\u003dpool_name).as_list[0].get(\u0027domain\u0027)"},{"line_number":2186,"context_line":"            LOG.debug(\"Pool\u0027s domain: %s\" % domain)"},{"line_number":2187,"context_line":"        except AttributeError:"},{"line_number":2188,"context_line":"            pass"},{"line_number":2189,"context_line":"        return domain"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9ad9d9f5","line":2186,"range":{"start_line":2186,"start_character":41,"end_line":2186,"end_character":43},"in_reply_to":"7a3c09a3_eb9949c5","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"        else:"},{"line_number":2206,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector,"},{"line_number":2207,"context_line":"                                                   host[0].get(\u0027id\u0027))"},{"line_number":2208,"context_line":"            LOG.debug(\"Generating hostname for connector %(conn)s\" %"},{"line_number":2209,"context_line":"                      {\u0027conn\u0027: connector})"},{"line_number":2210,"context_line":"            generated_hostname \u003d storage.get_host_or_create_from_iqn("},{"line_number":2211,"context_line":"                connector, connection\u003dconnection_type)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6bec792a","line":2208,"range":{"start_line":2208,"start_character":66,"end_line":2208,"end_character":68},"updated":"2017-01-17 22:23:01.000000000","message":"/%/,/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"        else:"},{"line_number":2206,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector,"},{"line_number":2207,"context_line":"                                                   host[0].get(\u0027id\u0027))"},{"line_number":2208,"context_line":"            LOG.debug(\"Generating hostname for connector %(conn)s\" %"},{"line_number":2209,"context_line":"                      {\u0027conn\u0027: connector})"},{"line_number":2210,"context_line":"            generated_hostname \u003d storage.get_host_or_create_from_iqn("},{"line_number":2211,"context_line":"                connector, connection\u003dconnection_type)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_5ab85175","line":2208,"range":{"start_line":2208,"start_character":66,"end_line":2208,"end_character":68},"in_reply_to":"7a3c09a3_6bec792a","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2220,"context_line":"                host \u003d generated_host[0]"},{"line_number":2221,"context_line":"            host_bunch \u003d self._get_bunch_from_host("},{"line_number":2222,"context_line":"                connector, host.get(\u0027id\u0027), host_name\u003dgenerated_hostname)"},{"line_number":2223,"context_line":"        LOG.debug(\"The host_bunch : %s\" % host_bunch)"},{"line_number":2224,"context_line":"        return host_bunch"},{"line_number":2225,"context_line":""},{"line_number":2226,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_cbf56ded","line":2223,"range":{"start_line":2223,"start_character":39,"end_line":2223,"end_character":41},"updated":"2017-01-17 22:23:01.000000000","message":"/%/,/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2220,"context_line":"                host \u003d generated_host[0]"},{"line_number":2221,"context_line":"            host_bunch \u003d self._get_bunch_from_host("},{"line_number":2222,"context_line":"                connector, host.get(\u0027id\u0027), host_name\u003dgenerated_hostname)"},{"line_number":2223,"context_line":"        LOG.debug(\"The host_bunch : %s\" % host_bunch)"},{"line_number":2224,"context_line":"        return host_bunch"},{"line_number":2225,"context_line":""},{"line_number":2226,"context_line":"    @proxy._trace_time"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_7a28ad9a","line":2223,"range":{"start_line":2223,"start_character":39,"end_line":2223,"end_character":41},"in_reply_to":"7a3c09a3_cbf56ded","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2242,"context_line":"                                             self._call_xiv_xcli("},{"line_number":2243,"context_line":"                                                 \"fc_port_list\","},{"line_number":2244,"context_line":"                                                 fcport\u003dcomponent)]"},{"line_number":2245,"context_line":"                LOG.debug(\"got %s fc targets for wwpn %s\" % ("},{"line_number":2246,"context_line":"                    wwpn_fc_target_lists, wwpn))"},{"line_number":2247,"context_line":"                if len(wwpn_fc_target_lists) \u003e 0:"},{"line_number":2248,"context_line":"                    connected_wwpns +\u003d [wwpn]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_6bd39960","line":2245,"range":{"start_line":2245,"start_character":58,"end_line":2245,"end_character":61},"updated":"2017-01-17 22:23:01.000000000","message":"/%/,/ and get rid of the () around the format values.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2242,"context_line":"                                             self._call_xiv_xcli("},{"line_number":2243,"context_line":"                                                 \"fc_port_list\","},{"line_number":2244,"context_line":"                                                 fcport\u003dcomponent)]"},{"line_number":2245,"context_line":"                LOG.debug(\"got %s fc targets for wwpn %s\" % ("},{"line_number":2246,"context_line":"                    wwpn_fc_target_lists, wwpn))"},{"line_number":2247,"context_line":"                if len(wwpn_fc_target_lists) \u003e 0:"},{"line_number":2248,"context_line":"                    connected_wwpns +\u003d [wwpn]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_bd33eff4","line":2245,"range":{"start_line":2245,"start_character":58,"end_line":2245,"end_character":61},"in_reply_to":"7a3c09a3_6bd39960","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"                if len(wwpn_fc_target_lists) \u003e 0:"},{"line_number":2248,"context_line":"                    connected_wwpns +\u003d [wwpn]"},{"line_number":2249,"context_line":"                    fc_targets +\u003d wwpn_fc_target_lists"},{"line_number":2250,"context_line":"                LOG.debug(\"adding fc port %s\" % wwpn)"},{"line_number":2251,"context_line":"                self._call_xiv_xcli("},{"line_number":2252,"context_line":"                    \"host_add_port\", host\u003dhost_bunch.get(\u0027name\u0027),"},{"line_number":2253,"context_line":"                    fcaddress\u003dwwpn)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_abc901ae","line":2250,"range":{"start_line":2250,"start_character":46,"end_line":2250,"end_character":47},"updated":"2017-01-17 22:23:01.000000000","message":"/%/,/","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"                if len(wwpn_fc_target_lists) \u003e 0:"},{"line_number":2248,"context_line":"                    connected_wwpns +\u003d [wwpn]"},{"line_number":2249,"context_line":"                    fc_targets +\u003d wwpn_fc_target_lists"},{"line_number":2250,"context_line":"                LOG.debug(\"adding fc port %s\" % wwpn)"},{"line_number":2251,"context_line":"                self._call_xiv_xcli("},{"line_number":2252,"context_line":"                    \"host_add_port\", host\u003dhost_bunch.get(\u0027name\u0027),"},{"line_number":2253,"context_line":"                    fcaddress\u003dwwpn)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_9d3f13b3","line":2250,"range":{"start_line":2250,"start_character":46,"end_line":2250,"end_character":47},"in_reply_to":"7a3c09a3_abc901ae","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7cd18dfb95a41245700074daf3ac8643cbeb42c7","unresolved":false,"context_lines":[{"line_number":2270,"context_line":"                \"host_add_port\", host\u003dhost_bunch.get(\u0027name\u0027),"},{"line_number":2271,"context_line":"                iscsi_name\u003dhost_bunch.get(\u0027initiator\u0027))"},{"line_number":2272,"context_line":"        else:"},{"line_number":2273,"context_line":"            msg \u003d _LE(\"No iSCSI initiator found!\")"},{"line_number":2274,"context_line":"            LOG.error(msg)"},{"line_number":2275,"context_line":"            raise self._get_exception()(msg)"},{"line_number":2276,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_4bb97d14","line":2273,"range":{"start_line":2273,"start_character":18,"end_line":2273,"end_character":21},"updated":"2017-01-17 22:23:01.000000000","message":"_() since it\u0027s also used in the exception.","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ee81e2b281a830d1ae3cc2eb4a3a8da369d35289","unresolved":false,"context_lines":[{"line_number":2270,"context_line":"                \"host_add_port\", host\u003dhost_bunch.get(\u0027name\u0027),"},{"line_number":2271,"context_line":"                iscsi_name\u003dhost_bunch.get(\u0027initiator\u0027))"},{"line_number":2272,"context_line":"        else:"},{"line_number":2273,"context_line":"            msg \u003d _LE(\"No iSCSI initiator found!\")"},{"line_number":2274,"context_line":"            LOG.error(msg)"},{"line_number":2275,"context_line":"            raise self._get_exception()(msg)"},{"line_number":2276,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7a3c09a3_3d6d3fcc","line":2273,"range":{"start_line":2273,"start_character":18,"end_line":2273,"end_character":21},"in_reply_to":"7a3c09a3_4bb97d14","updated":"2017-01-18 16:58:38.000000000","message":"Done","commit_id":"175edce87e083f789350a3b0670069583995fe81"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                          \"class: %(details)s\") % {\u0027details\u0027: details})"},{"line_number":305,"context_line":"            LOG.error(msg_data)"},{"line_number":306,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":307,"context_line":"                data\u003d(msg_data))"},{"line_number":308,"context_line":"        return True"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _qos_add_vol(self, volume, perf_class_name):"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_7d01e769","line":307,"range":{"start_line":307,"start_character":21,"end_line":307,"end_character":31},"updated":"2017-01-21 04:23:43.000000000","message":"No need for this inner ()","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                          \"class: %(details)s\") % {\u0027details\u0027: details})"},{"line_number":305,"context_line":"            LOG.error(msg_data)"},{"line_number":306,"context_line":"            raise self.meta[\u0027exception\u0027].VolumeBackendAPIException("},{"line_number":307,"context_line":"                data\u003d(msg_data))"},{"line_number":308,"context_line":"        return True"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def _qos_add_vol(self, volume, perf_class_name):"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_c6df6367","line":307,"range":{"start_line":307,"start_character":21,"end_line":307,"end_character":31},"in_reply_to":"5a3905b3_7d01e769","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                       {\u0027vol\u0027: volume[\u0027name\u0027], \u0027err\u0027: details})"},{"line_number":511,"context_line":"                LOG.error(msg)"},{"line_number":512,"context_line":"                if perf_class_name:"},{"line_number":513,"context_line":"                    # TBD - remove from QoS"},{"line_number":514,"context_line":"                    pass"},{"line_number":515,"context_line":"                if cg:"},{"line_number":516,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_9d4133ac","line":513,"range":{"start_line":513,"start_character":20,"end_line":513,"end_character":43},"updated":"2017-01-21 04:23:43.000000000","message":"Have you decided about this?","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                       {\u0027vol\u0027: volume[\u0027name\u0027], \u0027err\u0027: details})"},{"line_number":511,"context_line":"                LOG.error(msg)"},{"line_number":512,"context_line":"                if perf_class_name:"},{"line_number":513,"context_line":"                    # TBD - remove from QoS"},{"line_number":514,"context_line":"                    pass"},{"line_number":515,"context_line":"                if cg:"},{"line_number":516,"context_line":"                    self._silent_delete_volume_from_cg(volume, cg)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_a6eb3777","line":513,"range":{"start_line":513,"start_character":20,"end_line":513,"end_character":43},"in_reply_to":"5a3905b3_9d4133ac","updated":"2017-01-21 20:58:47.000000000","message":"Yes. Do nothing. Thanks!","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            return false_ret"},{"line_number":985,"context_line":"        info \u003d host[\u0027capabilities\u0027][\u0027location_info\u0027]"},{"line_number":986,"context_line":"        try:"},{"line_number":987,"context_line":"            (dest, dest_host, dest_pool) \u003d info.split(\u0027:\u0027)"},{"line_number":988,"context_line":"        except ValueError:"},{"line_number":989,"context_line":"            return false_ret"},{"line_number":990,"context_line":"        volume_host \u003d volume.host.split(\u0027_\u0027)[1]"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_5d0a6b7a","line":987,"range":{"start_line":987,"start_character":12,"end_line":987,"end_character":41},"updated":"2017-01-21 04:23:43.000000000","message":"() is  not needed.","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":984,"context_line":"            return false_ret"},{"line_number":985,"context_line":"        info \u003d host[\u0027capabilities\u0027][\u0027location_info\u0027]"},{"line_number":986,"context_line":"        try:"},{"line_number":987,"context_line":"            (dest, dest_host, dest_pool) \u003d info.split(\u0027:\u0027)"},{"line_number":988,"context_line":"        except ValueError:"},{"line_number":989,"context_line":"            return false_ret"},{"line_number":990,"context_line":"        volume_host \u003d volume.host.split(\u0027_\u0027)[1]"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_26f82749","line":987,"range":{"start_line":987,"start_character":12,"end_line":987,"end_character":41},"in_reply_to":"5a3905b3_5d0a6b7a","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":988,"context_line":"        except ValueError:"},{"line_number":989,"context_line":"            return false_ret"},{"line_number":990,"context_line":"        volume_host \u003d volume.host.split(\u0027_\u0027)[1]"},{"line_number":991,"context_line":"        if (dest !\u003d strings.XIV_BACKEND_PREFIX or dest_host !\u003d volume_host):"},{"line_number":992,"context_line":"            return false_ret"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"        if volume.attach_status \u003d\u003d \u0027attached\u0027:"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_9d2853e4","line":991,"range":{"start_line":991,"start_character":11,"end_line":991,"end_character":12},"updated":"2017-01-21 04:23:43.000000000","message":"() not needed.","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":988,"context_line":"        except ValueError:"},{"line_number":989,"context_line":"            return false_ret"},{"line_number":990,"context_line":"        volume_host \u003d volume.host.split(\u0027_\u0027)[1]"},{"line_number":991,"context_line":"        if (dest !\u003d strings.XIV_BACKEND_PREFIX or dest_host !\u003d volume_host):"},{"line_number":992,"context_line":"            return false_ret"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"        if volume.attach_status \u003d\u003d \u0027attached\u0027:"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_a6a25749","line":991,"range":{"start_line":991,"start_character":11,"end_line":991,"end_character":12},"in_reply_to":"5a3905b3_9d2853e4","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        if len(volumes) !\u003d 1:"},{"line_number":1104,"context_line":"            error \u003d (_(\"Fatal: volume %s is not available on storage\"),"},{"line_number":1105,"context_line":"                     {\u0027volume\u0027: existing_volume})"},{"line_number":1106,"context_line":"            LOG.error(error)"},{"line_number":1107,"context_line":"            raise self._get_exception()(error)"},{"line_number":1108,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_7d8647dc","line":1105,"updated":"2017-01-21 04:23:43.000000000","message":"error \u003d (_(\"Fatal: volume %(volume)s is not available on storage\") %\n                     {\u0027volume\u0027: existing_volume})","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":1102,"context_line":""},{"line_number":1103,"context_line":"        if len(volumes) !\u003d 1:"},{"line_number":1104,"context_line":"            error \u003d (_(\"Fatal: volume %s is not available on storage\"),"},{"line_number":1105,"context_line":"                     {\u0027volume\u0027: existing_volume})"},{"line_number":1106,"context_line":"            LOG.error(error)"},{"line_number":1107,"context_line":"            raise self._get_exception()(error)"},{"line_number":1108,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_268f47cd","line":1105,"in_reply_to":"5a3905b3_7d8647dc","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":1737,"context_line":"                        })"},{"line_number":1738,"context_line":"            except Exception as e:"},{"line_number":1739,"context_line":"                details \u003d self._get_code_and_status_or_message(e)"},{"line_number":1740,"context_line":"                msg \u003d (CREATE_VOLUME_BASE_ERROR, {\u0027details\u0027: details})"},{"line_number":1741,"context_line":"                LOG.error(msg)"},{"line_number":1742,"context_line":"                # cleanup and then raise exception"},{"line_number":1743,"context_line":"                self._silent_cleanup_consistencygroup_from_src("}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_bdda6fe6","line":1740,"range":{"start_line":1740,"start_character":47,"end_line":1740,"end_character":48},"updated":"2017-01-21 04:23:43.000000000","message":"Should be %","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":1737,"context_line":"                        })"},{"line_number":1738,"context_line":"            except Exception as e:"},{"line_number":1739,"context_line":"                details \u003d self._get_code_and_status_or_message(e)"},{"line_number":1740,"context_line":"                msg \u003d (CREATE_VOLUME_BASE_ERROR, {\u0027details\u0027: details})"},{"line_number":1741,"context_line":"                LOG.error(msg)"},{"line_number":1742,"context_line":"                # cleanup and then raise exception"},{"line_number":1743,"context_line":"                self._silent_cleanup_consistencygroup_from_src("}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_66c30fee","line":1740,"range":{"start_line":1740,"start_character":47,"end_line":1740,"end_character":48},"in_reply_to":"5a3905b3_bdda6fe6","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"        try:"},{"line_number":2008,"context_line":"            self._call_xiv_xcli("},{"line_number":2009,"context_line":"                \"snap_group_delete\", snap_group\u003dgroupname).as_list"},{"line_number":2010,"context_line":"        except errors.CgDoesNotExistError as e:"},{"line_number":2011,"context_line":"            error \u003d (_(\"consistency group %s not found on backend\"), cgname)"},{"line_number":2012,"context_line":"            LOG.error(error)"},{"line_number":2013,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_9d04d34a","line":2010,"range":{"start_line":2010,"start_character":42,"end_line":2010,"end_character":46},"updated":"2017-01-21 04:23:43.000000000","message":"Not needed because it is not used.","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"        try:"},{"line_number":2008,"context_line":"            self._call_xiv_xcli("},{"line_number":2009,"context_line":"                \"snap_group_delete\", snap_group\u003dgroupname).as_list"},{"line_number":2010,"context_line":"        except errors.CgDoesNotExistError as e:"},{"line_number":2011,"context_line":"            error \u003d (_(\"consistency group %s not found on backend\"), cgname)"},{"line_number":2012,"context_line":"            LOG.error(error)"},{"line_number":2013,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_0975fc30","line":2010,"range":{"start_line":2010,"start_character":42,"end_line":2010,"end_character":46},"in_reply_to":"5a3905b3_9d04d34a","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":2011,"context_line":"            error \u003d (_(\"consistency group %s not found on backend\"), cgname)"},{"line_number":2012,"context_line":"            LOG.error(error)"},{"line_number":2013,"context_line":"            raise self._get_exception()(error)"},{"line_number":2014,"context_line":"        except errors.PoolSnapshotLimitReachedError as e:"},{"line_number":2015,"context_line":"            error \u003d _(\"Reached Maximum size allocated for snapshots\")"},{"line_number":2016,"context_line":"            LOG.error(error)"},{"line_number":2017,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_ddfadb42","line":2014,"range":{"start_line":2014,"start_character":51,"end_line":2014,"end_character":56},"updated":"2017-01-21 04:23:43.000000000","message":"same","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":2011,"context_line":"            error \u003d (_(\"consistency group %s not found on backend\"), cgname)"},{"line_number":2012,"context_line":"            LOG.error(error)"},{"line_number":2013,"context_line":"            raise self._get_exception()(error)"},{"line_number":2014,"context_line":"        except errors.PoolSnapshotLimitReachedError as e:"},{"line_number":2015,"context_line":"            error \u003d _(\"Reached Maximum size allocated for snapshots\")"},{"line_number":2016,"context_line":"            LOG.error(error)"},{"line_number":2017,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_2972b849","line":2014,"range":{"start_line":2014,"start_character":51,"end_line":2014,"end_character":56},"in_reply_to":"5a3905b3_ddfadb42","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"            error \u003d _(\"Reached Maximum size allocated for snapshots\")"},{"line_number":2016,"context_line":"            LOG.error(error)"},{"line_number":2017,"context_line":"            raise self._get_exception()(error)"},{"line_number":2018,"context_line":"        except errors.CgEmptyError as e:"},{"line_number":2019,"context_line":"            error \u003d _(\"Consistency group %s is empty\") % cgname"},{"line_number":2020,"context_line":"            LOG.error(error)"},{"line_number":2021,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_fdf79756","line":2018,"range":{"start_line":2018,"start_character":34,"end_line":2018,"end_character":39},"updated":"2017-01-21 04:23:43.000000000","message":"same","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"            error \u003d _(\"Reached Maximum size allocated for snapshots\")"},{"line_number":2016,"context_line":"            LOG.error(error)"},{"line_number":2017,"context_line":"            raise self._get_exception()(error)"},{"line_number":2018,"context_line":"        except errors.CgEmptyError as e:"},{"line_number":2019,"context_line":"            error \u003d _(\"Consistency group %s is empty\") % cgname"},{"line_number":2020,"context_line":"            LOG.error(error)"},{"line_number":2021,"context_line":"            raise self._get_exception()(error)"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_4991c446","line":2018,"range":{"start_line":2018,"start_character":34,"end_line":2018,"end_character":39},"in_reply_to":"5a3905b3_fdf79756","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector)"},{"line_number":2084,"context_line":"        except Exception as e:"},{"line_number":2085,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2086,"context_line":"            ex_details \u003d (_(\"Invalid connector information: \u0027%(details)s.\u0027\") %"},{"line_number":2087,"context_line":"                          {\u0027details\u0027: details})"},{"line_number":2088,"context_line":"            raise self._get_exception()(\"%(prefix)s %(ex_details)s\" %"},{"line_number":2089,"context_line":"                                        {\u0027prefix\u0027: storage.XIV_LOG_PREFIX,"},{"line_number":2090,"context_line":"                                         \u0027ex_details\u0027: ex_details})"},{"line_number":2091,"context_line":"        host \u003d []"},{"line_number":2092,"context_line":"        chap \u003d None"},{"line_number":2093,"context_line":"        all_hosts \u003d self._call_xiv_xcli(\"host_list\").as_list"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_bd88afc6","line":2090,"range":{"start_line":2086,"start_character":0,"end_line":2090,"end_character":67},"updated":"2017-01-21 04:23:43.000000000","message":"_() should be inside the exception message so the entire message will be translated.\n\nex_details \u003d (\"Invalid connector information: \u0027%(details)s.\u0027\" %\n                          {\u0027details\u0027: details})\n            raise self._get_exception()(_(\"%(prefix)s %(ex_details)s\") %\n                                        {\u0027prefix\u0027: storage.XIV_LOG_PREFIX,\n                                         \u0027ex_details\u0027: ex_details})","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":2083,"context_line":"            host_bunch \u003d self._get_bunch_from_host(connector)"},{"line_number":2084,"context_line":"        except Exception as e:"},{"line_number":2085,"context_line":"            details \u003d self._get_code_and_status_or_message(e)"},{"line_number":2086,"context_line":"            ex_details \u003d (_(\"Invalid connector information: \u0027%(details)s.\u0027\") %"},{"line_number":2087,"context_line":"                          {\u0027details\u0027: details})"},{"line_number":2088,"context_line":"            raise self._get_exception()(\"%(prefix)s %(ex_details)s\" %"},{"line_number":2089,"context_line":"                                        {\u0027prefix\u0027: storage.XIV_LOG_PREFIX,"},{"line_number":2090,"context_line":"                                         \u0027ex_details\u0027: ex_details})"},{"line_number":2091,"context_line":"        host \u003d []"},{"line_number":2092,"context_line":"        chap \u003d None"},{"line_number":2093,"context_line":"        all_hosts \u003d self._call_xiv_xcli(\"host_list\").as_list"}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_690be08e","line":2090,"range":{"start_line":2086,"start_character":0,"end_line":2090,"end_character":67},"in_reply_to":"5a3905b3_bd88afc6","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6ab809037c7f23d21b8850ad709c7e86d18ed60","unresolved":false,"context_lines":[{"line_number":2435,"context_line":"        \"\"\"Wrapper around XCLI to call remote storage.\"\"\""},{"line_number":2436,"context_line":"        remote_id \u003d self._get_secondary_backend_id()"},{"line_number":2437,"context_line":"        if not remote_id:"},{"line_number":2438,"context_line":"            raise Exception"},{"line_number":2439,"context_line":"        self.ibm_storage_remote_cli \u003d self._get_xcli("},{"line_number":2440,"context_line":"            self.ibm_storage_remote_cli, remote_id)"},{"line_number":2441,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_bd76efd4","line":2438,"range":{"start_line":2438,"start_character":18,"end_line":2438,"end_character":27},"updated":"2017-01-21 04:23:43.000000000","message":"Please use a more specific exception","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"b723579fca5c0f67733059a1c819049aff43a437","unresolved":false,"context_lines":[{"line_number":2435,"context_line":"        \"\"\"Wrapper around XCLI to call remote storage.\"\"\""},{"line_number":2436,"context_line":"        remote_id \u003d self._get_secondary_backend_id()"},{"line_number":2437,"context_line":"        if not remote_id:"},{"line_number":2438,"context_line":"            raise Exception"},{"line_number":2439,"context_line":"        self.ibm_storage_remote_cli \u003d self._get_xcli("},{"line_number":2440,"context_line":"            self.ibm_storage_remote_cli, remote_id)"},{"line_number":2441,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"5a3905b3_693840f0","line":2438,"range":{"start_line":2438,"start_character":18,"end_line":2438,"end_character":27},"in_reply_to":"5a3905b3_bd76efd4","updated":"2017-01-21 20:58:47.000000000","message":"Done","commit_id":"0b1a79682d4926ac94f4967fc6a9e13fa27bb9cf"}],"releasenotes/notes/bp-open-src-ibm-storage-driver-d17808e52aa4eacb.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6c32dabe823dfc563980eda0183afcdc02ae2313","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    Previous installations of IBM Storage must be un-installed first and the"},{"line_number":11,"context_line":"    new driver should be installed on top. In addition the cinder.conf values"},{"line_number":12,"context_line":"    should be updated to reflect the new paths. For example the proxy setting"},{"line_number":13,"context_line":"    of \u0027storage.proxy.IBMStorageProxy\u0027 should be updated to "},{"line_number":14,"context_line":"    \u0027cinder.volume.drivers.ibm.ibm_storage.proxy.IBMStorageProxy\u0027."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"ba5201f7_ef33f611","line":13,"updated":"2017-01-07 22:09:07.000000000","message":"Remove trailing white space.","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"c70b939ab875859a7eabfeb7052fcc247dfed1fc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    Previous installations of IBM Storage must be un-installed first and the"},{"line_number":11,"context_line":"    new driver should be installed on top. In addition the cinder.conf values"},{"line_number":12,"context_line":"    should be updated to reflect the new paths. For example the proxy setting"},{"line_number":13,"context_line":"    of \u0027storage.proxy.IBMStorageProxy\u0027 should be updated to "},{"line_number":14,"context_line":"    \u0027cinder.volume.drivers.ibm.ibm_storage.proxy.IBMStorageProxy\u0027."}],"source_content_type":"text/x-yaml","patch_set":33,"id":"ba5201f7_7d805c47","line":13,"in_reply_to":"ba5201f7_ef33f611","updated":"2017-01-10 06:41:51.000000000","message":"Done","commit_id":"ac4076401710ddabdae04137f75f1d5bb9ca2bb2"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c22e9ea2896afda9c1eed0452ddbda00c5169cfa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The IBM_Storage driver has been open sourced. This means that there is no"},{"line_number":5,"context_line":"    more need to download the package from the IBM site. The only requirement"},{"line_number":6,"context_line":"    remaining is to install bunch and pyxcli, which are available through pypi:"},{"line_number":7,"context_line":"    \u0027sudo pip install bunch pyxcli\u0027"},{"line_number":8,"context_line":"upgrade:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Previous installations of IBM Storage must be un-installed first and the"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"9a57fde8_6e20b39c","line":7,"updated":"2017-01-12 18:44:16.000000000","message":"why do we still need bunch here?  Didn\u0027t we remove it from the code here in Cinder?   If pyxcli needs it, then it should have bunch in it\u0027s requirements list itself.  When pyxcli is installed via pip, it should automatically pull bunch.","commit_id":"caa61b87ad5a3744518c1a19c895beba552875d1"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"63ec83fea698a60c4c1f02f888e7a7ecef463716","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The IBM_Storage driver has been open sourced. This means that there is no"},{"line_number":5,"context_line":"    more need to download the package from the IBM site. The only requirement"},{"line_number":6,"context_line":"    remaining is to install bunch and pyxcli, which are available through pypi:"},{"line_number":7,"context_line":"    \u0027sudo pip install bunch pyxcli\u0027"},{"line_number":8,"context_line":"upgrade:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Previous installations of IBM Storage must be un-installed first and the"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"7a3c09a3_4e34f3dd","line":7,"in_reply_to":"9a57fde8_6e20b39c","updated":"2017-01-12 20:42:28.000000000","message":"Done","commit_id":"caa61b87ad5a3744518c1a19c895beba552875d1"}],"requirements.txt":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4fe6e6bebd0bea76777ba46ea38048f8ae4b063a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"tooz\u003e\u003d1.28.0 # Apache-2.0"},{"line_number":63,"context_line":"google-api-python-client\u003e\u003d1.4.2 # Apache-2.0"},{"line_number":64,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":65,"context_line":"bunch # MIT"}],"source_content_type":"text/plain","patch_set":1,"id":"3a71b18c_8c825bff","line":65,"updated":"2016-12-01 18:08:32.000000000","message":"I could be wrong, but I think anything in this file must also first exist in the openstack requirements repo as well.\n\nhttps://github.com/openstack/requirements","commit_id":"0d1f99c2e80f0f6b74c045872a41df6fe947dcd4"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"491addf1c90e1856ce7671544803f23629d70259","unresolved":false,"context_lines":[{"line_number":62,"context_line":"tooz\u003e\u003d1.28.0 # Apache-2.0"},{"line_number":63,"context_line":"google-api-python-client\u003e\u003d1.4.2 # Apache-2.0"},{"line_number":64,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":65,"context_line":"bunch # MIT"}],"source_content_type":"text/plain","patch_set":1,"id":"3a71b18c_c8988d1e","line":65,"in_reply_to":"3a71b18c_8c825bff","updated":"2016-12-02 14:27:10.000000000","message":"Thanks! I\u0027ll look into it.","commit_id":"0d1f99c2e80f0f6b74c045872a41df6fe947dcd4"}]}
