)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11224,"name":"Swami Reddy","email":"swamireddy@gmail.com","username":"swamireddy"},"change_message_id":"5abcf6d414e97123ef56f18c450d6cd2e69fb3e5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-06-22 18:33:36 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"FalconStor: New Cinder driver in Newton"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iea3ff7f1b8a055979da10d2d484c8a2ba0c48bac"},{"line_number":10,"context_line":"Implements: blueprint falconstor-freestor-cinder-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_454e0997","line":8,"updated":"2016-06-23 09:08:45.000000000","message":"Add \"DocImpact\" flag here.","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"7bdf801b1ce8f377f0c6b9733c64cda07441458e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-06-22 18:33:36 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"FalconStor: New Cinder driver in Newton"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iea3ff7f1b8a055979da10d2d484c8a2ba0c48bac"},{"line_number":10,"context_line":"Implements: blueprint falconstor-freestor-cinder-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1aa78d24_554937cf","line":8,"in_reply_to":"3aaa91ec_454e0997","updated":"2016-07-07 04:58:24.000000000","message":"Done","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"}],"cinder/tests/unit/test_falconstor_fss.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"fc3cd52c5776a207ea8cc46b66b32cb9350041cc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"API_RESPONSE \u003d {\u0027rc\u0027: 0}"},{"line_number":37,"context_line":"ISCSI_VOLUME_BACKEND_NAME \u003d \"FSSISCSIDriver\""},{"line_number":38,"context_line":"SESSION_ID \u003d \"a76d506c-abcd-1234-efgh-710e1fd90527\""},{"line_number":39,"context_line":"VOLUME_ID \u003d \u00276068ea6d-f221-4213-bde9-f1b50aecdf36\u0027"},{"line_number":40,"context_line":"ADD_VOLUME_ID \u003d \u00276068ed7f-f231-4283-bge9-f1b51aecdf36\u0027"},{"line_number":41,"context_line":"GROUP_ID \u003d \u0027d03338a9-9115-48a3-8dfc-35cdfcdc15a7\u0027"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_0bdbab7d","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":49},"updated":"2016-06-22 11:48:38.000000000","message":"You can use fake VOLUME_ID from fake_constants here.","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"7bdf801b1ce8f377f0c6b9733c64cda07441458e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"API_RESPONSE \u003d {\u0027rc\u0027: 0}"},{"line_number":37,"context_line":"ISCSI_VOLUME_BACKEND_NAME \u003d \"FSSISCSIDriver\""},{"line_number":38,"context_line":"SESSION_ID \u003d \"a76d506c-abcd-1234-efgh-710e1fd90527\""},{"line_number":39,"context_line":"VOLUME_ID \u003d \u00276068ea6d-f221-4213-bde9-f1b50aecdf36\u0027"},{"line_number":40,"context_line":"ADD_VOLUME_ID \u003d \u00276068ed7f-f231-4283-bge9-f1b51aecdf36\u0027"},{"line_number":41,"context_line":"GROUP_ID \u003d \u0027d03338a9-9115-48a3-8dfc-35cdfcdc15a7\u0027"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_7531d359","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":49},"in_reply_to":"3aaa91ec_0bdbab7d","updated":"2016-07-07 04:58:24.000000000","message":"Done","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"fc3cd52c5776a207ea8cc46b66b32cb9350041cc","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        self.driver.proxy.extend_vdev.assert_called_once_with(VOLUME_NAME,"},{"line_number":250,"context_line":"                                                              VOLUME[\"size\"],"},{"line_number":251,"context_line":"                                                              EXTENT_NEW_SIZE)"},{"line_number":252,"context_line":"        self.assertTrue(result is None)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027_get_fss_volume_name\u0027)"},{"line_number":255,"context_line":"    def test_clone_volume(self, mock__get_fss_volume_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_ebb0dfdf","line":252,"range":{"start_line":252,"start_character":13,"end_line":252,"end_character":23},"updated":"2016-06-22 11:48:38.000000000","message":"Use self.assertIsNone","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"fc3cd52c5776a207ea8cc46b66b32cb9350041cc","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            return_value\u003dAPI_RESPONSE)"},{"line_number":287,"context_line":"        result \u003d self.driver.create_snapshot(SNAPSHOT)"},{"line_number":288,"context_line":"        self.driver.proxy.create_snapshot.assert_called_once_with(SNAPSHOT)"},{"line_number":289,"context_line":"        self.assertEqual(result, {\u0027metadata\u0027: SNAPSHOT_METADATA})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def test_delete_snapshot(self):"},{"line_number":292,"context_line":"        self.driver.proxy.delete_snapshot \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_2bb14790","line":289,"range":{"start_line":289,"start_character":8,"end_line":289,"end_character":65},"updated":"2016-06-22 11:48:38.000000000","message":"assertEqual parameters should be (expected, observed).","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"7bdf801b1ce8f377f0c6b9733c64cda07441458e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            return_value\u003dAPI_RESPONSE)"},{"line_number":287,"context_line":"        result \u003d self.driver.create_snapshot(SNAPSHOT)"},{"line_number":288,"context_line":"        self.driver.proxy.create_snapshot.assert_called_once_with(SNAPSHOT)"},{"line_number":289,"context_line":"        self.assertEqual(result, {\u0027metadata\u0027: SNAPSHOT_METADATA})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def test_delete_snapshot(self):"},{"line_number":292,"context_line":"        self.driver.proxy.delete_snapshot \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_b537bb4b","line":289,"range":{"start_line":289,"start_character":8,"end_line":289,"end_character":65},"in_reply_to":"3aaa91ec_2bb14790","updated":"2016-07-07 04:58:24.000000000","message":"Done","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.volume.drivers.falconstor import fc"},{"line_number":22,"context_line":"from cinder.volume.drivers.falconstor import iscsi"},{"line_number":23,"context_line":"from cinder.volume.drivers.falconstor import rest_proxy as proxy"},{"line_number":24,"context_line":"from copy import deepcopy"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DRIVER_PATH \u003d \"cinder.volume.drivers.falconstor\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_6981778f","line":24,"updated":"2016-07-10 12:05:24.000000000","message":"Move this up to the top.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.volume.drivers.falconstor import fc"},{"line_number":22,"context_line":"from cinder.volume.drivers.falconstor import iscsi"},{"line_number":23,"context_line":"from cinder.volume.drivers.falconstor import rest_proxy as proxy"},{"line_number":24,"context_line":"from copy import deepcopy"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"DRIVER_PATH \u003d \"cinder.volume.drivers.falconstor\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_d2492b90","line":24,"in_reply_to":"1aa78d24_6981778f","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.driver.proxy.extend_vdev.assert_called_once_with(VOLUME_NAME,"},{"line_number":251,"context_line":"                                                              VOLUME[\"size\"],"},{"line_number":252,"context_line":"                                                              EXTENT_NEW_SIZE)"},{"line_number":253,"context_line":"        self.assertTrue(result is None)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027_get_fss_volume_name\u0027)"},{"line_number":256,"context_line":"    def test_clone_volume(self, mock__get_fss_volume_name):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_497c7bb5","line":253,"updated":"2016-07-10 12:05:24.000000000","message":"Use assertIsNone()","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.driver.proxy.extend_vdev.assert_called_once_with(VOLUME_NAME,"},{"line_number":251,"context_line":"                                                              VOLUME[\"size\"],"},{"line_number":252,"context_line":"                                                              EXTENT_NEW_SIZE)"},{"line_number":253,"context_line":"        self.assertTrue(result is None)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027_get_fss_volume_name\u0027)"},{"line_number":256,"context_line":"    def test_clone_volume(self, mock__get_fss_volume_name):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_b24c5f9e","line":253,"in_reply_to":"1aa78d24_497c7bb5","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        mock__get_fss_volume_name.assert_any_call(VOLUME)"},{"line_number":267,"context_line":"        mock__get_fss_volume_name.assert_any_call(SRC_VOL)"},{"line_number":268,"context_line":"        assert 2 \u003d\u003d mock__get_fss_volume_name.call_count"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self.driver.proxy.extend_vdev(VOLUME_NAME, VOLUME[\"size\"],"},{"line_number":271,"context_line":"                                      SRC_VOL[\"size\"])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_894ca39e","line":268,"updated":"2016-07-10 12:05:24.000000000","message":"Use self.assertEqual(2, moc__get_fss_volume_name.call_count)","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        mock__get_fss_volume_name.assert_any_call(VOLUME)"},{"line_number":267,"context_line":"        mock__get_fss_volume_name.assert_any_call(SRC_VOL)"},{"line_number":268,"context_line":"        assert 2 \u003d\u003d mock__get_fss_volume_name.call_count"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self.driver.proxy.extend_vdev(VOLUME_NAME, VOLUME[\"size\"],"},{"line_number":271,"context_line":"                                      SRC_VOL[\"size\"])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_f246e779","line":268,"in_reply_to":"1aa78d24_894ca39e","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def test_delete_volume(self, mock_delete_vdev):"},{"line_number":278,"context_line":"        result \u003d self.driver.delete_volume(VOLUME)"},{"line_number":279,"context_line":"        mock_delete_vdev.assert_called_once_with(VOLUME)"},{"line_number":280,"context_line":"        self.assertTrue(result is None)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027create_snapshot\u0027,"},{"line_number":283,"context_line":"                                        return_value\u003dAPI_RESPONSE)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_e943a76a","line":280,"updated":"2016-07-10 12:05:24.000000000","message":"assertIsNone","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def test_delete_volume(self, mock_delete_vdev):"},{"line_number":278,"context_line":"        result \u003d self.driver.delete_volume(VOLUME)"},{"line_number":279,"context_line":"        mock_delete_vdev.assert_called_once_with(VOLUME)"},{"line_number":280,"context_line":"        self.assertTrue(result is None)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027create_snapshot\u0027,"},{"line_number":283,"context_line":"                                        return_value\u003dAPI_RESPONSE)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_32598f5c","line":280,"in_reply_to":"1aa78d24_e943a76a","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    def test_delete_snapshot(self, mock_delete_snapshot):"},{"line_number":294,"context_line":"        result \u003d self.driver.delete_snapshot(SNAPSHOT)"},{"line_number":295,"context_line":"        mock_delete_snapshot.assert_called_once_with(SNAPSHOT)"},{"line_number":296,"context_line":"        self.assertTrue(result is None)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027create_volume_from_snapshot\u0027,"},{"line_number":299,"context_line":"                       return_value\u003d(VOLUME_NAME, VOLUME_METADATA))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_c946ab7a","line":296,"updated":"2016-07-10 12:05:24.000000000","message":"Same","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    def test_delete_snapshot(self, mock_delete_snapshot):"},{"line_number":294,"context_line":"        result \u003d self.driver.delete_snapshot(SNAPSHOT)"},{"line_number":295,"context_line":"        mock_delete_snapshot.assert_called_once_with(SNAPSHOT)"},{"line_number":296,"context_line":"        self.assertTrue(result is None)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027create_volume_from_snapshot\u0027,"},{"line_number":299,"context_line":"                       return_value\u003d(VOLUME_NAME, VOLUME_METADATA))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_b233bf12","line":296,"in_reply_to":"1aa78d24_c946ab7a","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        FSS_HOSTS \u003d []"},{"line_number":409,"context_line":"        FSS_HOSTS.append(PRIMARY_IP)"},{"line_number":410,"context_line":"        ret \u003d self.driver.initialize_connection(VOLUME, ISCSI_CONNECTOR)"},{"line_number":411,"context_line":"        mock_initialize_connection_iscsi. \\"},{"line_number":412,"context_line":"            assert_called_once_with(VOLUME, ISCSI_CONNECTOR, FSS_HOSTS)"},{"line_number":413,"context_line":"        result \u003d deepcopy(ISCSI_INFO)"},{"line_number":414,"context_line":"        self.assertDictMatch(result, ret)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_a9307f08","line":411,"range":{"start_line":411,"start_character":42,"end_line":411,"end_character":43},"updated":"2016-07-10 12:05:24.000000000","message":"Refactor throughout to avoid using \\ for line continuation.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        FSS_HOSTS \u003d []"},{"line_number":409,"context_line":"        FSS_HOSTS.append(PRIMARY_IP)"},{"line_number":410,"context_line":"        ret \u003d self.driver.initialize_connection(VOLUME, ISCSI_CONNECTOR)"},{"line_number":411,"context_line":"        mock_initialize_connection_iscsi. \\"},{"line_number":412,"context_line":"            assert_called_once_with(VOLUME, ISCSI_CONNECTOR, FSS_HOSTS)"},{"line_number":413,"context_line":"        result \u003d deepcopy(ISCSI_INFO)"},{"line_number":414,"context_line":"        self.assertDictMatch(result, ret)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_92584358","line":411,"range":{"start_line":411,"start_character":42,"end_line":411,"end_character":43},"in_reply_to":"1aa78d24_a9307f08","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":821,"context_line":"            FAKE_ID)"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    @mock.patch.object(proxy.RESTProxy, \u0027initialize_connection_iscsi\u0027)"},{"line_number":824,"context_line":"    def test_iscsi_initialize_connection(self,"},{"line_number":825,"context_line":"                                         mock_initialize_connection_iscsi):"},{"line_number":826,"context_line":"        fss_hosts \u003d []"},{"line_number":827,"context_line":"        fss_hosts.append(PRIMARY_IP)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_b37a4075","line":824,"updated":"2016-07-12 17:23:07.000000000","message":"It looks like time.sleep and random_sleep will be called in these tests. Please mock out time.sleep to avoid unnecessary wait time during test runs.","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fc96c28c9f7a93f737ce197a267990da8a832b4e","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        ret \u003d self.proxy.clone_volume(VOLUME_NAME, SRC_VOL_NAME)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        # with mock.patch(\u0027time.sleep\u0027) as mock_sleep:"},{"line_number":586,"context_line":"        #     self.FSS_MOCK.sync_mirror(FAKE_ID)"},{"line_number":587,"context_line":"        #     mock_sleep.assert_called_once_with(1)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        self.FSS_MOCK.create_mirror.assert_called_once_with(FAKE_ID,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_ce5c4380","line":586,"updated":"2016-07-13 17:55:05.000000000","message":"Commented out code needs to be removed.","commit_id":"035f46390c2529679d182e60351010e8449df7a0"}],"cinder/volume/drivers/falconstor/fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.i18n import _, _LE"},{"line_number":22,"context_line":"from cinder.volume.drivers.falconstor import fss_common"},{"line_number":23,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_e93a87e6","line":24,"updated":"2016-07-10 12:05:24.000000000","message":"Organize imports.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.i18n import _, _LE"},{"line_number":22,"context_line":"from cinder.volume.drivers.falconstor import fss_common"},{"line_number":23,"context_line":"from cinder.zonemanager import utils as fczm_utils"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_b21a9f7a","line":24,"in_reply_to":"1aa78d24_e93a87e6","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FSSFCDriver(fss_common.FalconstorBaseDriver):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    \"\"\"Implements commands for FalconStor FSS FC management."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_692fb7a1","line":29,"updated":"2016-07-10 12:05:24.000000000","message":"Please add @interface.volumedriver decorator to all concrete driver implementations.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FSSFCDriver(fss_common.FalconstorBaseDriver):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    \"\"\"Implements commands for FalconStor FSS FC management."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_12129362","line":29,"in_reply_to":"1aa78d24_692fb7a1","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"}],"cinder/volume/drivers/falconstor/fss_common.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d28eaf814807eac8336e4168097e6b8966710873","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                volume_name, fss_metadata \u003d self.proxy.create_vdev(volume)"},{"line_number":129,"context_line":"            fss_metadata.update(volume_metadata)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if \u0027metadata\u0027 in volume and type(volume[\u0027metadata\u0027]) is dict:"},{"line_number":132,"context_line":"            fss_metadata.update(volume[\u0027metadata\u0027])"},{"line_number":133,"context_line":"        if volume[\u0027consistencygroup_id\u0027]:"},{"line_number":134,"context_line":"            self.proxy._add_volume_to_consistency_group("}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_43d5f340","line":131,"range":{"start_line":131,"start_character":41,"end_line":131,"end_character":59},"updated":"2016-06-30 20:42:55.000000000","message":"volume.metadata is not None","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d28eaf814807eac8336e4168097e6b8966710873","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if \u0027metadata\u0027 in volume and type(volume[\u0027metadata\u0027]) is dict:"},{"line_number":132,"context_line":"            fss_metadata.update(volume[\u0027metadata\u0027])"},{"line_number":133,"context_line":"        if volume[\u0027consistencygroup_id\u0027]:"},{"line_number":134,"context_line":"            self.proxy._add_volume_to_consistency_group("},{"line_number":135,"context_line":"                volume[\u0027consistencygroup_id\u0027],"},{"line_number":136,"context_line":"                volume_name"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_e34dff3e","line":133,"range":{"start_line":133,"start_character":11,"end_line":133,"end_character":39},"updated":"2016-06-30 20:42:55.000000000","message":"volume.consistencygroup_id","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d28eaf814807eac8336e4168097e6b8966710873","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":149,"context_line":"        new_vol_name \u003d self.proxy._get_fss_volume_name(volume)"},{"line_number":150,"context_line":"        src_name \u003d self.proxy._get_fss_volume_name(src_vref)"},{"line_number":151,"context_line":"        vol_size \u003d volume[\"size\"]"},{"line_number":152,"context_line":"        src_size \u003d src_vref[\"size\"]"},{"line_number":153,"context_line":"        fss_metadata \u003d self.proxy.clone_volume(new_vol_name, src_name)"},{"line_number":154,"context_line":"        self.proxy.extend_vdev(new_vol_name, src_size, vol_size)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_a30db7e9","line":151,"range":{"start_line":151,"start_character":19,"end_line":151,"end_character":33},"updated":"2016-06-30 20:42:55.000000000","message":"volume.size\n\nsame for all volume, and snapshot objects. More details in cinder/objects/*","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from . import *  # NOQA"},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":27,"context_line":"from cinder.image import image_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_c93d0bdf","line":24,"updated":"2016-07-10 12:05:24.000000000","message":"Should remove this.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from . import *  # NOQA"},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":27,"context_line":"from cinder.image import image_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_520c1b42","line":24,"in_reply_to":"1aa78d24_c93d0bdf","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume.drivers.falconstor import rest_proxy"},{"line_number":30,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":31,"context_line":"from oslo_utils import excutils"},{"line_number":32,"context_line":"from oslo_utils import units"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FalconstorBaseDriver(san.SanDriver,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_2925afc1","line":32,"updated":"2016-07-10 12:05:24.000000000","message":"Group solo imports with six in third party grouping.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume.drivers.falconstor import rest_proxy"},{"line_number":30,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":31,"context_line":"from oslo_utils import excutils"},{"line_number":32,"context_line":"from oslo_utils import units"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FalconstorBaseDriver(san.SanDriver,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_3207cf1e","line":32,"in_reply_to":"1aa78d24_2925afc1","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                         \u0027and naming start with OpenStack-\u0027))"},{"line_number":92,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":93,"context_line":"        except Exception as e:"},{"line_number":94,"context_line":"            LOG.error(_LE(\"FSS failed to get pool list due to %s.\"), e)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _check_multipath(self):"},{"line_number":97,"context_line":"        if self.configuration.use_multipath_for_image_xfer:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_7328d886","line":94,"updated":"2016-07-12 17:23:07.000000000","message":"May be better to just do LOG.exception here to get the full exception information logged.","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":229,"context_line":"                    LOG.error(_LE("},{"line_number":230,"context_line":"                        \"Resizing %(id)s failed with message: %(msg)s. \""},{"line_number":231,"context_line":"                        \"Cleaning volume. \"), {\u0027id\u0027: volume[\"id\"],"},{"line_number":232,"context_line":"                                               \u0027msg\u0027: err.reason})"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if type(volume[\u0027metadata\u0027]) is dict:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_df943038","line":231,"range":{"start_line":231,"start_character":41,"end_line":231,"end_character":42},"updated":"2016-07-12 17:23:07.000000000","message":"Remove extra space if you do an update.","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"}],"cinder/volume/drivers/falconstor/iscsi.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"fc3cd52c5776a207ea8cc46b66b32cb9350041cc","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    VERSION \u003d \"2.02\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":51,"context_line":"        super(FSSISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_d109502e","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":20},"updated":"2016-06-22 11:48:38.000000000","message":"Why is this in version 2? o.o","commit_id":"fe6ae239bdb78cad236a706d2589d5f041c50ce7"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a6726c29b2da79f0b87cd5f985f8cdc2fe1335e8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Volume driver for FalconStor FSS storage system."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This driver requires FSS-8.00-8865 or later."}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_96d5e21c","line":15,"updated":"2016-06-28 16:20:28.000000000","message":"http://docs.openstack.org/developer/hacking/#docstrings\n\nplease see at other places too","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"}],"cinder/volume/drivers/falconstor/rest_proxy.py":[{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a6726c29b2da79f0b87cd5f985f8cdc2fe1335e8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from . import *  # NOQA"},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _, _LE, _LW"},{"line_number":25,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_561b7aca","line":22,"range":{"start_line":22,"start_character":19,"end_line":22,"end_character":23},"updated":"2016-06-28 16:20:28.000000000","message":"is this Ok?","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a6726c29b2da79f0b87cd5f985f8cdc2fe1335e8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def _encode_name(self, name):"},{"line_number":98,"context_line":"        uuid_str \u003d name.replace(\"-\", \"\")"},{"line_number":99,"context_line":"        vol_uuid \u003d uuid.UUID(\u0027urn:uuid:%s\u0027 % uuid_str)"},{"line_number":100,"context_line":"        newuuid \u003d base64.urlsafe_b64encode(vol_uuid.bytes)\\"},{"line_number":101,"context_line":"            .decode(\u0027utf-8\u0027).strip(\u0027\u003d\u0027)"},{"line_number":102,"context_line":"        return \"cinder-%s\" % newuuid"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def do_setup(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_f96d39cd","line":101,"range":{"start_line":100,"start_character":8,"end_line":101,"end_character":39},"updated":"2016-06-28 16:20:28.000000000","message":"try this, it it works, then no need of using \u0027\\\u0027\nnewuuid \u003d base64.urlsafe_b64encode(vol_uuid.bytes).decode(\n          \u0027utf-8\u0027).strip(\u0027\u003d\u0027)\nplease check flake8 too","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a6726c29b2da79f0b87cd5f985f8cdc2fe1335e8","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            return 0"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _convert_size_to_mb(self, size):"},{"line_number":115,"context_line":"        return int(size * units.Gi / 1024 / 1024)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _get_pools_info(self):"},{"line_number":118,"context_line":"        qpools \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_794949d0","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":48},"updated":"2016-06-28 16:20:28.000000000","message":"volume[\u0027size\u0027] will be always a integer.\nAlso, I think size * units.Ki should be good","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"a6726c29b2da79f0b87cd5f985f8cdc2fe1335e8","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            output \u003d self.list_pool_info()"},{"line_number":122,"context_line":"            if \"storagepools\" in output[\u0027data\u0027]:"},{"line_number":123,"context_line":"                for item in output[\u0027data\u0027][\u0027storagepools\u0027]:"},{"line_number":124,"context_line":"                    if item[\u0027name\u0027].startswith(GROUP_PREFIX) and self. \\"},{"line_number":125,"context_line":"                            fss_defined_pool \u003d\u003d item[\u0027id\u0027]:"},{"line_number":126,"context_line":"                        poolid \u003d int(item[\u0027id\u0027])"},{"line_number":127,"context_line":"                        qpools.append(poolid)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_bffef102","line":124,"range":{"start_line":124,"start_character":71,"end_line":124,"end_character":72},"updated":"2016-06-28 16:20:28.000000000","message":"try to avoid this \u0027\\\u0027 everywhere.\nUse ().","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                        qpools.append(poolid)"},{"line_number":128,"context_line":"                        break"},{"line_number":129,"context_line":"            if not qpools:"},{"line_number":130,"context_line":"                msg \u003d \u0027The storage pool infomation is empty or not correct\u0027"},{"line_number":131,"context_line":"                raise exception.DriverNotInitialized(msg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # Query pool detail information"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_d8216cb6","line":130,"range":{"start_line":130,"start_character":74,"end_line":130,"end_character":75},"updated":"2016-06-28 14:57:57.000000000","message":"for user-facing message, please use _()\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    self._convert_size_to_gb(output[\u0027data\u0027][\u0027used\u0027])"},{"line_number":141,"context_line":"                poolinfo[\u0027QoS_support\u0027] \u003d False"},{"line_number":142,"context_line":"                poolinfo[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":143,"context_line":"        except Exception as e:"},{"line_number":144,"context_line":"            LOG.error(_LE(\u0027Failed to get server info due to %s.\u0027), e)"},{"line_number":145,"context_line":"        return poolinfo"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_b834604a","line":143,"updated":"2016-06-28 14:57:57.000000000","message":"except Exception:\n    LOG.exception(_LE(\u0027Failed to get server info\u0027))      would be good","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        if \u0027thinprovisioned\u0027 in volume_metadata:"},{"line_number":203,"context_line":"            if volume_metadata[\u0027thinprovisioned\u0027] is False:"},{"line_number":204,"context_line":"                msg \u003d (\u0027If you want to create a thin provisioning volume,\u0027"},{"line_number":205,"context_line":"                       \u0027 this param must be True.\u0027)"},{"line_number":206,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if \u0027thinsize\u0027 in volume_metadata:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_d3478d1b","line":205,"range":{"start_line":205,"start_character":48,"end_line":205,"end_character":51},"updated":"2016-06-28 14:57:57.000000000","message":"same","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            thin_size \u003d int(volume_metadata[\u0027thinsize\u0027])"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if size \u003c 10:"},{"line_number":212,"context_line":"            msg \u003d \u0027The resource is a thin device, minimum size is 10240 MB\u0027"},{"line_number":213,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_f3f8c9c6","line":212,"range":{"start_line":212,"start_character":74,"end_line":212,"end_character":75},"updated":"2016-06-28 14:57:57.000000000","message":"same","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            try:"},{"line_number":216,"context_line":"                if thin_size \u003e size:"},{"line_number":217,"context_line":"                    msg \u003d \u0027The allocated size must less than total size.\u0027"},{"line_number":218,"context_line":"                    raise exception.VolumeBackendAPIException(msg)"},{"line_number":219,"context_line":"            except Exception:"},{"line_number":220,"context_line":"                msg \u003d \u0027The resource is a thin device, thin size is invalid.\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_d3c66d48","line":217,"range":{"start_line":217,"start_character":71,"end_line":217,"end_character":73},"updated":"2016-06-28 14:57:57.000000000","message":"same","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                    msg \u003d \u0027The allocated size must less than total size.\u0027"},{"line_number":218,"context_line":"                    raise exception.VolumeBackendAPIException(msg)"},{"line_number":219,"context_line":"            except Exception:"},{"line_number":220,"context_line":"                msg \u003d \u0027The resource is a thin device, thin size is invalid.\u0027"},{"line_number":221,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"            thin_size \u003d self._convert_size_to_mb(thin_size)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_b3e641e6","line":220,"range":{"start_line":220,"start_character":74,"end_line":220,"end_character":76},"updated":"2016-06-28 14:57:57.000000000","message":"check this at other places too","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1bf858938d7cb23ef866875098d9ef18f439f06d","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"            if output[\u0027rc\u0027] \u003d\u003d 0:"},{"line_number":1484,"context_line":"                return output"},{"line_number":1485,"context_line":"        except Exception:"},{"line_number":1486,"context_line":"            msg \u003d (\u0027Can not found this error code:%(msg)s.\u0027 %"},{"line_number":1487,"context_line":"                   {\"msg\": err_id})"},{"line_number":1488,"context_line":"            raise exception.APIException(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_f853886a","line":1486,"range":{"start_line":1486,"start_character":60,"end_line":1486,"end_character":61},"updated":"2016-06-28 14:57:57.000000000","message":"for user-facing message, please use _()\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"c7ddbfe8cc8e002c56c6cfc83865685f876d33da"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from . import *  # NOQA"},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":25,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_69e5f7a6","line":22,"updated":"2016-07-10 12:05:24.000000000","message":"Why is this needed? Please don\u0027t import *.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from . import *  # NOQA"},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":25,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_323cefbe","line":22,"in_reply_to":"1aa78d24_69e5f7a6","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from . import *  # NOQA"},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from six.moves import http_client"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_09d6f3c2","line":25,"updated":"2016-07-10 12:05:24.000000000","message":"These need to be regrouped. Imports should be grouped by standard libraries, third party libraries, and local modules.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from . import *  # NOQA"},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":25,"context_line":"from oslo_log import log as logging"},{"line_number":26,"context_line":"from oslo_utils import excutils"},{"line_number":27,"context_line":"from oslo_utils import units"},{"line_number":28,"context_line":"from six.moves import http_client"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_72467750","line":25,"in_reply_to":"1aa78d24_09d6f3c2","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            output \u003d self.list_pool_info()"},{"line_number":121,"context_line":"            if \"storagepools\" in output[\u0027data\u0027]:"},{"line_number":122,"context_line":"                for item in output[\u0027data\u0027][\u0027storagepools\u0027]:"},{"line_number":123,"context_line":"                    if item[\u0027name\u0027].startswith(GROUP_PREFIX) and self. \\"},{"line_number":124,"context_line":"                            fss_defined_pool \u003d\u003d item[\u0027id\u0027]:"},{"line_number":125,"context_line":"                        poolid \u003d int(item[\u0027id\u0027])"},{"line_number":126,"context_line":"                        qpools.append(poolid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_a9ed1f90","line":123,"range":{"start_line":123,"start_character":71,"end_line":123,"end_character":72},"updated":"2016-07-10 12:05:24.000000000","message":"Wrap conditions in () to avoid use of \\.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            output \u003d self.list_pool_info()"},{"line_number":121,"context_line":"            if \"storagepools\" in output[\u0027data\u0027]:"},{"line_number":122,"context_line":"                for item in output[\u0027data\u0027][\u0027storagepools\u0027]:"},{"line_number":123,"context_line":"                    if item[\u0027name\u0027].startswith(GROUP_PREFIX) and self. \\"},{"line_number":124,"context_line":"                            fss_defined_pool \u003d\u003d item[\u0027id\u0027]:"},{"line_number":125,"context_line":"                        poolid \u003d int(item[\u0027id\u0027])"},{"line_number":126,"context_line":"                        qpools.append(poolid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_5241bb38","line":123,"range":{"start_line":123,"start_character":71,"end_line":123,"end_character":72},"in_reply_to":"1aa78d24_a9ed1f90","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                        break"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if not qpools:"},{"line_number":130,"context_line":"                msg \u003d \u0027The storage pool infomation is empty or not correct\u0027"},{"line_number":131,"context_line":"                raise exception.DriverNotInitialized(msg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # Query pool detail information"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_e9e727aa","line":130,"updated":"2016-07-10 12:05:24.000000000","message":"Needs _() translation marker.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                        break"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if not qpools:"},{"line_number":130,"context_line":"                msg \u003d \u0027The storage pool infomation is empty or not correct\u0027"},{"line_number":131,"context_line":"                raise exception.DriverNotInitialized(msg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # Query pool detail information"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_f259c736","line":130,"in_reply_to":"1aa78d24_e9e727aa","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        return self.FSS.list_physicaladapter_info(adapter_id)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _checking_adapter_type(self, id):"},{"line_number":154,"context_line":"        type \u003d \u0027\u0027"},{"line_number":155,"context_line":"        output \u003d self.list_physicaladapter_info()"},{"line_number":156,"context_line":"        if \"physicaladapters\" in output[\u0027data\u0027]:"},{"line_number":157,"context_line":"            physicaladapters \u003d output[\u0027data\u0027][\u0027physicaladapters\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_2902cf3e","line":154,"range":{"start_line":154,"start_character":8,"end_line":154,"end_character":12},"updated":"2016-07-10 12:05:24.000000000","message":"Variables should really not use keywords for names.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        return self.FSS.list_physicaladapter_info(adapter_id)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _checking_adapter_type(self, id):"},{"line_number":154,"context_line":"        type \u003d \u0027\u0027"},{"line_number":155,"context_line":"        output \u003d self.list_physicaladapter_info()"},{"line_number":156,"context_line":"        if \"physicaladapters\" in output[\u0027data\u0027]:"},{"line_number":157,"context_line":"            physicaladapters \u003d output[\u0027data\u0027][\u0027physicaladapters\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_12573303","line":154,"range":{"start_line":154,"start_character":8,"end_line":154,"end_character":12},"in_reply_to":"1aa78d24_2902cf3e","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            thin_size \u003d int(volume_metadata[\u0027thinsize\u0027])"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if size \u003c 10:"},{"line_number":212,"context_line":"            msg \u003d _(\u0027The resource is a thin device, minimum size is 10240 MB\u0027)"},{"line_number":213,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_a9bb5f74","line":212,"updated":"2016-07-10 12:05:24.000000000","message":"Is this a backend restriction? Default cinder volume size is 1G.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            thin_size \u003d int(volume_metadata[\u0027thinsize\u0027])"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if size \u003c 10:"},{"line_number":212,"context_line":"            msg \u003d _(\u0027The resource is a thin device, minimum size is 10240 MB\u0027)"},{"line_number":213,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_9234c3de","line":212,"in_reply_to":"1aa78d24_a9bb5f74","updated":"2016-07-11 09:34:02.000000000","message":"This api is creating a thin provision lun for a FSS volume. To avoid confusing, the message already corrected at next patch.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                   {\"volumeName\": volume_name})"},{"line_number":245,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if type is not None and type \u003d\u003d FSS_SINGLE_TYPE:"},{"line_number":248,"context_line":"            vid \u003d \u0027\u0027.join(str(x) for x in vid)"},{"line_number":249,"context_line":"        return vid"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_c9b86b78","line":247,"range":{"start_line":247,"start_character":11,"end_line":247,"end_character":32},"updated":"2016-07-10 12:05:24.000000000","message":"This is not necessary. Just do \"if type \u003d\u003d FSS_SINGLE_TYPE:\", though type should not be used as a variable name.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                   {\"volumeName\": volume_name})"},{"line_number":245,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if type is not None and type \u003d\u003d FSS_SINGLE_TYPE:"},{"line_number":248,"context_line":"            vid \u003d \u0027\u0027.join(str(x) for x in vid)"},{"line_number":249,"context_line":"        return vid"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_3707c11e","line":247,"range":{"start_line":247,"start_character":11,"end_line":247,"end_character":32},"in_reply_to":"1aa78d24_c9b86b78","updated":"2016-07-11 09:34:02.000000000","message":"This should be exist since sometime this variable will be None. Using the \"fss_type\" variable instead of \"type\" in next patch.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        if not snap_name:"},{"line_number":350,"context_line":"            if (\u0027metadata\u0027 in snapshot and"},{"line_number":351,"context_line":"               \u0027fss_tm_comment\u0027 in snapshot[\u0027metadata\u0027]):"},{"line_number":352,"context_line":"                snap_name \u003d snapshot[\u0027metadata\u0027][\u0027fss_tm_comment\u0027]"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        tm_info \u003d self.FSS.get_timemark(vid)"},{"line_number":355,"context_line":"        rawtimestamp \u003d self._get_timestamp(tm_info, snap_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_49a59b45","line":352,"updated":"2016-07-10 12:05:24.000000000","message":"Indentation of this line or previous line should be changed so the conditional line doesn\u0027t line up with the if block code.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        if not snap_name:"},{"line_number":350,"context_line":"            if (\u0027metadata\u0027 in snapshot and"},{"line_number":351,"context_line":"               \u0027fss_tm_comment\u0027 in snapshot[\u0027metadata\u0027]):"},{"line_number":352,"context_line":"                snap_name \u003d snapshot[\u0027metadata\u0027][\u0027fss_tm_comment\u0027]"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        tm_info \u003d self.FSS.get_timemark(vid)"},{"line_number":355,"context_line":"        rawtimestamp \u003d self._get_timestamp(tm_info, snap_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_77a5c945","line":352,"in_reply_to":"1aa78d24_49a59b45","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"15df21536c20112e4f7e87c63e8cf117c6a6fe16","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                    pass"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"            if self.fss_debug:"},{"line_number":964,"context_line":"                LOG.info(_LI(\"[FSS_RESTAPI]\u003d\u003d@json_data: %s \u003d\u003d\") % json_data)"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"            if response.status \u003d\u003d 200:"},{"line_number":967,"context_line":"                return json_data"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_c96fcbfa","line":964,"range":{"start_line":964,"start_character":64,"end_line":964,"end_character":66},"updated":"2016-07-10 12:05:24.000000000","message":"Change % to , to pass json_data in to the logger as an argument.","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":17959,"name":"Sofie Huang","email":"Soffie.Huang@falconstor.com","username":"Soffie"},"change_message_id":"c85dbea57f20d0e5a77053cafc80ec50d27628ac","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                    pass"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"            if self.fss_debug:"},{"line_number":964,"context_line":"                LOG.info(_LI(\"[FSS_RESTAPI]\u003d\u003d@json_data: %s \u003d\u003d\") % json_data)"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"            if response.status \u003d\u003d 200:"},{"line_number":967,"context_line":"                return json_data"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_37ab4120","line":964,"range":{"start_line":964,"start_character":64,"end_line":964,"end_character":66},"in_reply_to":"1aa78d24_c96fcbfa","updated":"2016-07-11 09:34:02.000000000","message":"Done","commit_id":"8defd65d130078214e2d8a2eeb232e2bce462ca2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4577b91df5c62a657fd46421e1334bff28f9ce55","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                        break"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            if not qpools:"},{"line_number":139,"context_line":"                msg \u003d _(\u0027The storage pool infomation is empty or not correct\u0027)"},{"line_number":140,"context_line":"                raise exception.DriverNotInitialized(msg)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"            # Query pool detail information"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_2215a59a","line":139,"updated":"2016-07-11 15:03:39.000000000","message":"Typo: infomation -\u003e information","commit_id":"57da49b5e202892f6ba537c305f1ac1dfad10607"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4577b91df5c62a657fd46421e1334bff28f9ce55","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                poolinfo[\u0027QoS_support\u0027] \u003d False"},{"line_number":151,"context_line":"                poolinfo[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":152,"context_line":"        except Exception as e:"},{"line_number":153,"context_line":"            LOG.error(_LE(\u0027Failed to get server info due to %s.\u0027), e)"},{"line_number":154,"context_line":"        return poolinfo"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def list_pool_info(self, pool_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_a207d51b","line":153,"updated":"2016-07-11 15:03:39.000000000","message":"Please use LOG.exception() here.  Otherwise the original failure context is lost.","commit_id":"57da49b5e202892f6ba537c305f1ac1dfad10607"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4577b91df5c62a657fd46421e1334bff28f9ce55","unresolved":false,"context_lines":[{"line_number":587,"context_line":"    def _check_iocluster_state(self):"},{"line_number":588,"context_line":"        output \u003d self.FSS.get_server_options()"},{"line_number":589,"context_line":"        if \u0027iocluster\u0027 not in output[\u0027data\u0027]:"},{"line_number":590,"context_line":"            raise ValueError(_(\u0027No iocluster information in given data\u0027))"},{"line_number":591,"context_line":"        return output[\u0027data\u0027][\u0027iocluster\u0027]"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"    def list_fc_target_wwpn(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_655a172c","line":590,"updated":"2016-07-11 15:03:39.000000000","message":"This (and the other ValueErrors in this file) should raise VolumeBackendAPIException or VolumeDriverException instead.","commit_id":"57da49b5e202892f6ba537c305f1ac1dfad10607"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4577b91df5c62a657fd46421e1334bff28f9ce55","unresolved":false,"context_lines":[{"line_number":616,"context_line":"    def list_iscsi_target_info(self, target_id\u003dNone):"},{"line_number":617,"context_line":"        return self.FSS.list_iscsi_target_info(target_id)"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"    def _get_fc_host(self, connector):"},{"line_number":620,"context_line":"        target_info \u003d self.list_iscsi_target_info()"},{"line_number":621,"context_line":"        if \u0027data\u0027 not in target_info:"},{"line_number":622,"context_line":"            raise ValueError(_(\u0027No data information in return info.\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_4231d10a","line":619,"updated":"2016-07-11 15:03:39.000000000","message":"Method is not called from anywhere?","commit_id":"57da49b5e202892f6ba537c305f1ac1dfad10607"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                poolinfo[\u0027QoS_support\u0027] \u003d False"},{"line_number":151,"context_line":"                poolinfo[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":152,"context_line":"        except Exception as e:"},{"line_number":153,"context_line":"            LOG.exception(_LE(\u0027Failed to get server info due to %s.\u0027), e)"},{"line_number":154,"context_line":"        return poolinfo"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def list_pool_info(self, pool_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_bf1de4bf","line":153,"range":{"start_line":153,"start_character":69,"end_line":153,"end_character":72},"updated":"2016-07-12 17:23:07.000000000","message":"Remove this. You should not include an exception in the message if you are using LOG.exception.","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                    gid \u003d item[\u0027id\u0027]"},{"line_number":268,"context_line":"                    break"},{"line_number":269,"context_line":"            if gid \u003d\u003d \u0027\u0027:"},{"line_number":270,"context_line":"                msg \u003d (_(\u0027Can not found consistency group: %s.\u0027) % group_name)"},{"line_number":271,"context_line":"                raise exception.VolumeBackendAPIException(msg)"},{"line_number":272,"context_line":"        return gid"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_bf4b24b0","line":270,"range":{"start_line":270,"start_character":34,"end_line":270,"end_character":39},"updated":"2016-07-12 17:23:07.000000000","message":"/found/find/","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":717,"context_line":"        volume_name \u003d self._get_fss_volume_name(volume)"},{"line_number":718,"context_line":"        vid \u003d self._get_fss_vid_from_name(volume_name, FSS_SINGLE_TYPE)"},{"line_number":719,"context_line":"        if not vid:"},{"line_number":720,"context_line":"            msg \u003d (_(\u0027Can not found cinder volume - %s.\u0027) % volume_name)"},{"line_number":721,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"        available_initiator, fc_initiators_info \u003d ("}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_df68b0f7","line":720,"range":{"start_line":720,"start_character":30,"end_line":720,"end_character":35},"updated":"2016-07-12 17:23:07.000000000","message":"/found/find/","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e19079c39902330061ae550821e07255a0da58a4","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"            if time.time() \u003e starttime + timeout:"},{"line_number":1083,"context_line":"                msg \u003d (_(\u0027FSS get mirror sync timeout on vid: %s \u0027) % vid)"},{"line_number":1084,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1085,"context_line":"            elif self._check_mirror_sync_status(vid) is True:"},{"line_number":1086,"context_line":"                break"},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    def delete_vdev(self, vid):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_5f2320bd","line":1085,"range":{"start_line":1085,"start_character":52,"end_line":1085,"end_character":60},"updated":"2016-07-12 17:23:07.000000000","message":"\"is True\" is redundant here.","commit_id":"657423d2c9034ab5df512a6866f65998db158d08"}]}
