)]}'
{"cinder/tests/unit/volume/drivers/test_nimble.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"FAKE_NEGATIVE_NETCONFIG_RESPONSE \u003d exception.\\"},{"line_number":57,"context_line":"    VolumeDriverException(\"Session expired\")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"FAKE_CREATE_VOLUME_POSITIVE_RESPONSE \u003d \\"},{"line_number":60,"context_line":"    {\u0027clone\u0027: False,"},{"line_number":61,"context_line":"     \u0027name\u0027: \"testvolume\"}"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5fcb28a5","line":59,"range":{"start_line":59,"start_character":39,"end_line":59,"end_character":40},"updated":"2016-12-14 18:52:00.000000000","message":"Please switch back to get rid of the use of \\","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"FAKE_NEGATIVE_NETCONFIG_RESPONSE \u003d exception.\\"},{"line_number":57,"context_line":"    VolumeDriverException(\"Session expired\")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"FAKE_CREATE_VOLUME_POSITIVE_RESPONSE \u003d \\"},{"line_number":60,"context_line":"    {\u0027clone\u0027: False,"},{"line_number":61,"context_line":"     \u0027name\u0027: \"testvolume\"}"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_785b95f6","line":59,"range":{"start_line":59,"start_character":39,"end_line":59,"end_character":40},"in_reply_to":"1a6eadb0_5fcb28a5","updated":"2016-12-15 01:55:39.000000000","message":"Done. Also modified all the occurences in this file","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c8f110c7f3b3bd203d3ec78c76d5e192c037d7a3","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        \u0027nimble\u0027, \u0027nimble_pass\u0027, \u002710.18.108.55\u0027, \u0027default\u0027, \u0027*\u0027))"},{"line_number":500,"context_line":"    @mock.patch(NIMBLE_ISCSI_DRIVER + \".is_volume_backup_clone\", mock.Mock("},{"line_number":501,"context_line":"        return_value \u003d [\u0027\u0027, \u0027\u0027]))"},{"line_number":502,"context_line":"    def test_delete_volume(self):"},{"line_number":503,"context_line":"        self.mock_client_service.online_vol.return_value \u003d ("},{"line_number":504,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":505,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_acf02eca","line":502,"updated":"2016-12-16 18:08:27.000000000","message":"With the addition of the sleep() calls you need to mock those out in the unit tests so there aren\u0027t unnecessary delays.","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"86cce16d04e8bd68f89bc9f508097bc5fdc3096a","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        \u0027nimble\u0027, \u0027nimble_pass\u0027, \u002710.18.108.55\u0027, \u0027default\u0027, \u0027*\u0027))"},{"line_number":500,"context_line":"    @mock.patch(NIMBLE_ISCSI_DRIVER + \".is_volume_backup_clone\", mock.Mock("},{"line_number":501,"context_line":"        return_value \u003d [\u0027\u0027, \u0027\u0027]))"},{"line_number":502,"context_line":"    def test_delete_volume(self):"},{"line_number":503,"context_line":"        self.mock_client_service.online_vol.return_value \u003d ("},{"line_number":504,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":505,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_a74a0953","line":502,"in_reply_to":"1a6eadb0_acf02eca","updated":"2016-12-16 18:36:07.000000000","message":"updated the code to mock for sleep in test_delete_volume","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":505,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("},{"line_number":506,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":507,"context_line":"        self.mock_sleep \u003d self.mock_object(nimble.eventlet, \u0027sleep\u0027)"},{"line_number":508,"context_line":"        self.driver.delete_volume({\u0027name\u0027: \u0027testvolume\u0027})"},{"line_number":509,"context_line":"        expected_calls \u003d [mock.call.online_vol("},{"line_number":510,"context_line":"            \u0027testvolume\u0027, False),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_2146e47a","line":507,"updated":"2016-12-16 20:32:03.000000000","message":"I have observed some weird hanging behavior in some mock_sleep tests.  I think it is better not to mock the sleep but make the wait time adjustable.  So in your test you can do eventlet.sleep(0).","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dd3276b618abe3ca895fb5b90c4c1bcc1ba18987","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":505,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("},{"line_number":506,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":507,"context_line":"        self.mock_sleep \u003d self.mock_object(nimble.eventlet, \u0027sleep\u0027)"},{"line_number":508,"context_line":"        self.driver.delete_volume({\u0027name\u0027: \u0027testvolume\u0027})"},{"line_number":509,"context_line":"        expected_calls \u003d [mock.call.online_vol("},{"line_number":510,"context_line":"            \u0027testvolume\u0027, False),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_44fcceb7","line":507,"in_reply_to":"1a6eadb0_2146e47a","updated":"2016-12-16 20:50:10.000000000","message":"ohh ok. Will update it","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":30,"context_line":"NIMBLE_RANDOM \u003d \u0027cinder.volume.drivers.nimble.random\u0027"},{"line_number":31,"context_line":"NIMBLE_ISCSI_DRIVER \u003d \u0027cinder.volume.drivers.nimble.NimbleISCSIDriver\u0027"},{"line_number":32,"context_line":"NIMBLE_FC_DRIVER \u003d \u0027cinder.volume.drivers.nimble.NimbleFCDriver\u0027"},{"line_number":33,"context_line":"DRIVER_VERSION \u003d \u00274.0.0\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"FAKE_POSITIVE_LOGIN_RESPONSE_1 \u003d \u00272c20aad78a220ed1dae21dcd6f9446f5\u0027"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_f002d908","line":33,"updated":"2016-12-18 23:41:13.000000000","message":"nimble.DEFAULT_SLEEP \u003d 0","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"NIMBLE_RANDOM \u003d \u0027cinder.volume.drivers.nimble.random\u0027"},{"line_number":31,"context_line":"NIMBLE_ISCSI_DRIVER \u003d \u0027cinder.volume.drivers.nimble.NimbleISCSIDriver\u0027"},{"line_number":32,"context_line":"NIMBLE_FC_DRIVER \u003d \u0027cinder.volume.drivers.nimble.NimbleFCDriver\u0027"},{"line_number":33,"context_line":"DRIVER_VERSION \u003d \u00274.0.0\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"FAKE_POSITIVE_LOGIN_RESPONSE_1 \u003d \u00272c20aad78a220ed1dae21dcd6f9446f5\u0027"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_6e7b452a","line":33,"in_reply_to":"1a6eadb0_f002d908","updated":"2016-12-19 06:48:08.000000000","message":"Got it. Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":505,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("},{"line_number":506,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":507,"context_line":"        nimble.eventlet.sleep(0)"},{"line_number":508,"context_line":"        self.driver.delete_volume({\u0027name\u0027: \u0027testvolume\u0027})"},{"line_number":509,"context_line":"        expected_calls \u003d [mock.call.online_vol("},{"line_number":510,"context_line":"            \u0027testvolume\u0027, False),"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_10083528","line":507,"updated":"2016-12-18 23:41:13.000000000","message":"Remove the above line.","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eaee692f597ce58d3415311e6b63ebca6edb110b","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"    def test_terminate_connection_positive(self):"},{"line_number":1040,"context_line":"        self.mock_client_service.get_initiator_grp_list.return_value \u003d ("},{"line_number":1041,"context_line":"            FAKE_IGROUP_LIST_RESPONSE)"},{"line_number":1042,"context_line":"        nimble.eventlet.sleep(0)"},{"line_number":1043,"context_line":"        self.driver.terminate_connection("},{"line_number":1044,"context_line":"            {\u0027name\u0027: \u0027test-volume\u0027,"},{"line_number":1045,"context_line":"             \u0027provider_location\u0027: \u002712 13\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_703de9ba","line":1042,"updated":"2016-12-18 23:42:01.000000000","message":"Remove the above line.","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"    def test_terminate_connection_positive(self):"},{"line_number":1040,"context_line":"        self.mock_client_service.get_initiator_grp_list.return_value \u003d ("},{"line_number":1041,"context_line":"            FAKE_IGROUP_LIST_RESPONSE)"},{"line_number":1042,"context_line":"        nimble.eventlet.sleep(0)"},{"line_number":1043,"context_line":"        self.driver.terminate_connection("},{"line_number":1044,"context_line":"            {\u0027name\u0027: \u0027test-volume\u0027,"},{"line_number":1045,"context_line":"             \u0027provider_location\u0027: \u002712 13\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_ee02f571","line":1042,"in_reply_to":"1a6eadb0_703de9ba","updated":"2016-12-19 06:48:08.000000000","message":"Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a9dab11ddd76d7b35207e8055567e124b112225e","unresolved":false,"context_lines":[{"line_number":505,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":506,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("},{"line_number":507,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":508,"context_line":"        nimble.eventlet.sleep(0)"},{"line_number":509,"context_line":"        self.driver.delete_volume({\u0027name\u0027: \u0027testvolume\u0027})"},{"line_number":510,"context_line":"        expected_calls \u003d [mock.call.online_vol("},{"line_number":511,"context_line":"            \u0027testvolume\u0027, False),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_a3be34d2","line":508,"updated":"2016-12-19 18:34:39.000000000","message":"Please remove this line.","commit_id":"2008c7ac2b6e3a5adab141abcc14d08d98479e13"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"758f2972602e40e02297da943494cf7e314b481d","unresolved":false,"context_lines":[{"line_number":505,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":506,"context_line":"        self.mock_client_service.delete_vol.return_value \u003d ("},{"line_number":507,"context_line":"            FAKE_GENERIC_POSITIVE_RESPONSE)"},{"line_number":508,"context_line":"        nimble.eventlet.sleep(0)"},{"line_number":509,"context_line":"        self.driver.delete_volume({\u0027name\u0027: \u0027testvolume\u0027})"},{"line_number":510,"context_line":"        expected_calls \u003d [mock.call.online_vol("},{"line_number":511,"context_line":"            \u0027testvolume\u0027, False),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_03d1a8fb","line":508,"in_reply_to":"1a6eadb0_a3be34d2","updated":"2016-12-19 18:39:04.000000000","message":"Done","commit_id":"2008c7ac2b6e3a5adab141abcc14d08d98479e13"}],"cinder/volume/drivers/nimble.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return self._get_model_info(volume[\u0027name\u0027])"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def is_volume_backup_clone(self, volume):"},{"line_number":157,"context_line":"        \"\"\"check if the volume is created through cinder-backup workflow"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        :param volume"},{"line_number":160,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_9ffa20bc","line":157,"range":{"start_line":157,"start_character":11,"end_line":157,"end_character":12},"updated":"2016-12-14 18:52:00.000000000","message":"This line was correct before. Need to switch back.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return self._get_model_info(volume[\u0027name\u0027])"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def is_volume_backup_clone(self, volume):"},{"line_number":157,"context_line":"        \"\"\"check if the volume is created through cinder-backup workflow"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        :param volume"},{"line_number":160,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_d84749ba","line":157,"range":{"start_line":157,"start_character":11,"end_line":157,"end_character":12},"in_reply_to":"1a6eadb0_9ffa20bc","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        ))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and (vol_info[\u0027base_snap_id\u0027]"},{"line_number":168,"context_line":"                                         and vol_info[\u0027parent_vol_id\u0027]) \\"},{"line_number":169,"context_line":"                is not None:"},{"line_number":170,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume :%s\", volume[\u0027name\u0027])"},{"line_number":171,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5f27a863","line":168,"range":{"start_line":168,"start_character":72,"end_line":168,"end_character":73},"updated":"2016-12-14 18:52:00.000000000","message":"Get rid of the use of \\","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        ))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and (vol_info[\u0027base_snap_id\u0027]"},{"line_number":168,"context_line":"                                         and vol_info[\u0027parent_vol_id\u0027]) \\"},{"line_number":169,"context_line":"                is not None:"},{"line_number":170,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume :%s\", volume[\u0027name\u0027])"},{"line_number":171,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_1814619e","line":168,"range":{"start_line":168,"start_character":72,"end_line":168,"end_character":73},"in_reply_to":"1a6eadb0_5f27a863","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                    replace(volume_name_prefix, \"\")"},{"line_number":185,"context_line":"                if BACKUP_VOL_PREFIX + parent_vol_id in snap_info["},{"line_number":186,"context_line":"                   \u0027description\u0027]:"},{"line_number":187,"context_line":"                    LOG.info(_LI(\u0027Nimble backup-snapshot exists  name\u003d%(\u0027"},{"line_number":188,"context_line":"                             \u0027name)s\u0027), {\u0027name\u0027: snap_info[\u0027name\u0027]})"},{"line_number":189,"context_line":"                    snap_vol_name \u003d self.APIExecutor.get_volume_name("},{"line_number":190,"context_line":"                        snap_info[\u0027vol_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_3fd74c24","line":187,"range":{"start_line":187,"start_character":64,"end_line":187,"end_character":65},"updated":"2016-12-14 18:52:00.000000000","message":"Extra space here.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                    replace(volume_name_prefix, \"\")"},{"line_number":185,"context_line":"                if BACKUP_VOL_PREFIX + parent_vol_id in snap_info["},{"line_number":186,"context_line":"                   \u0027description\u0027]:"},{"line_number":187,"context_line":"                    LOG.info(_LI(\u0027Nimble backup-snapshot exists  name\u003d%(\u0027"},{"line_number":188,"context_line":"                             \u0027name)s\u0027), {\u0027name\u0027: snap_info[\u0027name\u0027]})"},{"line_number":189,"context_line":"                    snap_vol_name \u003d self.APIExecutor.get_volume_name("},{"line_number":190,"context_line":"                        snap_info[\u0027vol_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_d81e69ba","line":187,"range":{"start_line":187,"start_character":64,"end_line":187,"end_character":65},"in_reply_to":"1a6eadb0_3fd74c24","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    def delete_volume(self, volume):"},{"line_number":196,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":197,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":198,"context_line":"        time.sleep(5)"},{"line_number":199,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume {0}\".format(volume[\u0027name\u0027]))"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_ffedd4ef","line":198,"range":{"start_line":198,"start_character":8,"end_line":198,"end_character":21},"updated":"2016-12-14 18:52:00.000000000","message":"Why is this here?","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    def delete_volume(self, volume):"},{"line_number":196,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":197,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":198,"context_line":"        time.sleep(5)"},{"line_number":199,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume {0}\".format(volume[\u0027name\u0027]))"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_588179c2","line":198,"range":{"start_line":198,"start_character":8,"end_line":198,"end_character":21},"in_reply_to":"1a6eadb0_ffedd4ef","updated":"2016-12-15 01:55:39.000000000","message":"To introduce a delay on our backend","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and \\"},{"line_number":204,"context_line":"                (backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume_backup  volume: {0} snap: {1}\".format("},{"line_number":206,"context_line":"                backup_snap_name,"},{"line_number":207,"context_line":"                backup_vol_name))"},{"line_number":208,"context_line":"            self.APIExecutor.online_snap(backup_vol_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_9fcf807e","line":205,"range":{"start_line":205,"start_character":67,"end_line":205,"end_character":75},"updated":"2016-12-14 18:52:00.000000000","message":"Switch to %(name)s format to be able to pass in format values as args to the logger.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and \\"},{"line_number":204,"context_line":"                (backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume_backup  volume: {0} snap: {1}\".format("},{"line_number":206,"context_line":"                backup_snap_name,"},{"line_number":207,"context_line":"                backup_vol_name))"},{"line_number":208,"context_line":"            self.APIExecutor.online_snap(backup_vol_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_afdde4e1","line":205,"range":{"start_line":205,"start_character":67,"end_line":205,"end_character":75},"in_reply_to":"1a6eadb0_9fcf807e","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                             \u0027warn_level\u0027: int(WARN_LEVEL),"},{"line_number":235,"context_line":"                             \u0027limit\u0027: 100,"},{"line_number":236,"context_line":"                             \u0027snap_limit\u0027: DEFAULT_SNAP_QUOTA}}"},{"line_number":237,"context_line":"            LOG.debug(\"Edit Vol request {0}\".format(data))"},{"line_number":238,"context_line":"            self.APIExecutor.edit_vol(volume[\u0027name\u0027], data)"},{"line_number":239,"context_line":"        return self._get_model_info(volume[\u0027name\u0027])"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_1f90d042","line":237,"range":{"start_line":237,"start_character":44,"end_line":237,"end_character":57},"updated":"2016-12-14 18:52:00.000000000","message":"Change to pass in to logger.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                             \u0027warn_level\u0027: int(WARN_LEVEL),"},{"line_number":235,"context_line":"                             \u0027limit\u0027: 100,"},{"line_number":236,"context_line":"                             \u0027snap_limit\u0027: DEFAULT_SNAP_QUOTA}}"},{"line_number":237,"context_line":"            LOG.debug(\"Edit Vol request {0}\".format(data))"},{"line_number":238,"context_line":"            self.APIExecutor.edit_vol(volume[\u0027name\u0027], data)"},{"line_number":239,"context_line":"        return self._get_model_info(volume[\u0027name\u0027])"},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_8fa2e849","line":237,"range":{"start_line":237,"start_character":44,"end_line":237,"end_character":57},"in_reply_to":"1a6eadb0_1f90d042","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        snapshot \u003d {\u0027volume_name\u0027: src_vref[\u0027name\u0027],"},{"line_number":247,"context_line":"                    \u0027name\u0027: snapshot_name,"},{"line_number":248,"context_line":"                    \u0027volume_size\u0027: src_vref[\u0027size\u0027],"},{"line_number":249,"context_line":"                    \u0027display_name\u0027: volume[\u0027display_name\u0027],"},{"line_number":250,"context_line":"                    \u0027display_description\u0027: \u0027\u0027}"},{"line_number":251,"context_line":"        self.APIExecutor.snap_vol(snapshot)"},{"line_number":252,"context_line":"        self._clone_volume_from_snapshot(volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5f9a4864","line":249,"range":{"start_line":249,"start_character":42,"end_line":249,"end_character":43},"updated":"2016-12-14 18:52:00.000000000","message":"Why was this changed?","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        snapshot \u003d {\u0027volume_name\u0027: src_vref[\u0027name\u0027],"},{"line_number":247,"context_line":"                    \u0027name\u0027: snapshot_name,"},{"line_number":248,"context_line":"                    \u0027volume_size\u0027: src_vref[\u0027size\u0027],"},{"line_number":249,"context_line":"                    \u0027display_name\u0027: volume[\u0027display_name\u0027],"},{"line_number":250,"context_line":"                    \u0027display_description\u0027: \u0027\u0027}"},{"line_number":251,"context_line":"        self.APIExecutor.snap_vol(snapshot)"},{"line_number":252,"context_line":"        self._clone_volume_from_snapshot(volume, snapshot)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_f8fec5ac","line":249,"range":{"start_line":249,"start_character":42,"end_line":249,"end_character":43},"in_reply_to":"1a6eadb0_5f9a4864","updated":"2016-12-15 01:55:39.000000000","message":"Reverted","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _enable_group_scoped_target(self, group_info):"},{"line_number":282,"context_line":"        if \u0027version_current\u0027 in group_info:"},{"line_number":283,"context_line":"                current_version \u003d group_info[\u0027version_current\u0027]"},{"line_number":284,"context_line":"                major_minor \u003d current_version.split(\".\")"},{"line_number":285,"context_line":"                if len(major_minor) \u003e\u003d 3:"},{"line_number":286,"context_line":"                    major \u003d major_minor[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_3fbaecc0","line":283,"range":{"start_line":283,"start_character":11,"end_line":283,"end_character":15},"updated":"2016-12-14 18:52:00.000000000","message":"Extra indent?","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _enable_group_scoped_target(self, group_info):"},{"line_number":282,"context_line":"        if \u0027version_current\u0027 in group_info:"},{"line_number":283,"context_line":"                current_version \u003d group_info[\u0027version_current\u0027]"},{"line_number":284,"context_line":"                major_minor \u003d current_version.split(\".\")"},{"line_number":285,"context_line":"                if len(major_minor) \u003e\u003d 3:"},{"line_number":286,"context_line":"                    major \u003d major_minor[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_4fc370ed","line":283,"range":{"start_line":283,"start_character":11,"end_line":283,"end_character":15},"in_reply_to":"1a6eadb0_3fbaecc0","updated":"2016-12-15 01:55:39.000000000","message":"Removed the extra indent","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                    self.APIExecutor.\\"},{"line_number":295,"context_line":"                                        enable_group_scoped_target()"},{"line_number":296,"context_line":"                                except Exception:"},{"line_number":297,"context_line":"                                    raise NimbleAPIException(\"Unable to enable\""},{"line_number":298,"context_line":"                                                             \" GST\")"},{"line_number":299,"context_line":"                            self._group_target_enabled \u003d True"},{"line_number":300,"context_line":"                            LOG.info(_LI(\"Group Scoped Target enabled for \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_ffc0742c","line":297,"range":{"start_line":297,"start_character":61,"end_line":297,"end_character":62},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                    self.APIExecutor.\\"},{"line_number":295,"context_line":"                                        enable_group_scoped_target()"},{"line_number":296,"context_line":"                                except Exception:"},{"line_number":297,"context_line":"                                    raise NimbleAPIException(\"Unable to enable\""},{"line_number":298,"context_line":"                                                             \" GST\")"},{"line_number":299,"context_line":"                            self._group_target_enabled \u003d True"},{"line_number":300,"context_line":"                            LOG.info(_LI(\"Group Scoped Target enabled for \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_ef7fdca8","line":297,"range":{"start_line":297,"start_character":61,"end_line":297,"end_character":62},"in_reply_to":"1a6eadb0_ffc0742c","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                                     {group_info[\u0027name\u0027],"},{"line_number":309,"context_line":"                                      self.configuration.san_ip})"},{"line_number":310,"context_line":"                else:"},{"line_number":311,"context_line":"                    raise NimbleAPIException(\"Unable to get current software \""},{"line_number":312,"context_line":"                                             \"version for {0}\","},{"line_number":313,"context_line":"                                             self.configuration.san_ip)"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5fe888b4","line":311,"range":{"start_line":311,"start_character":45,"end_line":311,"end_character":46},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                                     {group_info[\u0027name\u0027],"},{"line_number":309,"context_line":"                                      self.configuration.san_ip})"},{"line_number":310,"context_line":"                else:"},{"line_number":311,"context_line":"                    raise NimbleAPIException(\"Unable to get current software \""},{"line_number":312,"context_line":"                                             \"version for {0}\","},{"line_number":313,"context_line":"                                             self.configuration.san_ip)"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_6f42ec69","line":311,"range":{"start_line":311,"start_character":45,"end_line":311,"end_character":46},"in_reply_to":"1a6eadb0_5fe888b4","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        vol_size \u003d int(new_size) * units.Ki"},{"line_number":366,"context_line":"        reserve \u003d not self.configuration.san_thin_provision"},{"line_number":367,"context_line":"        reserve_size \u003d 100 if reserve else 0"},{"line_number":368,"context_line":"        LOG.debug(\"new volume size in MB {0}\".format(vol_size))"},{"line_number":369,"context_line":"        data \u003d {\"data\": {\u0027size\u0027: vol_size,"},{"line_number":370,"context_line":"                         \u0027reserve\u0027: reserve_size,"},{"line_number":371,"context_line":"                         \u0027warn_level\u0027: int(WARN_LEVEL),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_ffd794ea","line":368,"range":{"start_line":368,"start_character":45,"end_line":368,"end_character":53},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        vol_size \u003d int(new_size) * units.Ki"},{"line_number":366,"context_line":"        reserve \u003d not self.configuration.san_thin_provision"},{"line_number":367,"context_line":"        reserve_size \u003d 100 if reserve else 0"},{"line_number":368,"context_line":"        LOG.debug(\"new volume size in MB {0}\".format(vol_size))"},{"line_number":369,"context_line":"        data \u003d {\"data\": {\u0027size\u0027: vol_size,"},{"line_number":370,"context_line":"                         \u0027reserve\u0027: reserve_size,"},{"line_number":371,"context_line":"                         \u0027warn_level\u0027: int(WARN_LEVEL),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_2f339415","line":368,"range":{"start_line":368,"start_character":45,"end_line":368,"end_character":53},"in_reply_to":"1a6eadb0_ffd794ea","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            data[\u0027data\u0027][\u0027agent_type\u0027] \u003d AGENT_TYPE_OPENSTACK"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        LOG.debug(\"Data for edit {0}\".format(data))"},{"line_number":435,"context_line":"        self.APIExecutor.edit_vol(target_vol_name, data)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        # make the volume online after rename"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_dff3b89c","line":434,"range":{"start_line":434,"start_character":37,"end_line":434,"end_character":45},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            data[\u0027data\u0027][\u0027agent_type\u0027] \u003d AGENT_TYPE_OPENSTACK"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        LOG.debug(\"Data for edit {0}\".format(data))"},{"line_number":435,"context_line":"        self.APIExecutor.edit_vol(target_vol_name, data)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        # make the volume online after rename"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_2f1ab47d","line":434,"range":{"start_line":434,"start_character":37,"end_line":434,"end_character":45},"in_reply_to":"1a6eadb0_dff3b89c","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            group_info \u003d self.APIExecutor.get_group_info()"},{"line_number":489,"context_line":"            self._enable_group_scoped_target(group_info)"},{"line_number":490,"context_line":"        except Exception:"},{"line_number":491,"context_line":"            LOG.error(_LE(\u0027Failed to create REST client.\u0027"},{"line_number":492,"context_line":"                          \u0027Check san_ip, username, password\u0027"},{"line_number":493,"context_line":"                          \u0027 and make sure the array version is compatible\u0027))"},{"line_number":494,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_7f39c440","line":491,"range":{"start_line":491,"start_character":56,"end_line":491,"end_character":57},"updated":"2016-12-14 18:52:00.000000000","message":"Missing space at the end.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            group_info \u003d self.APIExecutor.get_group_info()"},{"line_number":489,"context_line":"            self._enable_group_scoped_target(group_info)"},{"line_number":490,"context_line":"        except Exception:"},{"line_number":491,"context_line":"            LOG.error(_LE(\u0027Failed to create REST client.\u0027"},{"line_number":492,"context_line":"                          \u0027Check san_ip, username, password\u0027"},{"line_number":493,"context_line":"                          \u0027 and make sure the array version is compatible\u0027))"},{"line_number":494,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5b516e35","line":491,"range":{"start_line":491,"start_character":56,"end_line":491,"end_character":57},"in_reply_to":"1a6eadb0_7f39c440","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                       vol_info[\u0027access_control_records\u0027] is None:"},{"line_number":508,"context_line":"                        if self._group_target_enabled:"},{"line_number":509,"context_line":"                            LOG.debug(\"Updating {0} to have agent_type \u003d {\""},{"line_number":510,"context_line":"                                      \"1}\".format(vol.name,"},{"line_number":511,"context_line":"                                                  AGENT_TYPE_OPENSTACK_GST))"},{"line_number":512,"context_line":"                            # check if this is an upgrade case from"},{"line_number":513,"context_line":"                            # openstack to openstackv2"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_df4ad8c4","line":510,"range":{"start_line":510,"start_character":43,"end_line":510,"end_character":50},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                       vol_info[\u0027access_control_records\u0027] is None:"},{"line_number":508,"context_line":"                        if self._group_target_enabled:"},{"line_number":509,"context_line":"                            LOG.debug(\"Updating {0} to have agent_type \u003d {\""},{"line_number":510,"context_line":"                                      \"1}\".format(vol.name,"},{"line_number":511,"context_line":"                                                  AGENT_TYPE_OPENSTACK_GST))"},{"line_number":512,"context_line":"                            # check if this is an upgrade case from"},{"line_number":513,"context_line":"                            # openstack to openstackv2"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_02b5cf2f","line":510,"range":{"start_line":510,"start_character":43,"end_line":510,"end_character":50},"in_reply_to":"1a6eadb0_df4ad8c4","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                        else:"},{"line_number":529,"context_line":"                            LOG.debug(\"Updating {0} to have \""},{"line_number":530,"context_line":"                                      \"agent_type \u003d {1}\"."},{"line_number":531,"context_line":"                                      format(vol.name,"},{"line_number":532,"context_line":"                                             AGENT_TYPE_OPENSTACK))"},{"line_number":533,"context_line":"                            if vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_NONE:"},{"line_number":534,"context_line":"                                data \u003d {\u0027data\u0027: {\u0027agent_type\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_bf227cff","line":531,"range":{"start_line":531,"start_character":38,"end_line":531,"end_character":44},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                        else:"},{"line_number":529,"context_line":"                            LOG.debug(\"Updating {0} to have \""},{"line_number":530,"context_line":"                                      \"agent_type \u003d {1}\"."},{"line_number":531,"context_line":"                                      format(vol.name,"},{"line_number":532,"context_line":"                                             AGENT_TYPE_OPENSTACK))"},{"line_number":533,"context_line":"                            if vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_NONE:"},{"line_number":534,"context_line":"                                data \u003d {\u0027data\u0027: {\u0027agent_type\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_627a0379","line":531,"range":{"start_line":531,"start_character":38,"end_line":531,"end_character":44},"in_reply_to":"1a6eadb0_bf227cff","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":584,"context_line":"                    wwpn \u003d str(initiator[\u0027wwpn\u0027]).replace(\":\", \"\")"},{"line_number":585,"context_line":"                    wwpns_list.append(wwpn)"},{"line_number":586,"context_line":"                LOG.debug(\"initiator_wwpns\u003d {0} wwpns_list_from_array\u003d{1}\""},{"line_number":587,"context_line":"                          .format(initiator_wwpns, wwpns_list))"},{"line_number":588,"context_line":"                if set(initiator_wwpns) \u003d\u003d set(wwpns_list):"},{"line_number":589,"context_line":"                    LOG.info(_LI(\u0027igroup %(grp)s found for \u0027"},{"line_number":590,"context_line":"                                 \u0027initiator %(wwpns_list)s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5f8408d3","line":587,"range":{"start_line":587,"start_character":27,"end_line":587,"end_character":33},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":584,"context_line":"                    wwpn \u003d str(initiator[\u0027wwpn\u0027]).replace(\":\", \"\")"},{"line_number":585,"context_line":"                    wwpns_list.append(wwpn)"},{"line_number":586,"context_line":"                LOG.debug(\"initiator_wwpns\u003d {0} wwpns_list_from_array\u003d{1}\""},{"line_number":587,"context_line":"                          .format(initiator_wwpns, wwpns_list))"},{"line_number":588,"context_line":"                if set(initiator_wwpns) \u003d\u003d set(wwpns_list):"},{"line_number":589,"context_line":"                    LOG.info(_LI(\u0027igroup %(grp)s found for \u0027"},{"line_number":590,"context_line":"                                 \u0027initiator %(wwpns_list)s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_22d2cb5c","line":587,"range":{"start_line":587,"start_character":27,"end_line":587,"end_character":33},"in_reply_to":"1a6eadb0_5f8408d3","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                lun \u003d acl[\u0027lun\u0027]"},{"line_number":619,"context_line":"                LOG.info(_LI(\"LUN : %(lun)s\"), {\"lun\": lun})"},{"line_number":620,"context_line":"                return lun"},{"line_number":621,"context_line":"        raise Exception(\"Lun number not found for volume {0} with\""},{"line_number":622,"context_line":"                        \"initiator_group: {1}\"."},{"line_number":623,"context_line":"                        format(volume[\u0027name\u0027],"},{"line_number":624,"context_line":"                               initiator_group_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_9f6ea02d","line":621,"range":{"start_line":621,"start_character":65,"end_line":621,"end_character":66},"updated":"2016-12-14 18:52:00.000000000","message":"_(), missing space at the end.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                lun \u003d acl[\u0027lun\u0027]"},{"line_number":619,"context_line":"                LOG.info(_LI(\"LUN : %(lun)s\"), {\"lun\": lun})"},{"line_number":620,"context_line":"                return lun"},{"line_number":621,"context_line":"        raise Exception(\"Lun number not found for volume {0} with\""},{"line_number":622,"context_line":"                        \"initiator_group: {1}\"."},{"line_number":623,"context_line":"                        format(volume[\u0027name\u0027],"},{"line_number":624,"context_line":"                               initiator_group_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_82447f1b","line":621,"range":{"start_line":621,"start_character":65,"end_line":621,"end_character":66},"in_reply_to":"1a6eadb0_9f6ea02d","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                _(\u0027No initiator group found for initiator %s\u0027) %"},{"line_number":692,"context_line":"                initiator_name)"},{"line_number":693,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":694,"context_line":"        time.sleep(5)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":697,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_bf699c27","line":694,"range":{"start_line":694,"start_character":13,"end_line":694,"end_character":18},"updated":"2016-12-14 18:52:00.000000000","message":"Why was this added?","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                _(\u0027No initiator group found for initiator %s\u0027) %"},{"line_number":692,"context_line":"                initiator_name)"},{"line_number":693,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":694,"context_line":"        time.sleep(5)"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":697,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_a2741b68","line":694,"range":{"start_line":694,"start_character":13,"end_line":694,"end_character":18},"in_reply_to":"1a6eadb0_bf699c27","updated":"2016-12-15 01:55:39.000000000","message":"To introduce a delay on our backend","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"@interface.volumedriver"},{"line_number":783,"context_line":"class NimbleFCDriver(NimbleBaseVolumeDriver, driver.FibreChannelDriver):"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    \"\"\"OpenStack driver to enable Nimble FC Driver Controller.\"\"\""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5fd248d3","line":784,"updated":"2016-12-14 18:52:00.000000000","message":"Remove extra line.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"@interface.volumedriver"},{"line_number":783,"context_line":"class NimbleFCDriver(NimbleBaseVolumeDriver, driver.FibreChannelDriver):"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    \"\"\"OpenStack driver to enable Nimble FC Driver Controller.\"\"\""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_e26a9380","line":784,"in_reply_to":"1a6eadb0_5fd248d3","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def _build_initiator_target_map(self, target_wwns, connector):"},{"line_number":802,"context_line":"        \"\"\"Build the target_wwns and the initiator target map.\"\"\""},{"line_number":803,"context_line":"        LOG.info(_LI(\"_build_initiator_target_mape\"))"},{"line_number":804,"context_line":"        init_targ_map \u003d {}"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"        if self._lookup_service:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_7fec648f","line":803,"range":{"start_line":803,"start_character":46,"end_line":803,"end_character":50},"updated":"2016-12-14 18:52:00.000000000","message":"mape/map\n\nThis doesn\u0027t tell the admin anything. This should either be a LOG.debug or have some useful information included.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def _build_initiator_target_map(self, target_wwns, connector):"},{"line_number":802,"context_line":"        \"\"\"Build the target_wwns and the initiator target map.\"\"\""},{"line_number":803,"context_line":"        LOG.info(_LI(\"_build_initiator_target_mape\"))"},{"line_number":804,"context_line":"        init_targ_map \u003d {}"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"        if self._lookup_service:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_e218d320","line":803,"range":{"start_line":803,"start_character":46,"end_line":803,"end_character":50},"in_reply_to":"1a6eadb0_7fec648f","updated":"2016-12-15 01:55:39.000000000","message":"updated with a debug message","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                initiator_name)"},{"line_number":893,"context_line":"        LOG.debug(\"initiator_target_map\".format(init_targ_map))"},{"line_number":894,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":895,"context_line":"        time.sleep(5)"},{"line_number":896,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":897,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_5f132866","line":895,"range":{"start_line":895,"start_character":13,"end_line":895,"end_character":18},"updated":"2016-12-14 18:52:00.000000000","message":"?","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":892,"context_line":"                initiator_name)"},{"line_number":893,"context_line":"        LOG.debug(\"initiator_target_map\".format(init_targ_map))"},{"line_number":894,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":895,"context_line":"        time.sleep(5)"},{"line_number":896,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":897,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_42da674d","line":895,"range":{"start_line":895,"start_character":13,"end_line":895,"end_character":18},"in_reply_to":"1a6eadb0_5f132866","updated":"2016-12-15 01:55:39.000000000","message":"Introduce a delay on our backend","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                          verify\u003dself.verify)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":966,"context_line":"            msg \u003d \"Failed to login for user %s\", self.username"},{"line_number":967,"context_line":"            raise Exception(msg)"},{"line_number":968,"context_line":"        self.token_id \u003d r.json()[\u0027data\u0027][\u0027session_token\u0027]"},{"line_number":969,"context_line":"        self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_03015e05","line":966,"range":{"start_line":966,"start_character":18,"end_line":966,"end_character":19},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                          verify\u003dself.verify)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":966,"context_line":"            msg \u003d \"Failed to login for user %s\", self.username"},{"line_number":967,"context_line":"            raise Exception(msg)"},{"line_number":968,"context_line":"        self.token_id \u003d r.json()[\u0027data\u0027][\u0027session_token\u0027]"},{"line_number":969,"context_line":"        self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_82b71ff4","line":966,"range":{"start_line":966,"start_character":18,"end_line":966,"end_character":19},"in_reply_to":"1a6eadb0_03015e05","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        api \u003d \u0027groups\u0027"},{"line_number":973,"context_line":"        r \u003d self.get(api)"},{"line_number":974,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":975,"context_line":"            raise Exception(\"Unable to retrieve Group Object for : {0}\"."},{"line_number":976,"context_line":"                            format(self.ip))"},{"line_number":977,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_23065a1d","line":975,"range":{"start_line":975,"start_character":28,"end_line":975,"end_character":29},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        api \u003d \u0027groups\u0027"},{"line_number":973,"context_line":"        r \u003d self.get(api)"},{"line_number":974,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":975,"context_line":"            raise Exception(\"Unable to retrieve Group Object for : {0}\"."},{"line_number":976,"context_line":"                            format(self.ip))"},{"line_number":977,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_02c4ef5c","line":975,"range":{"start_line":975,"start_character":28,"end_line":975,"end_character":29},"in_reply_to":"1a6eadb0_23065a1d","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        api \u003d \u0027groups/\u0027 + str(group_id)"},{"line_number":982,"context_line":"        r \u003d self.get(api)"},{"line_number":983,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":984,"context_line":"            raise Exception(\"Unable to retrieve Group info for: {0}\".format("},{"line_number":985,"context_line":"                            group_id))"},{"line_number":986,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":987,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_4307d617","line":984,"range":{"start_line":984,"start_character":28,"end_line":984,"end_character":29},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        api \u003d \u0027groups/\u0027 + str(group_id)"},{"line_number":982,"context_line":"        r \u003d self.get(api)"},{"line_number":983,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":984,"context_line":"            raise Exception(\"Unable to retrieve Group info for: {0}\".format("},{"line_number":985,"context_line":"                            group_id))"},{"line_number":986,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":987,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_62a92390","line":984,"range":{"start_line":984,"start_character":28,"end_line":984,"end_character":29},"in_reply_to":"1a6eadb0_4307d617","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        filter \u003d {\"name\": folder_name}"},{"line_number":991,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":992,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":993,"context_line":"            raise Exception(\"Unable to retrieve information for Folder: {0}\""},{"line_number":994,"context_line":"                            .format(folder_name))"},{"line_number":995,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":996,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_a3126a55","line":993,"range":{"start_line":993,"start_character":28,"end_line":993,"end_character":29},"updated":"2016-12-14 18:52:00.000000000","message":"_()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        filter \u003d {\"name\": folder_name}"},{"line_number":991,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":992,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":993,"context_line":"            raise Exception(\"Unable to retrieve information for Folder: {0}\""},{"line_number":994,"context_line":"                            .format(folder_name))"},{"line_number":995,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":996,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_e29d3367","line":993,"range":{"start_line":993,"start_character":28,"end_line":993,"end_character":29},"in_reply_to":"1a6eadb0_a3126a55","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        api \u003d \"folders/\" + str(folder_id)"},{"line_number":1000,"context_line":"        r \u003d self.get(api)"},{"line_number":1001,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1002,"context_line":"            raise Exception(\"Unable to retrieve Folder info for: {0}\".format("},{"line_number":1003,"context_line":"                folder_id))"},{"line_number":1004,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1005,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_232d7a95","line":1002,"range":{"start_line":1002,"start_character":18,"end_line":1002,"end_character":27},"updated":"2016-12-14 18:52:00.000000000","message":"Really would be better if these raised something other than Exception.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        api \u003d \"folders/\" + str(folder_id)"},{"line_number":1000,"context_line":"        r \u003d self.get(api)"},{"line_number":1001,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1002,"context_line":"            raise Exception(\"Unable to retrieve Folder info for: {0}\".format("},{"line_number":1003,"context_line":"                folder_id))"},{"line_number":1004,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1005,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_855d697b","line":1002,"range":{"start_line":1002,"start_character":18,"end_line":1002,"end_character":27},"in_reply_to":"1a6eadb0_232d7a95","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1012,"context_line":"            raise Exception(\"No performance policy found for: {0}\".format("},{"line_number":1013,"context_line":"                            perf_policy_name))"},{"line_number":1014,"context_line":"        LOG.debug(\"Performance policy ID :{0}\".format(r.json()"},{"line_number":1015,"context_line":"                                                      [\u0027data\u0027][0][\u0027id\u0027]))"},{"line_number":1016,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1017,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_431ef65f","line":1014,"range":{"start_line":1014,"start_character":47,"end_line":1014,"end_character":53},"updated":"2016-12-14 18:52:00.000000000","message":",","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1012,"context_line":"            raise Exception(\"No performance policy found for: {0}\".format("},{"line_number":1013,"context_line":"                            perf_policy_name))"},{"line_number":1014,"context_line":"        LOG.debug(\"Performance policy ID :{0}\".format(r.json()"},{"line_number":1015,"context_line":"                                                      [\u0027data\u0027][0][\u0027id\u0027]))"},{"line_number":1016,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1017,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_054a39ac","line":1014,"range":{"start_line":1014,"start_character":47,"end_line":1014,"end_character":53},"in_reply_to":"1a6eadb0_431ef65f","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":1443,"context_line":"        r \u003d requests.put(url, data\u003djson.dumps(payload),"},{"line_number":1444,"context_line":"                         headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1445,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1446,"context_line":"            base \u003d \"Failed to execute api {0} : Error Code : {1}\".format("},{"line_number":1447,"context_line":"                api, r.status_code)"},{"line_number":1448,"context_line":"            LOG.debug(\"Base error : {0}\".format(base))"},{"line_number":1449,"context_line":"            try:"},{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_433fd686","line":1448,"range":{"start_line":1446,"start_character":12,"end_line":1448,"end_character":54},"updated":"2016-12-14 18:52:00.000000000","message":"Just put this all in the LOG.debug call.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":1443,"context_line":"        r \u003d requests.put(url, data\u003djson.dumps(payload),"},{"line_number":1444,"context_line":"                         headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1445,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1446,"context_line":"            base \u003d \"Failed to execute api {0} : Error Code : {1}\".format("},{"line_number":1447,"context_line":"                api, r.status_code)"},{"line_number":1448,"context_line":"            LOG.debug(\"Base error : {0}\".format(base))"},{"line_number":1449,"context_line":"            try:"},{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_d66715e7","line":1448,"range":{"start_line":1446,"start_character":12,"end_line":1448,"end_character":54},"in_reply_to":"1a6eadb0_433fd686","updated":"2016-12-15 01:55:39.000000000","message":"updated the debug message. since base is used again later that is why i have it as a separate variable","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + str(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_a34a6a24","line":1453,"range":{"start_line":1453,"start_character":36,"end_line":1453,"end_character":39},"updated":"2016-12-14 18:52:00.000000000","message":"Change to six.text_type()","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"d34ebdff9d3b23a3605737cbb4970ce1e94233a4","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + str(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_c5af6128","line":1453,"range":{"start_line":1453,"start_character":36,"end_line":1453,"end_character":39},"in_reply_to":"1a6eadb0_a34a6a24","updated":"2016-12-15 01:55:39.000000000","message":"Done","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        # 2. Delete the base snapshot used for clone from the parent volume."},{"line_number":228,"context_line":"        # This is only done for the force backup clone operation as it is"},{"line_number":229,"context_line":"        # a temporary operation in which we are certain that the snapshot does"},{"line_number":230,"context_line":"        # not need to be preserved after the backup is completed."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if snap_name and vol_name:"},{"line_number":233,"context_line":"            self.APIExecutor.online_snap(vol_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_1e751f31","side":"PARENT","line":230,"updated":"2016-12-15 05:03:07.000000000","message":"I think the above is a very good explanation on why you need to call is_volume_backup_clone.  I was wondering about that.  Please keep these comments and update them if needed.","commit_id":"f568d09543b8e44b712e0565ca62845f1cc6f911"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    def delete_volume(self, volume):"},{"line_number":194,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":195,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":196,"context_line":"        time.sleep(5)"},{"line_number":197,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":198,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":199,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_defba7bf","line":196,"updated":"2016-12-15 05:03:07.000000000","message":"Please use eventlet.sleep.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    def delete_volume(self, volume):"},{"line_number":194,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":195,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":196,"context_line":"        time.sleep(5)"},{"line_number":197,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":198,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":199,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_7322aa53","line":196,"in_reply_to":"1a6eadb0_defba7bf","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        # Check if volume is already managed by OpenStack"},{"line_number":398,"context_line":"        if vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_OPENSTACK or ("},{"line_number":399,"context_line":"           vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_OPENSTACK_GST):"},{"line_number":400,"context_line":"            msg \u003d (_(\u0027Volume %s is already managed by OpenStack.\u0027),"},{"line_number":401,"context_line":"                   target_vol_name)"},{"line_number":402,"context_line":"            raise exception.ManageExistingAlreadyManaged("},{"line_number":403,"context_line":"                volume_ref\u003dvolume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_feda23e7","line":400,"updated":"2016-12-15 05:03:07.000000000","message":"The original one was correct.  It should be \"%\" instead of \",\" here, otherwise the exception message won\u0027t come out properly.\n\nOn the other hand, you are not really using this message in the exception.  So this should be deleted.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        # Check if volume is already managed by OpenStack"},{"line_number":398,"context_line":"        if vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_OPENSTACK or ("},{"line_number":399,"context_line":"           vol_info[\u0027agent_type\u0027] \u003d\u003d AGENT_TYPE_OPENSTACK_GST):"},{"line_number":400,"context_line":"            msg \u003d (_(\u0027Volume %s is already managed by OpenStack.\u0027),"},{"line_number":401,"context_line":"                   target_vol_name)"},{"line_number":402,"context_line":"            raise exception.ManageExistingAlreadyManaged("},{"line_number":403,"context_line":"                volume_ref\u003dvolume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_339d920a","line":400,"in_reply_to":"1a6eadb0_feda23e7","updated":"2016-12-15 21:53:39.000000000","message":"Removed the message as it was not used for the exception","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                 {\u0027status\u0027: vol_info[\u0027online\u0027]})"},{"line_number":413,"context_line":"        if vol_info[\u0027online\u0027] is True:"},{"line_number":414,"context_line":"            msg \u003d (_(\u0027Volume %s is online. Set volume to offline for \u0027"},{"line_number":415,"context_line":"                     \u0027managing using OpenStack.\u0027), target_vol_name)"},{"line_number":416,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # edit the volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_5ebeb765","line":415,"updated":"2016-12-15 05:03:07.000000000","message":"The original one was correct.  It should be \"%\" instead of \",\" here, otherwise the exception message won\u0027t come out properly.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                 {\u0027status\u0027: vol_info[\u0027online\u0027]})"},{"line_number":413,"context_line":"        if vol_info[\u0027online\u0027] is True:"},{"line_number":414,"context_line":"            msg \u003d (_(\u0027Volume %s is online. Set volume to offline for \u0027"},{"line_number":415,"context_line":"                     \u0027managing using OpenStack.\u0027), target_vol_name)"},{"line_number":416,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # edit the volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_93af4629","line":415,"in_reply_to":"1a6eadb0_5ebeb765","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            if \u0027access_control_records\u0027 in vol_info and ("},{"line_number":423,"context_line":"               vol_info[\u0027access_control_records\u0027] is not None):"},{"line_number":424,"context_line":"                msg \u003d (_(\u0027Volume %s has ACL associated with it. Remove ACL \u0027"},{"line_number":425,"context_line":"                         \u0027for managing using Openstack\u0027), target_vol_name)"},{"line_number":426,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":427,"context_line":"            data[\u0027data\u0027][\u0027agent_type\u0027] \u003d AGENT_TYPE_OPENSTACK_GST"},{"line_number":428,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_beb98b7b","line":425,"range":{"start_line":425,"start_character":56,"end_line":425,"end_character":58},"updated":"2016-12-15 05:03:07.000000000","message":"Should be \"%\" instead of \",\".","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            if \u0027access_control_records\u0027 in vol_info and ("},{"line_number":423,"context_line":"               vol_info[\u0027access_control_records\u0027] is not None):"},{"line_number":424,"context_line":"                msg \u003d (_(\u0027Volume %s has ACL associated with it. Remove ACL \u0027"},{"line_number":425,"context_line":"                         \u0027for managing using Openstack\u0027), target_vol_name)"},{"line_number":426,"context_line":"                raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":427,"context_line":"            data[\u0027data\u0027][\u0027agent_type\u0027] \u003d AGENT_TYPE_OPENSTACK_GST"},{"line_number":428,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_d3a53e47","line":425,"range":{"start_line":425,"start_character":56,"end_line":425,"end_character":58},"in_reply_to":"1a6eadb0_beb98b7b","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                                self.APIExecutor.edit_vol(vol.name, data)"},{"line_number":545,"context_line":"                except NimbleAPIException:"},{"line_number":546,"context_line":"                    LOG.warning(_LW(\u0027Error updating agent-type for \u0027"},{"line_number":547,"context_line":"                                    \u0027volume %s.\u0027), vol.name)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _get_model_info(self, volume_name):"},{"line_number":550,"context_line":"        \"\"\"Get model info for the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_3e7d7bb1","line":547,"updated":"2016-12-15 05:03:07.000000000","message":"Is it safe not to raise the exception here?","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                                self.APIExecutor.edit_vol(vol.name, data)"},{"line_number":545,"context_line":"                except NimbleAPIException:"},{"line_number":546,"context_line":"                    LOG.warning(_LW(\u0027Error updating agent-type for \u0027"},{"line_number":547,"context_line":"                                    \u0027volume %s.\u0027), vol.name)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _get_model_info(self, volume_name):"},{"line_number":550,"context_line":"        \"\"\"Get model info for the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2e5609ce","line":547,"in_reply_to":"1a6eadb0_3e7d7bb1","updated":"2016-12-15 21:53:39.000000000","message":"yes, you are right, updated to raise it after the warning","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                lun \u003d acl[\u0027lun\u0027]"},{"line_number":619,"context_line":"                LOG.info(_LI(\"LUN : %(lun)s\"), {\"lun\": lun})"},{"line_number":620,"context_line":"                return lun"},{"line_number":621,"context_line":"        raise Exception(_(\"Lun number not found for volume %(vol)s with \""},{"line_number":622,"context_line":"                        \"initiator_group: %(igroup)s\"),"},{"line_number":623,"context_line":"                        {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":624,"context_line":"                         \u0027igroup\u0027: initiator_group_name})"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_fe24e3c5","line":621,"updated":"2016-12-15 05:03:07.000000000","message":"Please use a more specific exception.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":618,"context_line":"                lun \u003d acl[\u0027lun\u0027]"},{"line_number":619,"context_line":"                LOG.info(_LI(\"LUN : %(lun)s\"), {\"lun\": lun})"},{"line_number":620,"context_line":"                return lun"},{"line_number":621,"context_line":"        raise Exception(_(\"Lun number not found for volume %(vol)s with \""},{"line_number":622,"context_line":"                        \"initiator_group: %(igroup)s\"),"},{"line_number":623,"context_line":"                        {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":624,"context_line":"                         \u0027igroup\u0027: initiator_group_name})"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2e24495e","line":621,"in_reply_to":"1a6eadb0_fe24e3c5","updated":"2016-12-15 21:53:39.000000000","message":"update to NimbleAPIException","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":691,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":692,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":693,"context_line":"        time.sleep(5)"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":696,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_1e2effa4","line":693,"updated":"2016-12-15 05:03:07.000000000","message":"Please use eventlet.sleep.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":691,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":692,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":693,"context_line":"        time.sleep(5)"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":696,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_cec3d555","line":693,"in_reply_to":"1a6eadb0_1e2effa4","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        r \u003d self.get(api)"},{"line_number":973,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":974,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Group Object for : \""},{"line_number":975,"context_line":"                                       \"{0}\").format(self.ip))"},{"line_number":976,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def get_group_info(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_3e02db0b","line":975,"updated":"2016-12-15 05:03:07.000000000","message":"Please use %s","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        r \u003d self.get(api)"},{"line_number":973,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":974,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Group Object for : \""},{"line_number":975,"context_line":"                                       \"{0}\").format(self.ip))"},{"line_number":976,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def get_group_info(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_eeb7b1d5","line":975,"in_reply_to":"1a6eadb0_3e02db0b","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        r \u003d self.get(api)"},{"line_number":982,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":983,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Group info for: {0}\""},{"line_number":984,"context_line":"                                       \"\").format(group_id))"},{"line_number":985,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"    def get_folder_id(self, folder_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_4901a304","line":984,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        r \u003d self.get(api)"},{"line_number":982,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":983,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Group info for: {0}\""},{"line_number":984,"context_line":"                                       \"\").format(group_id))"},{"line_number":985,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":986,"context_line":""},{"line_number":987,"context_line":"    def get_folder_id(self, folder_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2eae0981","line":984,"in_reply_to":"1a6eadb0_4901a304","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":991,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":992,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve information for \""},{"line_number":993,"context_line":"                                       \"Folder: {0}\").format(folder_name))"},{"line_number":994,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":995,"context_line":""},{"line_number":996,"context_line":"    def get_folder_info(self, folder_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a90cf73b","line":993,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":991,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":992,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve information for \""},{"line_number":993,"context_line":"                                       \"Folder: {0}\").format(folder_name))"},{"line_number":994,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":995,"context_line":""},{"line_number":996,"context_line":"    def get_folder_info(self, folder_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_8ed0fdf7","line":993,"in_reply_to":"1a6eadb0_a90cf73b","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        r \u003d self.get(api)"},{"line_number":1000,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1001,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Folder info for: \""},{"line_number":1002,"context_line":"                                     \"{0}\").format(folder_id))"},{"line_number":1003,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"    def get_performance_policy_id(self, perf_policy_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c915b340","line":1002,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        r \u003d self.get(api)"},{"line_number":1000,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1001,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve Folder info for: \""},{"line_number":1002,"context_line":"                                     \"{0}\").format(folder_id))"},{"line_number":1003,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"    def get_performance_policy_id(self, perf_policy_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_ced675f0","line":1002,"in_reply_to":"1a6eadb0_c915b340","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"    def get_performance_policy_id(self, perf_policy_name):"},{"line_number":1006,"context_line":"        api \u003d \u0027performance_policies/\u0027"},{"line_number":1007,"context_line":"        filter \u003d {\u0027name\u0027: perf_policy_name}"},{"line_number":1008,"context_line":"        LOG.debug(\"Perfomance policy Name {0}\".format(perf_policy_name))"},{"line_number":1009,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1010,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1011,"context_line":"            raise NimbleAPIException(_(\"No performance policy found for:\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e9126f56","line":1008,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"    def get_performance_policy_id(self, perf_policy_name):"},{"line_number":1006,"context_line":"        api \u003d \u0027performance_policies/\u0027"},{"line_number":1007,"context_line":"        filter \u003d {\u0027name\u0027: perf_policy_name}"},{"line_number":1008,"context_line":"        LOG.debug(\"Perfomance policy Name {0}\".format(perf_policy_name))"},{"line_number":1009,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1010,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1011,"context_line":"            raise NimbleAPIException(_(\"No performance policy found for:\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_4e5d0578","line":1008,"in_reply_to":"1a6eadb0_e9126f56","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        filter \u003d {\u0027role\u0027: role}"},{"line_number":1021,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1022,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1023,"context_line":"            raise Exception(\"No {0} network config exists\".format(role))"},{"line_number":1024,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    def _get_volumetype_extraspecs(self, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_091c0b69","line":1023,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        filter \u003d {\u0027role\u0027: role}"},{"line_number":1021,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1022,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1023,"context_line":"            raise Exception(\"No {0} network config exists\".format(role))"},{"line_number":1024,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    def _get_volumetype_extraspecs(self, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_ae4cd9c8","line":1023,"in_reply_to":"1a6eadb0_091c0b69","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        api \u003d \"initiator_groups/detail\""},{"line_number":1185,"context_line":"        r \u003d self.get(api)"},{"line_number":1186,"context_line":"        if \u0027data\u0027 not in r.json():"},{"line_number":1187,"context_line":"            raise Exception(\"Unable to retrieve initiator group list\")"},{"line_number":1188,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1189,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c93cd3ca","line":1187,"updated":"2016-12-15 05:03:07.000000000","message":"Please use a more specific exception.  Also need _","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        api \u003d \"initiator_groups/detail\""},{"line_number":1185,"context_line":"        r \u003d self.get(api)"},{"line_number":1186,"context_line":"        if \u0027data\u0027 not in r.json():"},{"line_number":1187,"context_line":"            raise Exception(\"Unable to retrieve initiator group list\")"},{"line_number":1188,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1189,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1190,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_0ef5cd55","line":1187,"in_reply_to":"1a6eadb0_c93cd3ca","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"        filter \u003d {\"name\": initiator_group_name}"},{"line_number":1194,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1195,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1196,"context_line":"            raise Exception(\"Unable to retrieve information for initiator \""},{"line_number":1197,"context_line":"                            \"group : {0}\".format(initiator_group_name))"},{"line_number":1198,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_09332bf7","line":1196,"updated":"2016-12-15 05:03:07.000000000","message":"More specific exception.  Need _.   Use %s please.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"        filter \u003d {\"name\": initiator_group_name}"},{"line_number":1194,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1195,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1196,"context_line":"            raise Exception(\"Unable to retrieve information for initiator \""},{"line_number":1197,"context_line":"                            \"group : {0}\".format(initiator_group_name))"},{"line_number":1198,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1199,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_22561dce","line":1196,"in_reply_to":"1a6eadb0_09332bf7","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1204,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1205,"context_line":"            raise Exception(\"Unable to retrieve information for volume: {0}\""},{"line_number":1206,"context_line":"                            .format(name))"},{"line_number":1207,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def get_volume_name(self, volume_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2930e7e7","line":1206,"updated":"2016-12-15 05:03:07.000000000","message":"same as above","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1204,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1205,"context_line":"            raise Exception(\"Unable to retrieve information for volume: {0}\""},{"line_number":1206,"context_line":"                            .format(name))"},{"line_number":1207,"context_line":"        return r.json()[\u0027data\u0027][0][\u0027id\u0027]"},{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    def get_volume_name(self, volume_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_821ff106","line":1206,"in_reply_to":"1a6eadb0_2930e7e7","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        r \u003d self.get(api)"},{"line_number":1212,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1213,"context_line":"            raise Exception(\"Unable to retrieve information for volume: {0}\""},{"line_number":1214,"context_line":"                            .format(volume_id))"},{"line_number":1215,"context_line":"        return r.json()[\u0027data\u0027][\u0027name\u0027]"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def add_acl(self, volume, initiator_group_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_494fe36a","line":1214,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        r \u003d self.get(api)"},{"line_number":1212,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1213,"context_line":"            raise Exception(\"Unable to retrieve information for volume: {0}\""},{"line_number":1214,"context_line":"                            .format(volume_id))"},{"line_number":1215,"context_line":"        return r.json()[\u0027data\u0027][\u0027name\u0027]"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def add_acl(self, volume, initiator_group_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_42e079fa","line":1214,"in_reply_to":"1a6eadb0_494fe36a","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1234,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1235,"context_line":"            raise Exception(\"Unable to retrieve ACL for volume: {0} \""},{"line_number":1236,"context_line":"                            \"initiator_group: {1}\".format(volume_id,"},{"line_number":1237,"context_line":"                                                          initiator_group_id))"},{"line_number":1238,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1239,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e940af36","line":1236,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1234,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1235,"context_line":"            raise Exception(\"Unable to retrieve ACL for volume: {0} \""},{"line_number":1236,"context_line":"                            \"initiator_group: {1}\".format(volume_id,"},{"line_number":1237,"context_line":"                                                          initiator_group_id))"},{"line_number":1238,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1239,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a29dcd67","line":1236,"in_reply_to":"1a6eadb0_e940af36","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1260,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1261,"context_line":"            raise Exception(\"Unable to retrieve snapshot info for snap_id: {0}\""},{"line_number":1262,"context_line":"                            \"volume id: {1}\".format(snap_id, vol_id))"},{"line_number":1263,"context_line":"        LOG.debug(\"SnapInfo :{0}\".format(str(r.json()[\u0027data\u0027][0])))"},{"line_number":1264,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_094a4b55","line":1262,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1260,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1261,"context_line":"            raise Exception(\"Unable to retrieve snapshot info for snap_id: {0}\""},{"line_number":1262,"context_line":"                            \"volume id: {1}\".format(snap_id, vol_id))"},{"line_number":1263,"context_line":"        LOG.debug(\"SnapInfo :{0}\".format(str(r.json()[\u0027data\u0027][0])))"},{"line_number":1264,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2297fd3a","line":1262,"in_reply_to":"1a6eadb0_094a4b55","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1260,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1261,"context_line":"            raise Exception(\"Unable to retrieve snapshot info for snap_id: {0}\""},{"line_number":1262,"context_line":"                            \"volume id: {1}\".format(snap_id, vol_id))"},{"line_number":1263,"context_line":"        LOG.debug(\"SnapInfo :{0}\".format(str(r.json()[\u0027data\u0027][0])))"},{"line_number":1264,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    def get_snap_info(self, snap_name, vol_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2947074c","line":1263,"updated":"2016-12-15 05:03:07.000000000","message":"%s","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1260,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1261,"context_line":"            raise Exception(\"Unable to retrieve snapshot info for snap_id: {0}\""},{"line_number":1262,"context_line":"                            \"volume id: {1}\".format(snap_id, vol_id))"},{"line_number":1263,"context_line":"        LOG.debug(\"SnapInfo :{0}\".format(str(r.json()[\u0027data\u0027][0])))"},{"line_number":1264,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    def get_snap_info(self, snap_name, vol_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e2dee50f","line":1263,"in_reply_to":"1a6eadb0_2947074c","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1270,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1271,"context_line":"            raise Exception(\"Snapshot: {0} of Volume: {1} doesn\u0027t \""},{"line_number":1272,"context_line":"                            \"exist\".format(snap_name, vol_name))"},{"line_number":1273,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"    def get_snap_info_detail(self, snap_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_497603a5","line":1272,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1270,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1271,"context_line":"            raise Exception(\"Snapshot: {0} of Volume: {1} doesn\u0027t \""},{"line_number":1272,"context_line":"                            \"exist\".format(snap_name, vol_name))"},{"line_number":1273,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"    def get_snap_info_detail(self, snap_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_6241f5a8","line":1272,"in_reply_to":"1a6eadb0_497603a5","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"        filter \u003d {\u0027id\u0027: snap_id}"},{"line_number":1278,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1279,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1280,"context_line":"            raise Exception(\"Snapshot: {0} doesnt exist exist\".format(snap_id))"},{"line_number":1281,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_896c9bd1","line":1280,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"        filter \u003d {\u0027id\u0027: snap_id}"},{"line_number":1278,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1279,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1280,"context_line":"            raise Exception(\"Snapshot: {0} doesnt exist exist\".format(snap_id))"},{"line_number":1281,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e21345b6","line":1280,"in_reply_to":"1a6eadb0_896c9bd1","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"    def online_vol(self, volume_name, online_flag):"},{"line_number":1285,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1286,"context_line":"        LOG.debug(\"volume_id %s\", six.text_type(volume_id))"},{"line_number":1287,"context_line":"        time.sleep(1)"},{"line_number":1288,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1289,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag}}"},{"line_number":1290,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e967cfe6","line":1287,"updated":"2016-12-15 05:03:07.000000000","message":"eventlet.sleep","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"    def online_vol(self, volume_name, online_flag):"},{"line_number":1285,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1286,"context_line":"        LOG.debug(\"volume_id %s\", six.text_type(volume_id))"},{"line_number":1287,"context_line":"        time.sleep(1)"},{"line_number":1288,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1289,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag}}"},{"line_number":1290,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_220a9d79","line":1287,"in_reply_to":"1a6eadb0_e967cfe6","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1286,"context_line":"        LOG.debug(\"volume_id %s\", six.text_type(volume_id))"},{"line_number":1287,"context_line":"        time.sleep(1)"},{"line_number":1288,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1289,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag}}"},{"line_number":1290,"context_line":"        try:"},{"line_number":1291,"context_line":"            self.put(api, data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_295e2712","line":1288,"updated":"2016-12-15 05:03:07.000000000","message":"str -\u003e six.text_type","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1286,"context_line":"        LOG.debug(\"volume_id %s\", six.text_type(volume_id))"},{"line_number":1287,"context_line":"        time.sleep(1)"},{"line_number":1288,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1289,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag}}"},{"line_number":1290,"context_line":"        try:"},{"line_number":1291,"context_line":"            self.put(api, data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_028041bf","line":1288,"in_reply_to":"1a6eadb0_295e2712","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"            self.put(api, data)"},{"line_number":1292,"context_line":"            LOG.debug(\"Volume %s is in requested online state :%s\","},{"line_number":1293,"context_line":"                      volume_name,"},{"line_number":1294,"context_line":"                      online_flag)"},{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c9b13349","line":1294,"updated":"2016-12-15 05:03:07.000000000","message":"Use keyword parameters.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"            self.put(api, data)"},{"line_number":1292,"context_line":"            LOG.debug(\"Volume %s is in requested online state :%s\","},{"line_number":1293,"context_line":"                      volume_name,"},{"line_number":1294,"context_line":"                      online_flag)"},{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c2e00999","line":1294,"in_reply_to":"1a6eadb0_c9b13349","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"                      volume_name,"},{"line_number":1294,"context_line":"                      online_flag)"},{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1298,"context_line":"                LOG.warning(_LW(\u0027Volume %s : is already in requested state\u0027),"},{"line_number":1299,"context_line":"                            volume_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_29b54730","line":1296,"updated":"2016-12-15 05:03:07.000000000","message":"Use %s.  Also this need _ because it goes to the exception below.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"                      volume_name,"},{"line_number":1294,"context_line":"                      online_flag)"},{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1298,"context_line":"                LOG.warning(_LW(\u0027Volume %s : is already in requested state\u0027),"},{"line_number":1299,"context_line":"                            volume_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_229d3d0a","line":1296,"in_reply_to":"1a6eadb0_29b54730","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1298,"context_line":"                LOG.warning(_LW(\u0027Volume %s : is already in requested state\u0027),"},{"line_number":1299,"context_line":"                            volume_name)"},{"line_number":1300,"context_line":"            # TODO(initiator): Check if we need to ignore the connected"},{"line_number":1301,"context_line":"            # initiator"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_897adb75","line":1298,"range":{"start_line":1298,"start_character":45,"end_line":1298,"end_character":74},"updated":"2016-12-15 05:03:07.000000000","message":"Can you put this in a constant as it is used more than once.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"        except Exception as ex:"},{"line_number":1296,"context_line":"            msg \u003d (\"Error  {0}\".format(ex.message))"},{"line_number":1297,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1298,"context_line":"                LOG.warning(_LW(\u0027Volume %s : is already in requested state\u0027),"},{"line_number":1299,"context_line":"                            volume_name)"},{"line_number":1300,"context_line":"            # TODO(initiator): Check if we need to ignore the connected"},{"line_number":1301,"context_line":"            # initiator"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a5495762","line":1298,"range":{"start_line":1298,"start_character":45,"end_line":1298,"end_character":74},"in_reply_to":"1a6eadb0_897adb75","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1312,"context_line":"            self.put(api, data)"},{"line_number":1313,"context_line":"            LOG.debug(\"Snapshot %s is in requested online state :%s\","},{"line_number":1314,"context_line":"                      snap_name,"},{"line_number":1315,"context_line":"                      online_flag)"},{"line_number":1316,"context_line":"        except Exception as ex:"},{"line_number":1317,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_298c677e","line":1315,"updated":"2016-12-15 05:03:07.000000000","message":"keyword parameters","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1312,"context_line":"            self.put(api, data)"},{"line_number":1313,"context_line":"            LOG.debug(\"Snapshot %s is in requested online state :%s\","},{"line_number":1314,"context_line":"                      snap_name,"},{"line_number":1315,"context_line":"                      online_flag)"},{"line_number":1316,"context_line":"        except Exception as ex:"},{"line_number":1317,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_457fa365","line":1315,"in_reply_to":"1a6eadb0_298c677e","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                      online_flag)"},{"line_number":1316,"context_line":"        except Exception as ex:"},{"line_number":1317,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"},{"line_number":1319,"context_line":"                            snap_name)"},{"line_number":1320,"context_line":"            else:"},{"line_number":1321,"context_line":"                raise ex"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a9f6b7f6","line":1318,"updated":"2016-12-15 05:03:07.000000000","message":"Use constant","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                      online_flag)"},{"line_number":1316,"context_line":"        except Exception as ex:"},{"line_number":1317,"context_line":"            if ex.message.__contains__(\"Object is already in requested state\"):"},{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"},{"line_number":1319,"context_line":"                            snap_name)"},{"line_number":1320,"context_line":"            else:"},{"line_number":1321,"context_line":"                raise ex"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_854a9b24","line":1318,"in_reply_to":"1a6eadb0_a9f6b7f6","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"},{"line_number":1319,"context_line":"                            snap_name)"},{"line_number":1320,"context_line":"            else:"},{"line_number":1321,"context_line":"                raise ex"},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"},{"line_number":1324,"context_line":"    def get_vol_info(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_49d2835d","line":1321,"updated":"2016-12-15 05:03:07.000000000","message":"Just \"raise\" as you are not changing anything.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                LOG.warning(_LW(\u0027Snapshot %s : is already in requested state\u0027),"},{"line_number":1319,"context_line":"                            snap_name)"},{"line_number":1320,"context_line":"            else:"},{"line_number":1321,"context_line":"                raise ex"},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"},{"line_number":1324,"context_line":"    def get_vol_info(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a55317e1","line":1321,"in_reply_to":"1a6eadb0_49d2835d","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"},{"line_number":1324,"context_line":"    def get_vol_info(self, volume_name):"},{"line_number":1325,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1326,"context_line":"        api \u003d \u0027volumes/\u0027 + str(volume_id)"},{"line_number":1327,"context_line":"        r \u003d self.get(api)"},{"line_number":1328,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1329,"context_line":"            raise NimbleAPIException(\"Volume: {0} not found\"."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_69d73f4b","line":1326,"updated":"2016-12-15 05:03:07.000000000","message":"str -\u003e six.text_type","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"    @utils.retry(NimbleAPIException, 2, 3)"},{"line_number":1324,"context_line":"    def get_vol_info(self, volume_name):"},{"line_number":1325,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1326,"context_line":"        api \u003d \u0027volumes/\u0027 + str(volume_id)"},{"line_number":1327,"context_line":"        r \u003d self.get(api)"},{"line_number":1328,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1329,"context_line":"            raise NimbleAPIException(\"Volume: {0} not found\"."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_0565abb3","line":1326,"in_reply_to":"1a6eadb0_69d73f4b","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"        r \u003d self.get(api)"},{"line_number":1328,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1329,"context_line":"            raise NimbleAPIException(\"Volume: {0} not found\"."},{"line_number":1330,"context_line":"                                     format(volume_name))"},{"line_number":1331,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"    def delete_vol(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_09bdeb01","line":1330,"updated":"2016-12-15 05:03:07.000000000","message":"Use %s.  This needs _.\n\nActually it is more appropriate to use VolumeNotFound(volume_id\u003dxxxx)","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"        r \u003d self.get(api)"},{"line_number":1328,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1329,"context_line":"            raise NimbleAPIException(\"Volume: {0} not found\"."},{"line_number":1330,"context_line":"                                     format(volume_name))"},{"line_number":1331,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"    def delete_vol(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c5fe53ad","line":1330,"in_reply_to":"1a6eadb0_09bdeb01","updated":"2016-12-15 21:53:39.000000000","message":"updated to exception.VolumeNotFound","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"    def delete_vol(self, volume_name):"},{"line_number":1334,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1335,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1336,"context_line":"        self.delete(api)"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"    def snap_vol(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_09540bc8","line":1335,"updated":"2016-12-15 05:03:07.000000000","message":"six.text_type","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"    def delete_vol(self, volume_name):"},{"line_number":1334,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1335,"context_line":"        api \u003d \"volumes/\" + str(volume_id)"},{"line_number":1336,"context_line":"        self.delete(api)"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"    def snap_vol(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2524675e","line":1335,"in_reply_to":"1a6eadb0_09540bc8","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def edit_vol(self, volume_name, data):"},{"line_number":1420,"context_line":"        vol_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1421,"context_line":"        api \u003d \"volumes/\" + str(vol_id)"},{"line_number":1422,"context_line":"        self.put(api, data)"},{"line_number":1423,"context_line":""},{"line_number":1424,"context_line":"    def delete_snap(self, volume_name, snap_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_2951c7d8","line":1421,"updated":"2016-12-15 05:03:07.000000000","message":"six.text_type","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def edit_vol(self, volume_name, data):"},{"line_number":1420,"context_line":"        vol_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1421,"context_line":"        api \u003d \"volumes/\" + str(vol_id)"},{"line_number":1422,"context_line":"        self.put(api, data)"},{"line_number":1423,"context_line":""},{"line_number":1424,"context_line":"    def delete_snap(self, volume_name, snap_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_45296336","line":1421,"in_reply_to":"1a6eadb0_2951c7d8","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1423,"context_line":""},{"line_number":1424,"context_line":"    def delete_snap(self, volume_name, snap_name):"},{"line_number":1425,"context_line":"        snap_info \u003d self.get_snap_info(snap_name, volume_name)"},{"line_number":1426,"context_line":"        api \u003d \"snapshots/\" + str(snap_info[\u0027id\u0027])"},{"line_number":1427,"context_line":"        self.delete(api)"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_4960c3a5","line":1426,"updated":"2016-12-15 05:03:07.000000000","message":"six.text_type","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1423,"context_line":""},{"line_number":1424,"context_line":"    def delete_snap(self, volume_name, snap_name):"},{"line_number":1425,"context_line":"        snap_info \u003d self.get_snap_info(snap_name, volume_name)"},{"line_number":1426,"context_line":"        api \u003d \"snapshots/\" + str(snap_info[\u0027id\u0027])"},{"line_number":1427,"context_line":"        self.delete(api)"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a518771f","line":1426,"in_reply_to":"1a6eadb0_4960c3a5","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1443,"context_line":"                         headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1444,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1445,"context_line":"            base \u003d \"Failed to execute api {0} : Error Code : {1}\".format("},{"line_number":1446,"context_line":"                api, r.status_code)"},{"line_number":1447,"context_line":"            LOG.debug(\"Base error : %(base)s\","},{"line_number":1448,"context_line":"                      {\u0027base\u0027: base})"},{"line_number":1449,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a95b17f5","line":1446,"updated":"2016-12-15 05:03:07.000000000","message":"Use %(var)s","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"                      {\u0027base\u0027: base})"},{"line_number":1449,"context_line":"            try:"},{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_690c9fed","line":1451,"updated":"2016-12-15 05:03:07.000000000","message":"Please don\u0027t use concatenation to format message.\n\nUse %(var)s.  You need _ as it goes to the exception.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"                      {\u0027base\u0027: base})"},{"line_number":1449,"context_line":"            try:"},{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_65fadf76","line":1451,"in_reply_to":"1a6eadb0_690c9fed","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_890d7bea","line":1453,"updated":"2016-12-15 05:03:07.000000000","message":"Same","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                msg \u003d base + \"Message {0}\".format(r.json()[\u0027messages\u0027][1]["},{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_056a0bee","line":1453,"in_reply_to":"1a6eadb0_890d7bea","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c9fbf3bf","line":1454,"updated":"2016-12-15 05:03:07.000000000","message":"Please use a more specific exception.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"                    \u0027text\u0027])"},{"line_number":1452,"context_line":"            except IndexError:"},{"line_number":1453,"context_line":"                msg \u003d base + \"; \" + six.text_type(r.json())"},{"line_number":1454,"context_line":"            raise Exception(msg)"},{"line_number":1455,"context_line":"        return r.json()"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e5642f23","line":1454,"in_reply_to":"1a6eadb0_c9fbf3bf","updated":"2016-12-15 21:53:39.000000000","message":"updated to NimbleAPIException","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"        r \u003d requests.post(url, data\u003djson.dumps(payload),"},{"line_number":1461,"context_line":"                          headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1462,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1463,"context_line":"            msg \u003d \"Failed to execute api {0} : {1}\".format(api, r.json()["},{"line_number":1464,"context_line":"                \u0027messages\u0027][1][\u0027text\u0027], r.status_code)"},{"line_number":1465,"context_line":"            raise Exception(msg)"},{"line_number":1466,"context_line":"        return r.json()"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_e91fcf05","line":1465,"range":{"start_line":1463,"start_character":0,"end_line":1465,"end_character":32},"updated":"2016-12-15 05:03:07.000000000","message":"Same comments as on lines 1450-1454.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"        r \u003d requests.post(url, data\u003djson.dumps(payload),"},{"line_number":1461,"context_line":"                          headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1462,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1463,"context_line":"            msg \u003d \"Failed to execute api {0} : {1}\".format(api, r.json()["},{"line_number":1464,"context_line":"                \u0027messages\u0027][1][\u0027text\u0027], r.status_code)"},{"line_number":1465,"context_line":"            raise Exception(msg)"},{"line_number":1466,"context_line":"        return r.json()"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"    @_connection_checker"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_d82716b4","line":1465,"range":{"start_line":1463,"start_character":0,"end_line":1465,"end_character":32},"in_reply_to":"1a6eadb0_e91fcf05","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1470,"context_line":"        url \u003d self.uri + api"},{"line_number":1471,"context_line":"        r \u003d requests.delete(url, headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1472,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1473,"context_line":"            msg \u003d \"Failed to execute api {0} : {1} {2}\".format(api, r.json()["},{"line_number":1474,"context_line":"                \u0027messages\u0027][1][\u0027text\u0027], r.status_code)"},{"line_number":1475,"context_line":"            raise Exception(msg)"},{"line_number":1476,"context_line":"        return r.json()"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def _format_to_wwpn(self, string_wwpn):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_69dadf4d","line":1475,"range":{"start_line":1473,"start_character":0,"end_line":1475,"end_character":32},"updated":"2016-12-15 05:03:07.000000000","message":"Same comments as on lines 1450-1454.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1470,"context_line":"        url \u003d self.uri + api"},{"line_number":1471,"context_line":"        r \u003d requests.delete(url, headers\u003dself.headers, verify\u003dself.verify)"},{"line_number":1472,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":1473,"context_line":"            msg \u003d \"Failed to execute api {0} : {1} {2}\".format(api, r.json()["},{"line_number":1474,"context_line":"                \u0027messages\u0027][1][\u0027text\u0027], r.status_code)"},{"line_number":1475,"context_line":"            raise Exception(msg)"},{"line_number":1476,"context_line":"        return r.json()"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def _format_to_wwpn(self, string_wwpn):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_3871eaa8","line":1475,"range":{"start_line":1473,"start_character":0,"end_line":1475,"end_character":32},"in_reply_to":"1a6eadb0_69dadf4d","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0bb45e01277fc849d02a9726ae2244de1a598cc9","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1486,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1487,"context_line":"            raise NimbleAPIException(\"No fc interfaces for array {0}\"."},{"line_number":1488,"context_line":"                                     format(array_name))"},{"line_number":1489,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def enable_group_scoped_target(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c9e933e8","line":1488,"updated":"2016-12-15 05:03:07.000000000","message":"Need _.   Use %s.","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"7c1971d935a6e1a773ec39e9c2d6e5116a3734b3","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1486,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1487,"context_line":"            raise NimbleAPIException(\"No fc interfaces for array {0}\"."},{"line_number":1488,"context_line":"                                     format(array_name))"},{"line_number":1489,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"    def enable_group_scoped_target(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_f8885273","line":1488,"in_reply_to":"1a6eadb0_c9e933e8","updated":"2016-12-15 21:53:39.000000000","message":"Done","commit_id":"a6945d74967bb4a2097cd2737b953a0453996138"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"39f6cc643939eff22f67fb17cb1ecaadcb5b704c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                   \u0027snap\u0027: vol_info[\u0027base_snap_id\u0027],"},{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":168,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_eb24f90d","line":165,"range":{"start_line":163,"start_character":8,"end_line":165,"end_character":58},"updated":"2016-12-15 22:31:56.000000000","message":"Are the parenthesis where you expect them to be on this?","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"fec5519b16ebaa1ea33d52c365a67199815355e6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                   \u0027snap\u0027: vol_info[\u0027base_snap_id\u0027],"},{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":168,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_ee8dbe31","line":165,"range":{"start_line":163,"start_character":8,"end_line":165,"end_character":58},"in_reply_to":"1a6eadb0_9fc9fbae","updated":"2016-12-16 17:17:51.000000000","message":"Everything is an and and one of the items is duplicated?","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dbc81bc2aab1a1855171f49ca2fb6f31e6e54d38","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                   \u0027snap\u0027: vol_info[\u0027base_snap_id\u0027],"},{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":168,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_9fc9fbae","line":165,"range":{"start_line":163,"start_character":8,"end_line":165,"end_character":58},"in_reply_to":"1a6eadb0_eb24f90d","updated":"2016-12-16 00:56:38.000000000","message":"yes, i expect the paranthesis this way.","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"88b8f3ab98c586e0be2547854af622c24587d47f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                   \u0027snap\u0027: vol_info[\u0027base_snap_id\u0027],"},{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":168,"context_line":"            volume_name_prefix \u003d volume[\u0027name\u0027].replace(volume[\u0027id\u0027], \"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_2c817efb","line":165,"range":{"start_line":163,"start_character":8,"end_line":165,"end_character":58},"in_reply_to":"1a6eadb0_ee8dbe31","updated":"2016-12-16 18:09:28.000000000","message":"Got your point.Updated the condition with necessary checks for and condition to be true","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"39f6cc643939eff22f67fb17cb1ecaadcb5b704c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":204,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":206,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":207,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_8b82a5c6","line":204,"range":{"start_line":203,"start_character":1,"end_line":204,"end_character":67},"updated":"2016-12-15 22:31:56.000000000","message":"Another odd if statement. Is this what you mean?","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"88b8f3ab98c586e0be2547854af622c24587d47f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":204,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":206,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":207,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_ec286688","line":204,"range":{"start_line":203,"start_character":1,"end_line":204,"end_character":67},"in_reply_to":"1a6eadb0_6e936e5b","updated":"2016-12-16 18:09:28.000000000","message":"Ok got what you are saying. Short circuit the conditions. Will update the conditions. Thanks","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dbc81bc2aab1a1855171f49ca2fb6f31e6e54d38","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":204,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":206,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":207,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_ff702f74","line":204,"range":{"start_line":203,"start_character":1,"end_line":204,"end_character":67},"in_reply_to":"1a6eadb0_8b82a5c6","updated":"2016-12-16 00:56:38.000000000","message":"Yes,i mean it this way. Included the comments about this change which had got deleted in this change.","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"fec5519b16ebaa1ea33d52c365a67199815355e6","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":201,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":204,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":205,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":206,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":207,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_6e936e5b","line":204,"range":{"start_line":203,"start_character":1,"end_line":204,"end_character":67},"in_reply_to":"1a6eadb0_ff702f74","updated":"2016-12-16 17:17:51.000000000","message":"Everything is an and so ... \nif (backup_snap_name !\u003d \"\" and backup_vol_name !\u003d \"\" and  backup_snap_name is not None):","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"39f6cc643939eff22f67fb17cb1ecaadcb5b704c","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    def _get_model_info(self, volume_name):"},{"line_number":552,"context_line":"        \"\"\"Get model info for the volume.\"\"\""},{"line_number":553,"context_line":"        return ("},{"line_number":554,"context_line":"            {\u0027provider_location\u0027: self._get_provider_location(volume_name),"},{"line_number":555,"context_line":"             \u0027provider_auth\u0027: None})"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_8b6c6509","line":554,"range":{"start_line":554,"start_character":2,"end_line":554,"end_character":74},"updated":"2016-12-15 22:31:56.000000000","message":"I don\u0027t think this can work. self._get_provider_location appears to not return anything.\n\nAh, I think you override this elsewhere.","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dbc81bc2aab1a1855171f49ca2fb6f31e6e54d38","unresolved":false,"context_lines":[{"line_number":551,"context_line":"    def _get_model_info(self, volume_name):"},{"line_number":552,"context_line":"        \"\"\"Get model info for the volume.\"\"\""},{"line_number":553,"context_line":"        return ("},{"line_number":554,"context_line":"            {\u0027provider_location\u0027: self._get_provider_location(volume_name),"},{"line_number":555,"context_line":"             \u0027provider_auth\u0027: None})"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_bf115706","line":554,"range":{"start_line":554,"start_character":2,"end_line":554,"end_character":74},"in_reply_to":"1a6eadb0_8b6c6509","updated":"2016-12-16 00:56:38.000000000","message":"Yes the following takes care of it\n@abc.abstractmethod\n    def _get_provider_location","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"39f6cc643939eff22f67fb17cb1ecaadcb5b704c","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve initiator group \""},{"line_number":1182,"context_line":"                                       \"list\"))"},{"line_number":1183,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1184,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def get_initiator_grp_id_by_name(self, initiator_group_name):"},{"line_number":1187,"context_line":"        api \u003d \u0027initiator_groups\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_2e46ff4e","line":1184,"range":{"start_line":1184,"start_character":15,"end_line":1184,"end_character":31},"updated":"2016-12-15 22:31:56.000000000","message":"You\u0027ve a bunch of these. These are request response packets? Are you guaranteed to have decodeable json and a \u0027data\u0027 structure in all cases? And if not is JSONDecodeError or AttributeError exception acceptable? (Just asking.)","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"fec5519b16ebaa1ea33d52c365a67199815355e6","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve initiator group \""},{"line_number":1182,"context_line":"                                       \"list\"))"},{"line_number":1183,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1184,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def get_initiator_grp_id_by_name(self, initiator_group_name):"},{"line_number":1187,"context_line":"        api \u003d \u0027initiator_groups\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_aea746a5","line":1184,"range":{"start_line":1184,"start_character":15,"end_line":1184,"end_character":31},"in_reply_to":"1a6eadb0_1f1a4b17","updated":"2016-12-16 17:17:51.000000000","message":"I think you\u0027re still going to get other exceptions.","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dbc81bc2aab1a1855171f49ca2fb6f31e6e54d38","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve initiator group \""},{"line_number":1182,"context_line":"                                       \"list\"))"},{"line_number":1183,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1184,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def get_initiator_grp_id_by_name(self, initiator_group_name):"},{"line_number":1187,"context_line":"        api \u003d \u0027initiator_groups\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_1f1a4b17","line":1184,"range":{"start_line":1184,"start_character":15,"end_line":1184,"end_character":31},"in_reply_to":"1a6eadb0_2e46ff4e","updated":"2016-12-16 00:56:38.000000000","message":"I\u0027ve included the exception above if we are unable to retrieve the Json data strings. Since the option of exceptions can be varied , it was better to be part of NimbleAPIException","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"88b8f3ab98c586e0be2547854af622c24587d47f","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"            raise NimbleAPIException(_(\"Unable to retrieve initiator group \""},{"line_number":1182,"context_line":"                                       \"list\"))"},{"line_number":1183,"context_line":"        LOG.info(_LI(\u0027Successfully retrieved InitiatorGrpList\u0027))"},{"line_number":1184,"context_line":"        return r.json()[\u0027data\u0027]"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def get_initiator_grp_id_by_name(self, initiator_group_name):"},{"line_number":1187,"context_line":"        api \u003d \u0027initiator_groups\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_4c431a13","line":1184,"range":{"start_line":1184,"start_character":15,"end_line":1184,"end_character":31},"in_reply_to":"1a6eadb0_aea746a5","updated":"2016-12-16 18:09:28.000000000","message":"The exception would be handled by the self.get() which in turns checks for connection_checker for 2 retries and eventually throws Exception. I will update it to catch generic Exception there","commit_id":"8c633934bb376d394670ca302e23b0afc4f8ae7f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c8f110c7f3b3bd203d3ec78c76d5e192c037d7a3","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_cc99ea7a","line":164,"range":{"start_line":164,"start_character":26,"end_line":164,"end_character":38},"updated":"2016-12-16 18:08:27.000000000","message":"Duplicated check as pointed out in patchset 5.","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"86cce16d04e8bd68f89bc9f508097bc5fdc3096a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                   \u0027vol\u0027: vol_info[\u0027parent_vol_id\u0027]})"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if vol_info[\u0027base_snap_id\u0027] and ("},{"line_number":164,"context_line":"                vol_info[\u0027base_snap_id\u0027]) and ("},{"line_number":165,"context_line":"                    vol_info[\u0027parent_vol_id\u0027] is not None):"},{"line_number":166,"context_line":"            LOG.debug(\"Nimble base-snap exists for volume %(vol)s\","},{"line_number":167,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027]})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_ccbe4aad","line":164,"range":{"start_line":164,"start_character":26,"end_line":164,"end_character":38},"in_reply_to":"1a6eadb0_cc99ea7a","updated":"2016-12-16 18:36:07.000000000","message":"Updated as per Tom\u0027s suggestions","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c8f110c7f3b3bd203d3ec78c76d5e192c037d7a3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        # not need to be preserved after the backup is completed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":212,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":213,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":214,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":215,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_6cd1b622","line":212,"range":{"start_line":212,"start_character":37,"end_line":212,"end_character":53},"updated":"2016-12-16 18:08:27.000000000","message":"Duplicated condition as Tom pointed out in patchset 5.","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"86cce16d04e8bd68f89bc9f508097bc5fdc3096a","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        # not need to be preserved after the backup is completed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if (backup_snap_name !\u003d \"\" and backup_snap_name is not None) and ("},{"line_number":212,"context_line":"           backup_vol_name !\u003d \"\" and backup_snap_name is not None):"},{"line_number":213,"context_line":"            LOG.debug(\"Delete volume backup vol: %(vol)s snap: %(snap)s\","},{"line_number":214,"context_line":"                      {\u0027vol\u0027: backup_vol_name,"},{"line_number":215,"context_line":"                       \u0027snap\u0027: backup_snap_name})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_6cd456eb","line":212,"range":{"start_line":212,"start_character":37,"end_line":212,"end_character":53},"in_reply_to":"1a6eadb0_6cd1b622","updated":"2016-12-16 18:36:07.000000000","message":"Updated as per Tom\u0027s suggestions","commit_id":"cfeb155af788d825120a74ffa77c6d69543da585"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":76,"context_line":"               help\u003d\u0027Nimble Subnet Label\u0027),"},{"line_number":77,"context_line":"    cfg.StrOpt(\u0027nimble_verify_certificate\u0027,"},{"line_number":78,"context_line":"               default\u003dFalse,"},{"line_number":79,"context_line":"               help\u003d\u0027Whether to verify Nimble SSL Certificate\u0027),"},{"line_number":80,"context_line":"    cfg.StrOpt(\u0027nimble_verify_cert_path\u0027,"},{"line_number":81,"context_line":"               help\u003d\u0027Path to Nimble Array SSL certificate\u0027), ]"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_bd8db6d4","line":79,"updated":"2016-12-16 20:32:03.000000000","message":"Is there any reason why you don\u0027t want to verify cert by default?","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"b5c3b5833cf2e4997f94d895110dd163df5dcb4c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"               help\u003d\u0027Nimble Subnet Label\u0027),"},{"line_number":77,"context_line":"    cfg.StrOpt(\u0027nimble_verify_certificate\u0027,"},{"line_number":78,"context_line":"               default\u003dFalse,"},{"line_number":79,"context_line":"               help\u003d\u0027Whether to verify Nimble SSL Certificate\u0027),"},{"line_number":80,"context_line":"    cfg.StrOpt(\u0027nimble_verify_cert_path\u0027,"},{"line_number":81,"context_line":"               help\u003d\u0027Path to Nimble Array SSL certificate\u0027), ]"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_2a0b1925","line":79,"in_reply_to":"1a6eadb0_bd8db6d4","updated":"2016-12-16 21:35:32.000000000","message":"We dont have the feature exposed outside the array yet so till it is done we want to have the certificate verify disabled.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f7a785eb72530d88d4e7335a6bce01b1f90961a","unresolved":false,"context_lines":[{"line_number":692,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":693,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        eventlet.sleep(5)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":698,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_e797a1e9","line":695,"range":{"start_line":695,"start_character":17,"end_line":695,"end_character":22},"updated":"2016-12-16 18:51:46.000000000","message":"This one also need to be mocked out in the unit tests. No need to assert on the call, we just want to make sure the unit test doesn\u0027t sit idle for 5 seconds when run.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dd3276b618abe3ca895fb5b90c4c1bcc1ba18987","unresolved":false,"context_lines":[{"line_number":692,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":693,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        eventlet.sleep(5)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":698,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_c217f342","line":695,"range":{"start_line":695,"start_character":17,"end_line":695,"end_character":22},"in_reply_to":"1a6eadb0_e797a1e9","updated":"2016-12-16 20:50:10.000000000","message":"sure will do","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f7a785eb72530d88d4e7335a6bce01b1f90961a","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                initiator_name)"},{"line_number":894,"context_line":"        LOG.debug(\"initiator_target_map %s\" % init_targ_map)"},{"line_number":895,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":896,"context_line":"        eventlet.sleep(5)"},{"line_number":897,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":898,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_c78d45d4","line":896,"range":{"start_line":896,"start_character":17,"end_line":896,"end_character":22},"updated":"2016-12-16 18:51:46.000000000","message":"Here too.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dd3276b618abe3ca895fb5b90c4c1bcc1ba18987","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                initiator_name)"},{"line_number":894,"context_line":"        LOG.debug(\"initiator_target_map %s\" % init_targ_map)"},{"line_number":895,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":896,"context_line":"        eventlet.sleep(5)"},{"line_number":897,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":898,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_221fc75b","line":896,"range":{"start_line":896,"start_character":17,"end_line":896,"end_character":22},"in_reply_to":"1a6eadb0_c78d45d4","updated":"2016-12-16 20:50:10.000000000","message":"Will do","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":968,"context_line":"            msg \u003d _(\"Failed to login for user %s\"), self.username"},{"line_number":969,"context_line":"            raise Exception(msg)"},{"line_number":970,"context_line":"        self.token_id \u003d r.json()[\u0027data\u0027][\u0027session_token\u0027]"},{"line_number":971,"context_line":"        self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"},{"line_number":972,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_e1bf8ccd","line":969,"updated":"2016-12-16 20:32:03.000000000","message":"Please use a more specific exception.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"b5c3b5833cf2e4997f94d895110dd163df5dcb4c","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        if r.status_code !\u003d 201 and r.status_code !\u003d 200:"},{"line_number":968,"context_line":"            msg \u003d _(\"Failed to login for user %s\"), self.username"},{"line_number":969,"context_line":"            raise Exception(msg)"},{"line_number":970,"context_line":"        self.token_id \u003d r.json()[\u0027data\u0027][\u0027session_token\u0027]"},{"line_number":971,"context_line":"        self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"},{"line_number":972,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_447f6e14","line":969,"in_reply_to":"1a6eadb0_e1bf8ccd","updated":"2016-12-16 21:35:32.000000000","message":"Done","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"        filter \u003d {\u0027role\u0027: role}"},{"line_number":1023,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1024,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1025,"context_line":"            raise Exception(_(\"No %s network config exists\") % role)"},{"line_number":1026,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    def _get_volumetype_extraspecs(self, volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_a1c2f450","line":1025,"updated":"2016-12-16 20:32:03.000000000","message":"Use a more specific exception.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"b5c3b5833cf2e4997f94d895110dd163df5dcb4c","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"        filter \u003d {\u0027role\u0027: role}"},{"line_number":1023,"context_line":"        r \u003d self.get_query(api, filter)"},{"line_number":1024,"context_line":"        if not r.json()[\u0027data\u0027]:"},{"line_number":1025,"context_line":"            raise Exception(_(\"No %s network config exists\") % role)"},{"line_number":1026,"context_line":"        return r.json()[\u0027data\u0027][0]"},{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    def _get_volumetype_extraspecs(self, volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_a4704241","line":1025,"in_reply_to":"1a6eadb0_a1c2f450","updated":"2016-12-16 21:35:32.000000000","message":"Done","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"                LOG.warning(_LW(\u0027Volume %(vol)s : %(state)s\u0027),"},{"line_number":1301,"context_line":"                            {\u0027vol\u0027: volume_name,"},{"line_number":1302,"context_line":"                             \u0027state\u0027: SM_STATE_MSG})"},{"line_number":1303,"context_line":"            # TODO(initiator): Check if we need to ignore the connected"},{"line_number":1304,"context_line":"            # initiator"},{"line_number":1305,"context_line":"            elif ex.message.__contains__(\"Initiators are connected to\"):"},{"line_number":1306,"context_line":"                raise NimbleAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_41a680ae","line":1303,"updated":"2016-12-16 20:32:03.000000000","message":"# TODO(your name or IRC nick)","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"b5c3b5833cf2e4997f94d895110dd163df5dcb4c","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"                LOG.warning(_LW(\u0027Volume %(vol)s : %(state)s\u0027),"},{"line_number":1301,"context_line":"                            {\u0027vol\u0027: volume_name,"},{"line_number":1302,"context_line":"                             \u0027state\u0027: SM_STATE_MSG})"},{"line_number":1303,"context_line":"            # TODO(initiator): Check if we need to ignore the connected"},{"line_number":1304,"context_line":"            # initiator"},{"line_number":1305,"context_line":"            elif ex.message.__contains__(\"Initiators are connected to\"):"},{"line_number":1306,"context_line":"                raise NimbleAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_04981669","line":1303,"in_reply_to":"1a6eadb0_41a680ae","updated":"2016-12-16 21:35:32.000000000","message":"Done","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f7a785eb72530d88d4e7335a6bce01b1f90961a","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                          \u0027snap\u0027: snap_name,"},{"line_number":1319,"context_line":"                          \u0027flag\u0027: online_flag})"},{"line_number":1320,"context_line":"        except Exception as ex:"},{"line_number":1321,"context_line":"            LOG.debug(\"raunak - error :{0}:\".format(ex.message))"},{"line_number":1322,"context_line":"            if ex.message.__contains__(\"Object %s\" % SM_STATE_MSG):"},{"line_number":1323,"context_line":"                LOG.warning(_LW(\u0027Snapshot %(snap)s :%(state)s\u0027),"},{"line_number":1324,"context_line":"                            {\u0027snap\u0027: snap_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_c7df05d4","line":1321,"updated":"2016-12-16 18:51:46.000000000","message":"Leftover debugging? At least should be changed to not use .format() and pass in the ex.message as an arg to the logger.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                          \u0027snap\u0027: snap_name,"},{"line_number":1319,"context_line":"                          \u0027flag\u0027: online_flag})"},{"line_number":1320,"context_line":"        except Exception as ex:"},{"line_number":1321,"context_line":"            LOG.debug(\"raunak - error :{0}:\".format(ex.message))"},{"line_number":1322,"context_line":"            if ex.message.__contains__(\"Object %s\" % SM_STATE_MSG):"},{"line_number":1323,"context_line":"                LOG.warning(_LW(\u0027Snapshot %(snap)s :%(state)s\u0027),"},{"line_number":1324,"context_line":"                            {\u0027snap\u0027: snap_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_81c33837","line":1321,"in_reply_to":"1a6eadb0_c7df05d4","updated":"2016-12-16 20:32:03.000000000","message":"Also please remove your name from the message.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dd3276b618abe3ca895fb5b90c4c1bcc1ba18987","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"                          \u0027snap\u0027: snap_name,"},{"line_number":1319,"context_line":"                          \u0027flag\u0027: online_flag})"},{"line_number":1320,"context_line":"        except Exception as ex:"},{"line_number":1321,"context_line":"            LOG.debug(\"raunak - error :{0}:\".format(ex.message))"},{"line_number":1322,"context_line":"            if ex.message.__contains__(\"Object %s\" % SM_STATE_MSG):"},{"line_number":1323,"context_line":"                LOG.warning(_LW(\u0027Snapshot %(snap)s :%(state)s\u0027),"},{"line_number":1324,"context_line":"                            {\u0027snap\u0027: snap_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_42592334","line":1321,"in_reply_to":"1a6eadb0_c7df05d4","updated":"2016-12-16 20:50:10.000000000","message":"aah my bad. Removed","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2f11bf67afb4709936dbd3ee42bc29c8dd696bee","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        return \u0027:\u0027.join(a + b for a, b in zip(* [iter(string_wwpn)] * 2))"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"    def get_fc_interface_list(self, array_name):"},{"line_number":1495,"context_line":"        \"\"\"getFibreChannelInterfaceList API to get FC interfaces on array\"\"\""},{"line_number":1496,"context_line":"        api \u003d \u0027fibre_channel_interfaces/detail\u0027"},{"line_number":1497,"context_line":"        filter \u003d {\u0027array_name_or_serial\u0027: array_name}"},{"line_number":1498,"context_line":"        r \u003d self.get_query(api, filter)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_81f17897","line":1495,"updated":"2016-12-16 20:32:03.000000000","message":"Missing ending period in the docstring.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"b5c3b5833cf2e4997f94d895110dd163df5dcb4c","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        return \u0027:\u0027.join(a + b for a, b in zip(* [iter(string_wwpn)] * 2))"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"    def get_fc_interface_list(self, array_name):"},{"line_number":1495,"context_line":"        \"\"\"getFibreChannelInterfaceList API to get FC interfaces on array\"\"\""},{"line_number":1496,"context_line":"        api \u003d \u0027fibre_channel_interfaces/detail\u0027"},{"line_number":1497,"context_line":"        filter \u003d {\u0027array_name_or_serial\u0027: array_name}"},{"line_number":1498,"context_line":"        r \u003d self.get_query(api, filter)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_a4a762a5","line":1495,"in_reply_to":"1a6eadb0_81f17897","updated":"2016-12-16 21:35:32.000000000","message":"Done","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":62,"context_line":"SM_STATE_MSG \u003d \"is already in requested state\""},{"line_number":63,"context_line":"LUN_ID \u003d \u00270\u0027"},{"line_number":64,"context_line":"WARN_LEVEL \u003d 80"},{"line_number":65,"context_line":"NimbleDefaultVersion \u003d 1"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_7505db12","line":65,"updated":"2016-12-18 23:41:13.000000000","message":"DEFAULT_SLEEP \u003d 5","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"SM_STATE_MSG \u003d \"is already in requested state\""},{"line_number":63,"context_line":"LUN_ID \u003d \u00270\u0027"},{"line_number":64,"context_line":"WARN_LEVEL \u003d 80"},{"line_number":65,"context_line":"NimbleDefaultVersion \u003d 1"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_2efdcd6e","line":65,"in_reply_to":"1a6eadb0_7505db12","updated":"2016-12-19 06:48:08.000000000","message":"Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def delete_volume(self, volume):"},{"line_number":195,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":196,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":197,"context_line":"        eventlet.sleep(5)"},{"line_number":198,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":199,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":200,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_5508df2d","line":197,"updated":"2016-12-18 23:41:13.000000000","message":"eventlet.sleep(DEFAULT_SLEEP)","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def delete_volume(self, volume):"},{"line_number":195,"context_line":"        \"\"\"Delete the specified volume.\"\"\""},{"line_number":196,"context_line":"        backup_snap_name, backup_vol_name \u003d self.is_volume_backup_clone(volume)"},{"line_number":197,"context_line":"        eventlet.sleep(5)"},{"line_number":198,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":199,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":200,"context_line":"        self.APIExecutor.delete_vol(volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_ce4539b4","line":197,"in_reply_to":"1a6eadb0_5508df2d","updated":"2016-12-19 06:48:08.000000000","message":"Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":692,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":693,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        eventlet.sleep(5)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":698,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_f029f98a","line":695,"updated":"2016-12-18 23:41:13.000000000","message":"eventlet.sleep(DEFAULT_SLEEP)","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":692,"context_line":"            raise NimbleDriverException(_(\u0027No initiator group found for \u0027"},{"line_number":693,"context_line":"                                          \u0027initiator %s\u0027) % initiator_name)"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        eventlet.sleep(5)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    def _get_provider_location(self, volume_name):"},{"line_number":698,"context_line":"        \"\"\"Get volume iqn for initiator access.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_6e250509","line":695,"in_reply_to":"1a6eadb0_f029f98a","updated":"2016-12-19 06:48:08.000000000","message":"Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                initiator_name)"},{"line_number":894,"context_line":"        LOG.debug(\"initiator_target_map %s\" % init_targ_map)"},{"line_number":895,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":896,"context_line":"        eventlet.sleep(5)"},{"line_number":897,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":898,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_101f555c","line":896,"updated":"2016-12-18 23:41:13.000000000","message":"eventlet.sleep(DEFAULT_SLEEP)","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"afbe04e6796b6b8bd8afa8cb138c2f7ab1e31fb0","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                initiator_name)"},{"line_number":894,"context_line":"        LOG.debug(\"initiator_target_map %s\" % init_targ_map)"},{"line_number":895,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":896,"context_line":"        eventlet.sleep(5)"},{"line_number":897,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":898,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_8e226100","line":896,"in_reply_to":"1a6eadb0_101f555c","updated":"2016-12-19 06:48:08.000000000","message":"Done","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"927a0e9639c2d2a1859af411642db92688e55834","unresolved":false,"context_lines":[{"line_number":1286,"context_line":"    def online_vol(self, volume_name, online_flag):"},{"line_number":1287,"context_line":"        volume_id \u003d self.get_volume_id_by_name(volume_name)"},{"line_number":1288,"context_line":"        LOG.debug(\"volume_id %s\", six.text_type(volume_id))"},{"line_number":1289,"context_line":"        eventlet.sleep(5)"},{"line_number":1290,"context_line":"        api \u003d \"volumes/\" + six.text_type(volume_id)"},{"line_number":1291,"context_line":"        data \u003d {\u0027data\u0027: {\"online\": online_flag}}"},{"line_number":1292,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6eadb0_302451ae","line":1289,"updated":"2016-12-18 23:41:13.000000000","message":"eventlet.sleep(DEFAULT_SLEEP)","commit_id":"3be2e41496946b3c64cb738a4dd7cc358e579ed6"}],"releasenotes/notes/nimble-rest-api-support-75c2324ee462d026.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Migrate all the cinder worflows for Nimble Storage"},{"line_number":4,"context_line":"    to use REST from SOAP"},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Rest API Support "},{"line_number":7,"context_line":"  - Group Scope Target Support "}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1a6eadb0_635bf2f6","line":4,"range":{"start_line":3,"start_character":4,"end_line":4,"end_character":25},"updated":"2016-12-14 18:52:00.000000000","message":"This is not appropriate for the prelude section.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fd3005b1a28b3c2893bd8dee0aaf60ac8ceac8e7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    Migrate all the cinder worflows for Nimble Storage"},{"line_number":4,"context_line":"    to use REST from SOAP"},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - Rest API Support "},{"line_number":7,"context_line":"  - Group Scope Target Support "}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1a6eadb0_c3184621","line":7,"range":{"start_line":6,"start_character":3,"end_line":7,"end_character":30},"updated":"2016-12-14 18:52:00.000000000","message":"Extra spaces on the end of each line and it really doesn\u0027t make any sense in the release notes.\n\nNot sure if this is really release note worthy since it\u0027s all internal to the driver, but I suppose it might be interesting for Nimble customers. Maybe change to something like:\n\nfeatures:\n  - The Nimble backend driver has been updated to use REST\n    for array communication.","commit_id":"580518825c450a6916ae53e3d63ec0a5bccbb984"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9f7a785eb72530d88d4e7335a6bce01b1f90961a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The Nimble backend driver has been updated to use REST"},{"line_number":4,"context_line":"    for array communication"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a6eadb0_47b85575","line":4,"updated":"2016-12-16 18:51:46.000000000","message":"Since you need to do another update, please end with a period.","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"dd3276b618abe3ca895fb5b90c4c1bcc1ba18987","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - The Nimble backend driver has been updated to use REST"},{"line_number":4,"context_line":"    for array communication"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a6eadb0_226d07cc","line":4,"in_reply_to":"1a6eadb0_47b85575","updated":"2016-12-16 20:50:10.000000000","message":"Done","commit_id":"bf908be456876e207b9b92d1945245b3728db6a1"}]}
