)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ningwei \u003cjxxiaohou331500@yeah.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-13 02:57:51 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added backend driver for huawei FusionStorage."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I26a809adb7bef4370eb53c634dc9bae0c74b4a8a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_057f92e0","line":7,"range":{"start_line":7,"start_character":45,"end_line":7,"end_character":46},"updated":"2016-06-14 01:40:31.000000000","message":"Remove period \u0027.\u0027","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"}],"cinder/tests/unit/volume/drivers/fusionstorage/test_fspythonapi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import utils\r"},{"line_number":24,"context_line":"from cinder.volume.drivers.fusionstorage import fspythonapi\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"class FSPythonApiTestCase(test.TestCase):\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_add61425","line":26,"updated":"2016-07-08 02:54:51.000000000","message":"Please remove. We should not have any logging in the unit tests.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import utils\r"},{"line_number":24,"context_line":"from cinder.volume.drivers.fusionstorage import fspythonapi\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"class FSPythonApiTestCase(test.TestCase):\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_a302a5b2","line":26,"in_reply_to":"1aa78d24_add61425","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"}],"cinder/tests/unit/volume/drivers/test_dsware.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import utils\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"from cinder.volume import configuration as conf\r"},{"line_number":28,"context_line":"from cinder.volume.drivers.dsware import DSWAREDriver\r"},{"line_number":29,"context_line":"from cinder.volume.drivers.fspythonapi import FSPythonApi\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"from mock import Mock\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d62b9880","line":28,"updated":"2016-06-13 16:07:24.000000000","message":"Import only modules, not individual classes.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import utils\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"from cinder.volume import configuration as conf\r"},{"line_number":28,"context_line":"from cinder.volume.drivers.dsware import DSWAREDriver\r"},{"line_number":29,"context_line":"from cinder.volume.drivers.fspythonapi import FSPythonApi\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"from mock import Mock\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_07e22ca0","line":28,"in_reply_to":"7aa08908_d62b9880","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from mock import patch\r"},{"line_number":33,"context_line":"from oslo_log import log as logging\r"},{"line_number":34,"context_line":"from oslo_config import cfg\r"},{"line_number":35,"context_line":"from oslo_service import loopingcall\r"},{"line_number":36,"context_line":"\r"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":38,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_ab7e65ac","line":35,"updated":"2016-06-13 16:07:24.000000000","message":"Imports should be grouped into standard modules, third party modules, then local modules. So group all cinder imports afer the mock and oslo imports.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from mock import patch\r"},{"line_number":33,"context_line":"from oslo_log import log as logging\r"},{"line_number":34,"context_line":"from oslo_config import cfg\r"},{"line_number":35,"context_line":"from oslo_service import loopingcall\r"},{"line_number":36,"context_line":"\r"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":38,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_47eef48b","line":35,"in_reply_to":"7aa08908_ab7e65ac","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from oslo_config import cfg\r"},{"line_number":35,"context_line":"from oslo_service import loopingcall\r"},{"line_number":36,"context_line":"\r"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":38,"context_line":"\r"},{"line_number":39,"context_line":"test_volume \u003d {\u0027name\u0027: \u0027test_vol1\u0027,\r"},{"line_number":40,"context_line":"               \u0027size\u0027: 4,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_2b41d563","line":37,"updated":"2016-06-13 16:07:24.000000000","message":"Remove logging from unit tests.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from oslo_config import cfg\r"},{"line_number":35,"context_line":"from oslo_service import loopingcall\r"},{"line_number":36,"context_line":"\r"},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":38,"context_line":"\r"},{"line_number":39,"context_line":"test_volume \u003d {\u0027name\u0027: \u0027test_vol1\u0027,\r"},{"line_number":40,"context_line":"               \u0027size\u0027: 4,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_27f3e874","line":37,"in_reply_to":"7aa08908_2b41d563","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.dsware_client \u003d FSPythonApi()\r"},{"line_number":71,"context_line":"        self.manage_ip \u003d \u0027127.0.0.1\u0027\r"},{"line_number":72,"context_line":"        self.pool_type \u003d \u00271\u0027\r"},{"line_number":73,"context_line":"     \r"},{"line_number":74,"context_line":"    def do_setup(self, context):\r"},{"line_number":75,"context_line":"        pass\r"},{"line_number":76,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_ab55c51e","line":73,"updated":"2016-06-13 16:07:24.000000000","message":"Extra spaces here that should be removed.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.dsware_client \u003d FSPythonApi()\r"},{"line_number":71,"context_line":"        self.manage_ip \u003d \u0027127.0.0.1\u0027\r"},{"line_number":72,"context_line":"        self.pool_type \u003d \u00271\u0027\r"},{"line_number":73,"context_line":"     \r"},{"line_number":74,"context_line":"    def do_setup(self, context):\r"},{"line_number":75,"context_line":"        pass\r"},{"line_number":76,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_67a05043","line":73,"in_reply_to":"7aa08908_ab55c51e","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"class DSwareDriverTestCase(test.TestCase):\r"},{"line_number":83,"context_line":"    def setUp(self):\r"},{"line_number":84,"context_line":"        super(DSwareDriverTestCase, self).setUp()\r"},{"line_number":85,"context_line":"        # do we need this line ?\r"},{"line_number":86,"context_line":"        self.stubs.Set(time, \u0027sleep\u0027, Fake_sleep)\r"},{"line_number":87,"context_line":"        self.driver \u003d FakeDSWAREDriver()\r"},{"line_number":88,"context_line":"        test_volume[\u0027volume_metadata\u0027] \u003d [metadata()]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_cb365102","line":85,"updated":"2016-06-13 16:07:24.000000000","message":"Please remove.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"class DSwareDriverTestCase(test.TestCase):\r"},{"line_number":83,"context_line":"    def setUp(self):\r"},{"line_number":84,"context_line":"        super(DSwareDriverTestCase, self).setUp()\r"},{"line_number":85,"context_line":"        # do we need this line ?\r"},{"line_number":86,"context_line":"        self.stubs.Set(time, \u0027sleep\u0027, Fake_sleep)\r"},{"line_number":87,"context_line":"        self.driver \u003d FakeDSWAREDriver()\r"},{"line_number":88,"context_line":"        test_volume[\u0027volume_metadata\u0027] \u003d [metadata()]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_8769fcfa","line":85,"in_reply_to":"7aa08908_cb365102","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def setUp(self):\r"},{"line_number":84,"context_line":"        super(DSwareDriverTestCase, self).setUp()\r"},{"line_number":85,"context_line":"        # do we need this line ?\r"},{"line_number":86,"context_line":"        self.stubs.Set(time, \u0027sleep\u0027, Fake_sleep)\r"},{"line_number":87,"context_line":"        self.driver \u003d FakeDSWAREDriver()\r"},{"line_number":88,"context_line":"        test_volume[\u0027volume_metadata\u0027] \u003d [metadata()]\r"},{"line_number":89,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6b0d9d3d","line":86,"updated":"2016-06-13 16:07:24.000000000","message":"Should just mock time.sleep.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def setUp(self):\r"},{"line_number":84,"context_line":"        super(DSwareDriverTestCase, self).setUp()\r"},{"line_number":85,"context_line":"        # do we need this line ?\r"},{"line_number":86,"context_line":"        self.stubs.Set(time, \u0027sleep\u0027, Fake_sleep)\r"},{"line_number":87,"context_line":"        self.driver \u003d FakeDSWAREDriver()\r"},{"line_number":88,"context_line":"        test_volume[\u0027volume_metadata\u0027] \u003d [metadata()]\r"},{"line_number":89,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_8740dc60","line":86,"in_reply_to":"7aa08908_6b0d9d3d","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        pass\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"    def test_private_get_poolid_from_host(self):\r"},{"line_number":100,"context_line":"        retval \u003d \\\r"},{"line_number":101,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":102,"context_line":"        self.assertEqual(retval, \u00270\u0027)\r"},{"line_number":103,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_76146443","line":100,"updated":"2016-06-13 16:07:24.000000000","message":"Avoid using \\ for line continuation. For this case, I would just break after the opening ( in the _get_poolid_from_host call.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        pass\r"},{"line_number":98,"context_line":"\r"},{"line_number":99,"context_line":"    def test_private_get_poolid_from_host(self):\r"},{"line_number":100,"context_line":"        retval \u003d \\\r"},{"line_number":101,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":102,"context_line":"        self.assertEqual(retval, \u00270\u0027)\r"},{"line_number":103,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_07550c1d","line":100,"in_reply_to":"7aa08908_76146443","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":102,"context_line":"        self.assertEqual(retval, \u00270\u0027)\r"},{"line_number":103,"context_line":"\r"},{"line_number":104,"context_line":"        retval \u003d \\\r"},{"line_number":105,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy@0\u0027)\r"},{"line_number":106,"context_line":"        self.assertEqual(retval, self.driver.pool_type)\r"},{"line_number":107,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b61a4c6d","line":104,"updated":"2016-06-13 16:07:24.000000000","message":"Same.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":102,"context_line":"        self.assertEqual(retval, \u00270\u0027)\r"},{"line_number":103,"context_line":"\r"},{"line_number":104,"context_line":"        retval \u003d \\\r"},{"line_number":105,"context_line":"            self.driver._get_poolid_from_host(\u0027abc@fusionstorage_sas2copy@0\u0027)\r"},{"line_number":106,"context_line":"        self.assertEqual(retval, self.driver.pool_type)\r"},{"line_number":107,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_274f6893","line":104,"in_reply_to":"7aa08908_b61a4c6d","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        retval \u003d self.driver._get_poolid_from_host(None)\r"},{"line_number":109,"context_line":"        self.assertEqual(retval, self.driver.pool_type)\r"},{"line_number":110,"context_line":"\r"},{"line_number":111,"context_line":"    @patch.object(FSPythonApi, \u0027create_volume\u0027, Mock())\r"},{"line_number":112,"context_line":"    @patch.object(FSPythonApi, \u0027query_dsware_version\u0027, Mock())\r"},{"line_number":113,"context_line":"    @patch.object(DSWAREDriver, \u0027_get_poolid_from_host\u0027, Mock())\r"},{"line_number":114,"context_line":"    def test_private_create_volume(self):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d679d894","line":111,"range":{"start_line":111,"start_character":46,"end_line":111,"end_character":54},"updated":"2016-06-13 16:07:24.000000000","message":"I don\u0027t believe this is necessary.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        retval \u003d self.driver._get_poolid_from_host(None)\r"},{"line_number":109,"context_line":"        self.assertEqual(retval, self.driver.pool_type)\r"},{"line_number":110,"context_line":"\r"},{"line_number":111,"context_line":"    @patch.object(FSPythonApi, \u0027create_volume\u0027, Mock())\r"},{"line_number":112,"context_line":"    @patch.object(FSPythonApi, \u0027query_dsware_version\u0027, Mock())\r"},{"line_number":113,"context_line":"    @patch.object(DSWAREDriver, \u0027_get_poolid_from_host\u0027, Mock())\r"},{"line_number":114,"context_line":"    def test_private_create_volume(self):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c77784d2","line":111,"range":{"start_line":111,"start_character":46,"end_line":111,"end_character":54},"in_reply_to":"7aa08908_d679d894","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.driver._create_volume(test_volume[\u0027name\u0027],\r"},{"line_number":132,"context_line":"                                   test_volume[\u0027size\u0027],\r"},{"line_number":133,"context_line":"                                   True,\r"},{"line_number":134,"context_line":"                                   \u0027abcE@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":135,"context_line":"        self.driver._create_volume(test_volume[\u0027name\u0027],\r"},{"line_number":136,"context_line":"                                   test_volume[\u0027size\u0027],\r"},{"line_number":137,"context_line":"                                   False,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_36f01cfd","line":134,"updated":"2016-06-13 16:07:24.000000000","message":"Each of these should be their own unit test. It\u0027s generally not recommended to test several things in one test.\n\nThese should also have some assertions validating expecting behavior.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.driver._create_volume(test_volume[\u0027name\u0027],\r"},{"line_number":132,"context_line":"                                   test_volume[\u0027size\u0027],\r"},{"line_number":133,"context_line":"                                   True,\r"},{"line_number":134,"context_line":"                                   \u0027abcE@fusionstorage_sas2copy#0\u0027)\r"},{"line_number":135,"context_line":"        self.driver._create_volume(test_volume[\u0027name\u0027],\r"},{"line_number":136,"context_line":"                                   test_volume[\u0027size\u0027],\r"},{"line_number":137,"context_line":"                                   False,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_87e45ca8","line":134,"in_reply_to":"7aa08908_36f01cfd","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                             \u0027father_name\u0027: \u0027vol1_father\u0027, \u0027status\u0027: \u00270\u0027,\r"},{"line_number":293,"context_line":"                             \u0027vol_size\u0027: \u00271024\u0027, \u0027real_size\u0027: \u00271024\u0027,\r"},{"line_number":294,"context_line":"                             \u0027pool_id\u0027: \u0027pool1\u0027, \u0027create_time\u0027: \u002701/01/2015\u0027}\r"},{"line_number":295,"context_line":"                             \r"},{"line_number":296,"context_line":"        query_result_doing \u003d {\u0027result\u0027: 0, \u0027vol_name\u0027: \u0027vol1\u0027,\r"},{"line_number":297,"context_line":"                             \u0027father_name\u0027: \u0027vol1_father\u0027, \u0027status\u0027: \u00276\u0027,\r"},{"line_number":298,"context_line":"                             \u0027vol_size\u0027: \u00271024\u0027, \u0027real_size\u0027: \u00271024\u0027,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d6d55843","line":295,"updated":"2016-06-13 16:07:24.000000000","message":"Lot\u0027s of extra spaces to remove here and below.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                             \u0027father_name\u0027: \u0027vol1_father\u0027, \u0027status\u0027: \u00270\u0027,\r"},{"line_number":293,"context_line":"                             \u0027vol_size\u0027: \u00271024\u0027, \u0027real_size\u0027: \u00271024\u0027,\r"},{"line_number":294,"context_line":"                             \u0027pool_id\u0027: \u0027pool1\u0027, \u0027create_time\u0027: \u002701/01/2015\u0027}\r"},{"line_number":295,"context_line":"                             \r"},{"line_number":296,"context_line":"        query_result_doing \u003d {\u0027result\u0027: 0, \u0027vol_name\u0027: \u0027vol1\u0027,\r"},{"line_number":297,"context_line":"                             \u0027father_name\u0027: \u0027vol1_father\u0027, \u0027status\u0027: \u00276\u0027,\r"},{"line_number":298,"context_line":"                             \u0027vol_size\u0027: \u00271024\u0027, \u0027real_size\u0027: \u00271024\u0027,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c725c4c2","line":295,"in_reply_to":"7aa08908_d6d55843","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                                             test_volume[\u0027name\u0027]).start(interval\u003dself.driver.check_cloned_interval).wait \u003d Mock(side_effect \u003d [True, False])\r"},{"line_number":320,"context_line":"        \r"},{"line_number":321,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":322,"context_line":"        self.assertEqual(retval, True)\r"},{"line_number":323,"context_line":"        \r"},{"line_number":324,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":325,"context_line":"        self.assertEqual(retval, False)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d63c3895","line":322,"range":{"start_line":322,"start_character":13,"end_line":322,"end_character":24},"updated":"2016-06-13 16:07:24.000000000","message":"Use self.assertTrue","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                                             test_volume[\u0027name\u0027]).start(interval\u003dself.driver.check_cloned_interval).wait \u003d Mock(side_effect \u003d [True, False])\r"},{"line_number":320,"context_line":"        \r"},{"line_number":321,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":322,"context_line":"        self.assertEqual(retval, True)\r"},{"line_number":323,"context_line":"        \r"},{"line_number":324,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":325,"context_line":"        self.assertEqual(retval, False)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_271da873","line":322,"range":{"start_line":322,"start_character":13,"end_line":322,"end_character":24},"in_reply_to":"7aa08908_d63c3895","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        self.assertEqual(retval, True)\r"},{"line_number":323,"context_line":"        \r"},{"line_number":324,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":325,"context_line":"        self.assertEqual(retval, False)\r"},{"line_number":326,"context_line":"        \r"},{"line_number":327,"context_line":"\r"},{"line_number":328,"context_line":"    def test_private_analyse_output(self):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b6bb6c0e","line":325,"range":{"start_line":325,"start_character":13,"end_line":325,"end_character":24},"updated":"2016-06-13 16:07:24.000000000","message":"Use self.assertFalse","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        self.assertEqual(retval, True)\r"},{"line_number":323,"context_line":"        \r"},{"line_number":324,"context_line":"        retval \u003d self.driver._wait_for_create_cloned_volume_finish_timer(test_volume[\u0027name\u0027])\r"},{"line_number":325,"context_line":"        self.assertEqual(retval, False)\r"},{"line_number":326,"context_line":"        \r"},{"line_number":327,"context_line":"\r"},{"line_number":328,"context_line":"    def test_private_analyse_output(self):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_67133066","line":325,"range":{"start_line":325,"start_character":13,"end_line":325,"end_character":24},"in_reply_to":"7aa08908_b6bb6c0e","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        # attached successful\r"},{"line_number":345,"context_line":"        retval \u003d self.driver._attach_volume(test_volume[\u0027name\u0027],\r"},{"line_number":346,"context_line":"                                            self.driver.manage_ip)\r"},{"line_number":347,"context_line":"        self.assertEqual(retval,\r"},{"line_number":348,"context_line":"                         {\u0027dev_addr\u0027: \u0027/dev/sdb\u0027,\r"},{"line_number":349,"context_line":"                          \u0027ret_desc\u0027: \u0027success\u0027, \u0027ret_code\u0027: \u00270\u0027})\r"},{"line_number":350,"context_line":"        # attached failure\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d66398af","line":347,"updated":"2016-06-13 16:07:24.000000000","message":"Assertion argument order should be (Expected value, actual value)","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        # attached successful\r"},{"line_number":345,"context_line":"        retval \u003d self.driver._attach_volume(test_volume[\u0027name\u0027],\r"},{"line_number":346,"context_line":"                                            self.driver.manage_ip)\r"},{"line_number":347,"context_line":"        self.assertEqual(retval,\r"},{"line_number":348,"context_line":"                         {\u0027dev_addr\u0027: \u0027/dev/sdb\u0027,\r"},{"line_number":349,"context_line":"                          \u0027ret_desc\u0027: \u0027success\u0027, \u0027ret_code\u0027: \u00270\u0027})\r"},{"line_number":350,"context_line":"        # attached failure\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c702e43d","line":347,"in_reply_to":"7aa08908_d66398af","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"}],"cinder/tests/unit/volume/drivers/test_fspythonapi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.volume.drivers.fspythonapi import FSPythonApi\r"},{"line_number":22,"context_line":"from mock import Mock\r"},{"line_number":23,"context_line":"from mock import patch\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"import time\r"},{"line_number":26,"context_line":"import os\r"},{"line_number":27,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_966630b9","line":24,"updated":"2016-06-13 16:07:24.000000000","message":"Fix import order.\nDon\u0027t import individual classes.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.volume.drivers.fspythonapi import FSPythonApi\r"},{"line_number":22,"context_line":"from mock import Mock\r"},{"line_number":23,"context_line":"from mock import patch\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"import time\r"},{"line_number":26,"context_line":"import os\r"},{"line_number":27,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_276808f5","line":24,"in_reply_to":"7aa08908_966630b9","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"}],"cinder/volume/drivers/dsware.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4\r"},{"line_number":2,"context_line":"\"\"\"\r"},{"line_number":3,"context_line":"Driver for Huawei Dsware.\r"},{"line_number":4,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f62cd44b","line":1,"updated":"2016-06-13 16:07:24.000000000","message":"Remove vim markers.\nAdded apache license header.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4\r"},{"line_number":2,"context_line":"\"\"\"\r"},{"line_number":3,"context_line":"Driver for Huawei Dsware.\r"},{"line_number":4,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_07034c11","line":1,"in_reply_to":"7aa08908_f62cd44b","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"import re\r"},{"line_number":10,"context_line":"import six\r"},{"line_number":11,"context_line":"\r"},{"line_number":12,"context_line":"from oslo_config import cfg\r"},{"line_number":13,"context_line":"\r"},{"line_number":14,"context_line":"from cinder import exception\r"},{"line_number":15,"context_line":"from cinder.image import image_utils\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_16288032","line":12,"updated":"2016-06-13 16:07:24.000000000","message":"Organize imports.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"import re\r"},{"line_number":10,"context_line":"import six\r"},{"line_number":11,"context_line":"\r"},{"line_number":12,"context_line":"from oslo_config import cfg\r"},{"line_number":13,"context_line":"\r"},{"line_number":14,"context_line":"from cinder import exception\r"},{"line_number":15,"context_line":"from cinder.image import image_utils\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_52ffd400","line":12,"in_reply_to":"7aa08908_16288032","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"volume_opts \u003d [\r"},{"line_number":28,"context_line":"    cfg.BoolOpt(\u0027dsware_isthin\u0027,\r"},{"line_number":29,"context_line":"                default \u003d False,\r"},{"line_number":30,"context_line":"                help \u003d \u0027default isthin flag value\u0027),\r"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027dsware_manager\u0027,\r"},{"line_number":32,"context_line":"                default \u003d \u0027\u0027,\r"},{"line_number":33,"context_line":"                help \u003d \u0027fusionstorage_manager ip addr for this cinder-volume\u0027),\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_76e8e4e2","line":30,"updated":"2016-06-13 16:07:24.000000000","message":"Fix casing on help text and make clear, full descriptions of each option.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"volume_opts \u003d [\r"},{"line_number":28,"context_line":"    cfg.BoolOpt(\u0027dsware_isthin\u0027,\r"},{"line_number":29,"context_line":"                default \u003d False,\r"},{"line_number":30,"context_line":"                help \u003d \u0027default isthin flag value\u0027),\r"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027dsware_manager\u0027,\r"},{"line_number":32,"context_line":"                default \u003d \u0027\u0027,\r"},{"line_number":33,"context_line":"                help \u003d \u0027fusionstorage_manager ip addr for this cinder-volume\u0027),\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3204c813","line":30,"in_reply_to":"7aa08908_76e8e4e2","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def check_for_setup_error(self):\r"},{"line_number":66,"context_line":"        #lrk: check config file here.\r"},{"line_number":67,"context_line":"        if not os.path.exists(fspythonapi.fsc_conf_file):\r"},{"line_number":68,"context_line":"            LOG.error(\"dsware config file: %s not exists!\" % fspythonapi.fsc_conf_file)\r"},{"line_number":69,"context_line":"            raise\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"    def do_setup(self, context):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7696244d","line":68,"updated":"2016-06-13 16:07:24.000000000","message":"Needs _LE() translation marker. Change % to , to pass is formatting value as an arg to the logger.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def check_for_setup_error(self):\r"},{"line_number":66,"context_line":"        #lrk: check config file here.\r"},{"line_number":67,"context_line":"        if not os.path.exists(fspythonapi.fsc_conf_file):\r"},{"line_number":68,"context_line":"            LOG.error(\"dsware config file: %s not exists!\" % fspythonapi.fsc_conf_file)\r"},{"line_number":69,"context_line":"            raise\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"    def do_setup(self, context):\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d213c45a","line":68,"in_reply_to":"7aa08908_7696244d","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        #lrk: check config file here.\r"},{"line_number":67,"context_line":"        if not os.path.exists(fspythonapi.fsc_conf_file):\r"},{"line_number":68,"context_line":"            LOG.error(\"dsware config file: %s not exists!\" % fspythonapi.fsc_conf_file)\r"},{"line_number":69,"context_line":"            raise\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"    def do_setup(self, context):\r"},{"line_number":72,"context_line":"        self.context \u003d context\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_367f7c18","line":69,"updated":"2016-06-13 16:07:24.000000000","message":"What are you raising here?","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        #lrk: check config file here.\r"},{"line_number":67,"context_line":"        if not os.path.exists(fspythonapi.fsc_conf_file):\r"},{"line_number":68,"context_line":"            LOG.error(\"dsware config file: %s not exists!\" % fspythonapi.fsc_conf_file)\r"},{"line_number":69,"context_line":"            raise\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"    def do_setup(self, context):\r"},{"line_number":72,"context_line":"        self.context \u003d context\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_121a6c6f","line":69,"in_reply_to":"7aa08908_367f7c18","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                     \"vbs_url\u003d%s\" % self.configuration.fusionstorageagent]\r"},{"line_number":78,"context_line":"        try:\r"},{"line_number":79,"context_line":"            os.makedirs(os.path.dirname(fspythonapi.fsc_conf_file))\r"},{"line_number":80,"context_line":"        except Exception:\r"},{"line_number":81,"context_line":"            pass\r"},{"line_number":82,"context_line":"                \r"},{"line_number":83,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9670f041","line":80,"updated":"2016-06-13 16:07:24.000000000","message":"Can you catch something more specific than Exception.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                     \"vbs_url\u003d%s\" % self.configuration.fusionstorageagent]\r"},{"line_number":78,"context_line":"        try:\r"},{"line_number":79,"context_line":"            os.makedirs(os.path.dirname(fspythonapi.fsc_conf_file))\r"},{"line_number":80,"context_line":"        except Exception:\r"},{"line_number":81,"context_line":"            pass\r"},{"line_number":82,"context_line":"                \r"},{"line_number":83,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_5226b4ba","line":80,"in_reply_to":"7aa08908_9670f041","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        try:\r"},{"line_number":79,"context_line":"            os.makedirs(os.path.dirname(fspythonapi.fsc_conf_file))\r"},{"line_number":80,"context_line":"        except Exception:\r"},{"line_number":81,"context_line":"            pass\r"},{"line_number":82,"context_line":"                \r"},{"line_number":83,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"},{"line_number":84,"context_line":"            f.writelines(conf_info)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b6aa4c6f","line":81,"updated":"2016-06-13 16:07:24.000000000","message":"Seems like you would want to do something other than just pass here.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        try:\r"},{"line_number":79,"context_line":"            os.makedirs(os.path.dirname(fspythonapi.fsc_conf_file))\r"},{"line_number":80,"context_line":"        except Exception:\r"},{"line_number":81,"context_line":"            pass\r"},{"line_number":82,"context_line":"                \r"},{"line_number":83,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"},{"line_number":84,"context_line":"            f.writelines(conf_info)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_322b2884","line":81,"in_reply_to":"7aa08908_b6aa4c6f","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \r"},{"line_number":86,"context_line":"        # get pool_type\r"},{"line_number":87,"context_line":"        self.pool_type \u003d self.configuration.pool_type\r"},{"line_number":88,"context_line":"        LOG.debug(_(\"DSWARE Driver do_setup finish.\"))\r"},{"line_number":89,"context_line":"\r"},{"line_number":90,"context_line":"    def _get_dsware_manage_ip(self, volume):\r"},{"line_number":91,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_96be30ac","line":88,"updated":"2016-06-13 16:07:24.000000000","message":"No translation markers on debug level messages.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \r"},{"line_number":86,"context_line":"        # get pool_type\r"},{"line_number":87,"context_line":"        self.pool_type \u003d self.configuration.pool_type\r"},{"line_number":88,"context_line":"        LOG.debug(_(\"DSWARE Driver do_setup finish.\"))\r"},{"line_number":89,"context_line":"\r"},{"line_number":90,"context_line":"    def _get_dsware_manage_ip(self, volume):\r"},{"line_number":91,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7221309e","line":88,"in_reply_to":"7aa08908_96be30ac","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    return metadata.value.lower()\r"},{"line_number":96,"context_line":"\r"},{"line_number":97,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed!\")\r"},{"line_number":98,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":99,"context_line":"        else:\r"},{"line_number":100,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed,volume metadata is null!\")\r"},{"line_number":101,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_56f6888f","line":98,"range":{"start_line":98,"start_character":67,"end_line":98,"end_character":73},"updated":"2016-06-13 16:07:24.000000000","message":"What are you using the locals for? There\u0027s nothing in the msg expecting format values from here.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                    return metadata.value.lower()\r"},{"line_number":96,"context_line":"\r"},{"line_number":97,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed!\")\r"},{"line_number":98,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":99,"context_line":"        else:\r"},{"line_number":100,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed,volume metadata is null!\")\r"},{"line_number":101,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b23718e2","line":98,"range":{"start_line":98,"start_character":67,"end_line":98,"end_character":73},"in_reply_to":"7aa08908_56f6888f","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":99,"context_line":"        else:\r"},{"line_number":100,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed,volume metadata is null!\")\r"},{"line_number":101,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":102,"context_line":"        \r"},{"line_number":103,"context_line":"    def _get_poolid_from_host(self, host):\r"},{"line_number":104,"context_line":"        # host format: \u0027hostid@backend#poolid\u0027\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_96ec70bc","line":101,"updated":"2016-06-13 16:07:24.000000000","message":"Same","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":99,"context_line":"        else:\r"},{"line_number":100,"context_line":"            msg \u003d _(\"DSWARE get manager ip failed,volume metadata is null!\")\r"},{"line_number":101,"context_line":"            raise exception.VolumeBackendAPIException(data \u003d msg % locals())\r"},{"line_number":102,"context_line":"        \r"},{"line_number":103,"context_line":"    def _get_poolid_from_host(self, host):\r"},{"line_number":104,"context_line":"        # host format: \u0027hostid@backend#poolid\u0027\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f22d2090","line":101,"in_reply_to":"7aa08908_96ec70bc","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            if pool_info !\u003d self.pool_type:\r"},{"line_number":124,"context_line":"                pool_id \u003d int(pool_info)\r"},{"line_number":125,"context_line":"        #query dsware version failed!\r"},{"line_number":126,"context_line":"        else:\r"},{"line_number":127,"context_line":"            LOG.error(\"query dsware version fail!\")\r"},{"line_number":128,"context_line":"            msg \u003d _(\"DSWARE query dsware version failed! %(retcode)s\")\r"},{"line_number":129,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % locals())\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1637e04d","line":126,"updated":"2016-06-13 16:07:24.000000000","message":"_LE()","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            if pool_info !\u003d self.pool_type:\r"},{"line_number":124,"context_line":"                pool_id \u003d int(pool_info)\r"},{"line_number":125,"context_line":"        #query dsware version failed!\r"},{"line_number":126,"context_line":"        else:\r"},{"line_number":127,"context_line":"            LOG.error(\"query dsware version fail!\")\r"},{"line_number":128,"context_line":"            msg \u003d _(\"DSWARE query dsware version failed! %(retcode)s\")\r"},{"line_number":129,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % locals())\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_32520814","line":126,"in_reply_to":"7aa08908_1637e04d","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            result \u003d self.dsware_client.create_volume(\r"},{"line_number":133,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":134,"context_line":"        except Exception as e:\r"},{"line_number":135,"context_line":"              LOG.error(\"create volume error, details: %s\" % six.text_type(e))\r"},{"line_number":136,"context_line":"              raise e\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"        if result !\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d61718a1","line":135,"updated":"2016-06-13 16:07:24.000000000","message":"_LE()\nChange to LOG.exception and remove passing in the exception.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            result \u003d self.dsware_client.create_volume(\r"},{"line_number":133,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":134,"context_line":"        except Exception as e:\r"},{"line_number":135,"context_line":"              LOG.error(\"create volume error, details: %s\" % six.text_type(e))\r"},{"line_number":136,"context_line":"              raise e\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"        if result !\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1248ac5b","line":135,"in_reply_to":"7aa08908_d61718a1","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":134,"context_line":"        except Exception as e:\r"},{"line_number":135,"context_line":"              LOG.error(\"create volume error, details: %s\" % six.text_type(e))\r"},{"line_number":136,"context_line":"              raise e\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"        if result !\u003d 0:\r"},{"line_number":139,"context_line":"            msg \u003d _(\"DSWARE Create Volume failed! %(result)s\")\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_961ab0c4","line":136,"updated":"2016-06-13 16:07:24.000000000","message":"Should just be \"raise\", not \"raise e\".","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":134,"context_line":"        except Exception as e:\r"},{"line_number":135,"context_line":"              LOG.error(\"create volume error, details: %s\" % six.text_type(e))\r"},{"line_number":136,"context_line":"              raise e\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"        if result !\u003d 0:\r"},{"line_number":139,"context_line":"            msg \u003d _(\"DSWARE Create Volume failed! %(result)s\")\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_32796894","line":136,"in_reply_to":"7aa08908_961ab0c4","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":141,"context_line":"\r"},{"line_number":142,"context_line":"    def create_volume(self, volume):\r"},{"line_number":143,"context_line":"        # Creates a volume in dsware\r"},{"line_number":144,"context_line":"        LOG.debug(_(\"begin to create volume in dsware: %s\") % volume[\u0027name\u0027])\r"},{"line_number":145,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":146,"context_line":"        volume_size \u003d volume[\u0027size\u0027]\r"},{"line_number":147,"context_line":"        volume_host \u003d volume[\u0027host\u0027]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_566b281e","line":144,"updated":"2016-06-13 16:07:24.000000000","message":"Remove _()","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"\r"},{"line_number":142,"context_line":"    def create_volume(self, volume):\r"},{"line_number":143,"context_line":"        # Creates a volume in dsware\r"},{"line_number":144,"context_line":"        LOG.debug(_(\"begin to create volume in dsware: %s\") % volume[\u0027name\u0027])\r"},{"line_number":145,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":146,"context_line":"        volume_size \u003d volume[\u0027size\u0027]\r"},{"line_number":147,"context_line":"        volume_host \u003d volume[\u0027host\u0027]\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_726f70c4","line":144,"in_reply_to":"7aa08908_566b281e","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        snapshot_name \u003d snapshot[\u0027name\u0027]\r"},{"line_number":180,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":181,"context_line":"        if volume_size \u003c int(snapshot[\u0027volume_size\u0027]):\r"},{"line_number":182,"context_line":"            msg \u003d _(\"DSWARE:volume size can not be less than snapshot size\")\r"},{"line_number":183,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % locals())\r"},{"line_number":184,"context_line":"\r"},{"line_number":185,"context_line":"        volume_size \u003d volume_size * 1024\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_a5031e41","line":182,"range":{"start_line":182,"start_character":74,"end_line":182,"end_character":76},"updated":"2016-06-14 01:40:31.000000000","message":"Add period","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        snapshot_name \u003d snapshot[\u0027name\u0027]\r"},{"line_number":180,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":181,"context_line":"        if volume_size \u003c int(snapshot[\u0027volume_size\u0027]):\r"},{"line_number":182,"context_line":"            msg \u003d _(\"DSWARE:volume size can not be less than snapshot size\")\r"},{"line_number":183,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % locals())\r"},{"line_number":184,"context_line":"\r"},{"line_number":185,"context_line":"        volume_size \u003d volume_size * 1024\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9253fc15","line":182,"range":{"start_line":182,"start_character":74,"end_line":182,"end_character":76},"in_reply_to":"7aa08908_a5031e41","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            self.count +\u003d 1\r"},{"line_number":282,"context_line":"            if self.count \u003e 10:\r"},{"line_number":283,"context_line":"                msg \u003d \"DSWARE clone volume failed:volume \"\\\r"},{"line_number":284,"context_line":"                          \"can not find from dsware\"\r"},{"line_number":285,"context_line":"                LOG.error(msg)\r"},{"line_number":286,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":287,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_659c960e","line":284,"range":{"start_line":284,"start_character":51,"end_line":284,"end_character":52},"updated":"2016-06-14 01:40:31.000000000","message":"Same","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            self.count +\u003d 1\r"},{"line_number":282,"context_line":"            if self.count \u003e 10:\r"},{"line_number":283,"context_line":"                msg \u003d \"DSWARE clone volume failed:volume \"\\\r"},{"line_number":284,"context_line":"                          \"can not find from dsware\"\r"},{"line_number":285,"context_line":"                LOG.error(msg)\r"},{"line_number":286,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":287,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f25b6020","line":284,"range":{"start_line":284,"start_character":51,"end_line":284,"end_character":52},"in_reply_to":"7aa08908_659c960e","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    def delete_volume(self, volume):\r"},{"line_number":438,"context_line":"        # delete volume\r"},{"line_number":439,"context_line":"        # step1 if volume is not exist,then return\r"},{"line_number":440,"context_line":"        LOG.debug(_(\"begin to delete volume in DSWARE: %s\") % volume[\u0027name\u0027])\r"},{"line_number":441,"context_line":"        if not self._get_volume(volume[\u0027name\u0027]):\r"},{"line_number":442,"context_line":"            return True\r"},{"line_number":443,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_858702b4","line":440,"range":{"start_line":440,"start_character":21,"end_line":440,"end_character":26},"updated":"2016-06-14 01:40:31.000000000","message":"begin/Begin","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    def delete_volume(self, volume):\r"},{"line_number":438,"context_line":"        # delete volume\r"},{"line_number":439,"context_line":"        # step1 if volume is not exist,then return\r"},{"line_number":440,"context_line":"        LOG.debug(_(\"begin to delete volume in DSWARE: %s\") % volume[\u0027name\u0027])\r"},{"line_number":441,"context_line":"        if not self._get_volume(volume[\u0027name\u0027]):\r"},{"line_number":442,"context_line":"            return True\r"},{"line_number":443,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b2ac38ee","line":440,"range":{"start_line":440,"start_character":21,"end_line":440,"end_character":26},"in_reply_to":"7aa08908_858702b4","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        if refresh:\r"},{"line_number":579,"context_line":"            dsware_version \u003d self.dsware_client.query_dsware_version()\r"},{"line_number":580,"context_line":"            #old version\r"},{"line_number":581,"context_line":"            if dsware_version \u003d\u003d 1:\r"},{"line_number":582,"context_line":"                self._update_pool_info_status()\r"},{"line_number":583,"context_line":"            #new version\r"},{"line_number":584,"context_line":"            elif dsware_version \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_5706711c","line":581,"range":{"start_line":581,"start_character":33,"end_line":581,"end_character":34},"updated":"2016-06-14 01:40:31.000000000","message":"We could use constants here instead of these magic numbers,just like:\nif dsware_version \u003d\u003d OLD_VERSION:","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        if refresh:\r"},{"line_number":579,"context_line":"            dsware_version \u003d self.dsware_client.query_dsware_version()\r"},{"line_number":580,"context_line":"            #old version\r"},{"line_number":581,"context_line":"            if dsware_version \u003d\u003d 1:\r"},{"line_number":582,"context_line":"                self._update_pool_info_status()\r"},{"line_number":583,"context_line":"            #new version\r"},{"line_number":584,"context_line":"            elif dsware_version \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_72f490f0","line":581,"range":{"start_line":581,"start_character":33,"end_line":581,"end_character":34},"in_reply_to":"7aa08908_5706711c","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"a4b85f0412ee288d013a1a4ae4aef982f29c5e0a","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            if dsware_version \u003d\u003d 1:\r"},{"line_number":582,"context_line":"                self._update_pool_info_status()\r"},{"line_number":583,"context_line":"            #new version\r"},{"line_number":584,"context_line":"            elif dsware_version \u003d\u003d 0:\r"},{"line_number":585,"context_line":"                self._update_pool_type_status()\r"},{"line_number":586,"context_line":"            else:\r"},{"line_number":587,"context_line":"                LOG.error(\"query dsware version failed!\")\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_370be525","line":584,"range":{"start_line":584,"start_character":17,"end_line":584,"end_character":31},"updated":"2016-06-14 01:40:31.000000000","message":"Same","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            if dsware_version \u003d\u003d 1:\r"},{"line_number":582,"context_line":"                self._update_pool_info_status()\r"},{"line_number":583,"context_line":"            #new version\r"},{"line_number":584,"context_line":"            elif dsware_version \u003d\u003d 0:\r"},{"line_number":585,"context_line":"                self._update_pool_type_status()\r"},{"line_number":586,"context_line":"            else:\r"},{"line_number":587,"context_line":"                LOG.error(\"query dsware version failed!\")\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d2dd8471","line":584,"range":{"start_line":584,"start_character":17,"end_line":584,"end_character":31},"in_reply_to":"7aa08908_370be525","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"286269e587bcf6271eae8228d39714146917bedc","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            elif int(retcode) \u003d\u003d 0:\r"},{"line_number":415,"context_line":"                result \u003d _attach_result\r"},{"line_number":416,"context_line":"            else:\r"},{"line_number":417,"context_line":"                msg \u003d (_(\"attach volume to host failed\"\r"},{"line_number":418,"context_line":"                         \"in copy volume to image, retcode: %s\") %\r"},{"line_number":419,"context_line":"                       retcode)\r"},{"line_number":420,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_cfb7ddd5","line":417,"range":{"start_line":417,"start_character":48,"end_line":417,"end_character":54},"updated":"2016-06-16 09:53:33.000000000","message":"Missing blank space after \"failed\".","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"41f92857be681099ad60f74db072fbf4a63a85b6","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            elif int(retcode) \u003d\u003d 0:\r"},{"line_number":415,"context_line":"                result \u003d _attach_result\r"},{"line_number":416,"context_line":"            else:\r"},{"line_number":417,"context_line":"                msg \u003d (_(\"attach volume to host failed\"\r"},{"line_number":418,"context_line":"                         \"in copy volume to image, retcode: %s\") %\r"},{"line_number":419,"context_line":"                       retcode)\r"},{"line_number":420,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_92d93c59","line":417,"range":{"start_line":417,"start_character":48,"end_line":417,"end_character":54},"in_reply_to":"7aa08908_cfb7ddd5","updated":"2016-06-17 10:37:53.000000000","message":"Done","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"286269e587bcf6271eae8228d39714146917bedc","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        result \u003d self.dsware_client.query_volume(volume_name)\r"},{"line_number":444,"context_line":"        LOG.debug(\"result[\u0027result\u0027] is %s\", result[\u0027result\u0027])\r"},{"line_number":445,"context_line":"        if result[\u0027result\u0027] \u003d\u003d \"50150005\\n\":\r"},{"line_number":446,"context_line":"            LOG.debug(\"DSWARE get volume,volume is not exist.\")\r"},{"line_number":447,"context_line":"            return False\r"},{"line_number":448,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"},{"line_number":449,"context_line":"            return True\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_cf051d7a","line":446,"range":{"start_line":446,"start_character":41,"end_line":446,"end_character":47},"updated":"2016-06-16 09:53:33.000000000","message":"Maybe it\u0027s better to print which volume is not exist.","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"41f92857be681099ad60f74db072fbf4a63a85b6","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        result \u003d self.dsware_client.query_volume(volume_name)\r"},{"line_number":444,"context_line":"        LOG.debug(\"result[\u0027result\u0027] is %s\", result[\u0027result\u0027])\r"},{"line_number":445,"context_line":"        if result[\u0027result\u0027] \u003d\u003d \"50150005\\n\":\r"},{"line_number":446,"context_line":"            LOG.debug(\"DSWARE get volume,volume is not exist.\")\r"},{"line_number":447,"context_line":"            return False\r"},{"line_number":448,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"},{"line_number":449,"context_line":"            return True\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_52d35438","line":446,"range":{"start_line":446,"start_character":41,"end_line":446,"end_character":47},"in_reply_to":"7aa08908_cf051d7a","updated":"2016-06-17 10:37:53.000000000","message":"Done","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"286269e587bcf6271eae8228d39714146917bedc","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"},{"line_number":449,"context_line":"            return True\r"},{"line_number":450,"context_line":"        else:\r"},{"line_number":451,"context_line":"            msg \u003d _(\"DSWARE get volume failed!\")\r"},{"line_number":452,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":453,"context_line":"\r"},{"line_number":454,"context_line":"    def _delete_volume(self, volume_name):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_aff1b197","line":451,"range":{"start_line":451,"start_character":32,"end_line":451,"end_character":38},"updated":"2016-06-16 09:53:33.000000000","message":"Same. print volume_name.","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"41f92857be681099ad60f74db072fbf4a63a85b6","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"},{"line_number":449,"context_line":"            return True\r"},{"line_number":450,"context_line":"        else:\r"},{"line_number":451,"context_line":"            msg \u003d _(\"DSWARE get volume failed!\")\r"},{"line_number":452,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":453,"context_line":"\r"},{"line_number":454,"context_line":"    def _delete_volume(self, volume_name):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_32d84853","line":451,"range":{"start_line":451,"start_character":32,"end_line":451,"end_character":38},"in_reply_to":"7aa08908_aff1b197","updated":"2016-06-17 10:37:53.000000000","message":"Done","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"286269e587bcf6271eae8228d39714146917bedc","unresolved":false,"context_lines":[{"line_number":635,"context_line":"        LOG.debug(\"begin to extend volume in dsware: %s\", volume[\u0027name\u0027])\r"},{"line_number":636,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":637,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:\r"},{"line_number":638,"context_line":"            msg \u003d (\"DSWARE extend Volume failed!\"\r"},{"line_number":639,"context_line":"                   \"New size should be greater than old size!\")\r"},{"line_number":640,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":641,"context_line":"        # change GB to MB\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_6f76a9d9","line":638,"range":{"start_line":638,"start_character":41,"end_line":638,"end_character":48},"updated":"2016-06-16 09:53:33.000000000","message":"Missing blank space after \"failed!\".","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"41f92857be681099ad60f74db072fbf4a63a85b6","unresolved":false,"context_lines":[{"line_number":635,"context_line":"        LOG.debug(\"begin to extend volume in dsware: %s\", volume[\u0027name\u0027])\r"},{"line_number":636,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":637,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:\r"},{"line_number":638,"context_line":"            msg \u003d (\"DSWARE extend Volume failed!\"\r"},{"line_number":639,"context_line":"                   \"New size should be greater than old size!\")\r"},{"line_number":640,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":641,"context_line":"        # change GB to MB\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_72de503f","line":638,"range":{"start_line":638,"start_character":41,"end_line":638,"end_character":48},"in_reply_to":"7aa08908_6f76a9d9","updated":"2016-06-17 10:37:53.000000000","message":"Done","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"286269e587bcf6271eae8228d39714146917bedc","unresolved":false,"context_lines":[{"line_number":659,"context_line":"\r"},{"line_number":660,"context_line":"        model_update[\u0027host\u0027] \u003d connector[\u0027host\u0027]\r"},{"line_number":661,"context_line":"\r"},{"line_number":662,"context_line":"        # self.db.volume_update(self.context, volume[\u0027id\u0027], model_update)\r"},{"line_number":663,"context_line":"\r"},{"line_number":664,"context_line":"        properties \u003d {}\r"},{"line_number":665,"context_line":"        properties[\u0027volume_name\u0027] \u003d volume[\u0027name\u0027]\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_0f3d65dd","line":662,"range":{"start_line":662,"start_character":8,"end_line":662,"end_character":73},"updated":"2016-06-16 09:53:33.000000000","message":"Remove unused codes.","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"41f92857be681099ad60f74db072fbf4a63a85b6","unresolved":false,"context_lines":[{"line_number":659,"context_line":"\r"},{"line_number":660,"context_line":"        model_update[\u0027host\u0027] \u003d connector[\u0027host\u0027]\r"},{"line_number":661,"context_line":"\r"},{"line_number":662,"context_line":"        # self.db.volume_update(self.context, volume[\u0027id\u0027], model_update)\r"},{"line_number":663,"context_line":"\r"},{"line_number":664,"context_line":"        properties \u003d {}\r"},{"line_number":665,"context_line":"        properties[\u0027volume_name\u0027] \u003d volume[\u0027name\u0027]\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_d2e74410","line":662,"range":{"start_line":662,"start_character":8,"end_line":662,"end_character":73},"in_reply_to":"7aa08908_0f3d65dd","updated":"2016-06-17 10:37:53.000000000","message":"Done","commit_id":"3d2ff7a422242cd596a9c2979a1a5948852d348b"}],"cinder/volume/drivers/fspythonapi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":"# coding\u003dutf-8"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_16d360d6","line":1,"updated":"2016-06-13 16:07:24.000000000","message":"Remove these first few lines.\nAdd apache header.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":"# coding\u003dutf-8"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_525eb4e9","line":1,"in_reply_to":"7aa08908_16d360d6","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"import re"},{"line_number":11,"context_line":"import six"},{"line_number":12,"context_line":"from oslo_log import log as logging"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import subprocess"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"#from cinder.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_56d968f2","line":13,"updated":"2016-06-13 16:07:24.000000000","message":"Organize imports.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"import re"},{"line_number":11,"context_line":"import six"},{"line_number":12,"context_line":"from oslo_log import log as logging"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import subprocess"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"#from cinder.openstack.common.gettextutils import _"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_92549cc6","line":13,"in_reply_to":"7aa08908_56d968f2","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import subprocess"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"#from cinder.openstack.common.gettextutils import _"},{"line_number":17,"context_line":"from cinder.i18n import _"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f6ee9489","line":16,"updated":"2016-06-13 16:07:24.000000000","message":"Don\u0027t include commented out text.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import subprocess"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"#from cinder.openstack.common.gettextutils import _"},{"line_number":17,"context_line":"from cinder.i18n import _"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_725930fd","line":16,"in_reply_to":"7aa08908_f6ee9489","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":19153,"name":"jingtao liang","email":"liang.jingtao@zte.com.cn","username":"liangjingtao"},"change_message_id":"363f95801a65c590702de20807becb59c1ab295c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        result\u003d\u0027\u0027"},{"line_number":131,"context_line":"        if type:"},{"line_number":132,"context_line":"            for ip in fsc_ip:"},{"line_number":133,"context_line":"                cmd_args \u003d CMD_BIN + cmd + \u0027 --manage_ip \u0027 + manage_ip.replace(\u0027\\n\u0027, \u0027\u0027) + \u0027 --ip \u0027 + ip.replace(\u0027\\n\u0027, \u0027\u0027)"},{"line_number":134,"context_line":"                LOG.debug(_(\"DSWARE cmd_args is %s\") % cmd_args)"},{"line_number":135,"context_line":"            "},{"line_number":136,"context_line":"                exec_result \u003d self.execute(cmd_args)"},{"line_number":137,"context_line":"                if exec_result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_914f5a33","line":134,"range":{"start_line":133,"start_character":16,"end_line":134,"end_character":64},"updated":"2016-06-13 16:15:41.000000000","message":"The code is too long","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"3b16962917684a157a13387a4138e289a49952b4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        result\u003d\u0027\u0027"},{"line_number":131,"context_line":"        if type:"},{"line_number":132,"context_line":"            for ip in fsc_ip:"},{"line_number":133,"context_line":"                cmd_args \u003d CMD_BIN + cmd + \u0027 --manage_ip \u0027 + manage_ip.replace(\u0027\\n\u0027, \u0027\u0027) + \u0027 --ip \u0027 + ip.replace(\u0027\\n\u0027, \u0027\u0027)"},{"line_number":134,"context_line":"                LOG.debug(_(\"DSWARE cmd_args is %s\") % cmd_args)"},{"line_number":135,"context_line":"            "},{"line_number":136,"context_line":"                exec_result \u003d self.execute(cmd_args)"},{"line_number":137,"context_line":"                if exec_result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d2f904ca","line":134,"range":{"start_line":133,"start_character":16,"end_line":134,"end_character":64},"in_reply_to":"7aa08908_914f5a33","updated":"2016-06-17 10:35:42.000000000","message":"Done","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"}],"cinder/volume/drivers/fusionstorage/dsware.py":[{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"41be4987165a99e4132b2f312f053472e4a636c0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"\r"},{"line_number":145,"context_line":"        try:\r"},{"line_number":146,"context_line":"            result \u003d self.dsware_client.create_volume(\r"},{"line_number":147,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":148,"context_line":"        except Exception as e:\r"},{"line_number":149,"context_line":"            LOG.exception(_LE(\"Create volume error, details is: %s.\"),\r"},{"line_number":150,"context_line":"                          six.text_type(e))\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_c8b400f4","line":147,"range":{"start_line":147,"start_character":49,"end_line":147,"end_character":60},"updated":"2016-06-20 21:14:44.000000000","message":"Why are you converting to int here and using as string then?","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":144,"context_line":"\r"},{"line_number":145,"context_line":"        try:\r"},{"line_number":146,"context_line":"            result \u003d self.dsware_client.create_volume(\r"},{"line_number":147,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":148,"context_line":"        except Exception as e:\r"},{"line_number":149,"context_line":"            LOG.exception(_LE(\"Create volume error, details is: %s.\"),\r"},{"line_number":150,"context_line":"                          six.text_type(e))\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_ce987f1e","line":147,"range":{"start_line":147,"start_character":49,"end_line":147,"end_character":60},"in_reply_to":"5a9d85d2_c8b400f4","updated":"2016-06-21 03:55:43.000000000","message":"The value of isThin is True or False. Here, we want convert isThin to integer, which means True to 1, False to 0. Meanwhile, the function self.dsware_client.create_volume will convert the int parameter of int(isThin) to a string(\u00271\u0027 or \u00270\u0027), then pass it to our FusionStorge process. In a word, we want to convert the boolean value to the string value at last.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e94c1fc7e7b5097e1be429e9fdca577287cf50ed","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                   \"volume_size\": volume_size,\r"},{"line_number":257,"context_line":"                   \"src_volume_name\": src_volume_name})\r"},{"line_number":258,"context_line":"\r"},{"line_number":259,"context_line":"        # self._wait_for_create_cloned_volume_finish(volume_name)\r"},{"line_number":260,"context_line":"        ret \u003d self._wait_for_create_cloned_volume_finish_timer(volume_name)\r"},{"line_number":261,"context_line":"        if not ret:\r"},{"line_number":262,"context_line":"            msg \u003d _(\u0027Clone volume %s failed!\u0027) % volume_name\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_4da01af5","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":65},"updated":"2016-06-21 01:02:55.000000000","message":"Unused code should be removed.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                   \"volume_size\": volume_size,\r"},{"line_number":257,"context_line":"                   \"src_volume_name\": src_volume_name})\r"},{"line_number":258,"context_line":"\r"},{"line_number":259,"context_line":"        # self._wait_for_create_cloned_volume_finish(volume_name)\r"},{"line_number":260,"context_line":"        ret \u003d self._wait_for_create_cloned_volume_finish_timer(volume_name)\r"},{"line_number":261,"context_line":"        if not ret:\r"},{"line_number":262,"context_line":"            msg \u003d _(\u0027Clone volume %s failed!\u0027) % volume_name\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_4e85afab","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":65},"in_reply_to":"5a9d85d2_4da01af5","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e94c1fc7e7b5097e1be429e9fdca577287cf50ed","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                        \u0027volume status is: %(status)s.\u0027)\r"},{"line_number":292,"context_line":"                LOG.error(msg, {\u0027new_volume_name\u0027: new_volume_name,\r"},{"line_number":293,"context_line":"                                \u0027status\u0027: status})\r"},{"line_number":294,"context_line":"                # raise exception.VolumeDriverException(message\u003dmsg)\r"},{"line_number":295,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":296,"context_line":"            if self.count \u003e self.configuration.clone_volume_timeout:\r"},{"line_number":297,"context_line":"                msg \u003d _(\u0027DSWARE clone volume time out. \u0027\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_edaf46e1","line":294,"range":{"start_line":294,"start_character":16,"end_line":294,"end_character":68},"updated":"2016-06-21 01:02:55.000000000","message":"Same.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                        \u0027volume status is: %(status)s.\u0027)\r"},{"line_number":292,"context_line":"                LOG.error(msg, {\u0027new_volume_name\u0027: new_volume_name,\r"},{"line_number":293,"context_line":"                                \u0027status\u0027: status})\r"},{"line_number":294,"context_line":"                # raise exception.VolumeDriverException(message\u003dmsg)\r"},{"line_number":295,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":296,"context_line":"            if self.count \u003e self.configuration.clone_volume_timeout:\r"},{"line_number":297,"context_line":"                msg \u003d _(\u0027DSWARE clone volume time out. \u0027\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_ae9413e2","line":294,"range":{"start_line":294,"start_character":16,"end_line":294,"end_character":68},"in_reply_to":"5a9d85d2_edaf46e1","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e94c1fc7e7b5097e1be429e9fdca577287cf50ed","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                        \u0027Volume: %(new_volume_name)s, status: %(status)s\u0027)\r"},{"line_number":299,"context_line":"                LOG.error(msg, {\u0027new_volume_name\u0027: new_volume_name,\r"},{"line_number":300,"context_line":"                                \u0027status\u0027: current_volume[\u0027status\u0027]})\r"},{"line_number":301,"context_line":"                # raise exception.VolumeDriverException(message\u003dmsg)\r"},{"line_number":302,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":303,"context_line":"        else:\r"},{"line_number":304,"context_line":"            LOG.warning(_LW(\u0027Can not find volume %s from dsware.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_2dbaee23","line":301,"range":{"start_line":301,"start_character":16,"end_line":301,"end_character":68},"updated":"2016-06-21 01:02:55.000000000","message":"Same.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                        \u0027Volume: %(new_volume_name)s, status: %(status)s\u0027)\r"},{"line_number":299,"context_line":"                LOG.error(msg, {\u0027new_volume_name\u0027: new_volume_name,\r"},{"line_number":300,"context_line":"                                \u0027status\u0027: current_volume[\u0027status\u0027]})\r"},{"line_number":301,"context_line":"                # raise exception.VolumeDriverException(message\u003dmsg)\r"},{"line_number":302,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dFalse)\r"},{"line_number":303,"context_line":"        else:\r"},{"line_number":304,"context_line":"            LOG.warning(_LW(\u0027Can not find volume %s from dsware.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_8e8f97cb","line":301,"range":{"start_line":301,"start_character":16,"end_line":301,"end_character":68},"in_reply_to":"5a9d85d2_2dbaee23","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e94c1fc7e7b5097e1be429e9fdca577287cf50ed","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":493,"context_line":"\r"},{"line_number":494,"context_line":"    def _create_snapshot(self, snapshot_id, volume_id):\r"},{"line_number":495,"context_line":"        LOG.debug(\"Create snapshot %s to Dsware.\", snapshot_id)\r"},{"line_number":496,"context_line":"        smart_flag \u003d 0\r"},{"line_number":497,"context_line":"        res \u003d self.dsware_client.create_snapshot(snapshot_id,\r"},{"line_number":498,"context_line":"                                                 volume_id,\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_4d0adad3","line":495,"range":{"start_line":495,"start_character":41,"end_line":495,"end_character":47},"updated":"2016-06-21 01:02:55.000000000","message":"DSWARE or DSware or Dsware? keep consistent.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":493,"context_line":"\r"},{"line_number":494,"context_line":"    def _create_snapshot(self, snapshot_id, volume_id):\r"},{"line_number":495,"context_line":"        LOG.debug(\"Create snapshot %s to Dsware.\", snapshot_id)\r"},{"line_number":496,"context_line":"        smart_flag \u003d 0\r"},{"line_number":497,"context_line":"        res \u003d self.dsware_client.create_snapshot(snapshot_id,\r"},{"line_number":498,"context_line":"                                                 volume_id,\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_eebc5b6e","line":495,"range":{"start_line":495,"start_character":41,"end_line":495,"end_character":47},"in_reply_to":"5a9d85d2_4d0adad3","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"e94c1fc7e7b5097e1be429e9fdca577287cf50ed","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":637,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:\r"},{"line_number":638,"context_line":"            msg \u003d (\"DSWARE extend Volume failed! \"\r"},{"line_number":639,"context_line":"                   \"New size should be greater than old size!\")\r"},{"line_number":640,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":641,"context_line":"        # change GB to MB\r"},{"line_number":642,"context_line":"        volume_size \u003d new_size * 1024\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_6dd35639","line":639,"range":{"start_line":639,"start_character":20,"end_line":639,"end_character":28},"updated":"2016-06-21 01:02:55.000000000","message":"print the new_size and old size.","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        volume_id \u003d volume[\u0027name\u0027]\r"},{"line_number":637,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:\r"},{"line_number":638,"context_line":"            msg \u003d (\"DSWARE extend Volume failed! \"\r"},{"line_number":639,"context_line":"                   \"New size should be greater than old size!\")\r"},{"line_number":640,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":641,"context_line":"        # change GB to MB\r"},{"line_number":642,"context_line":"        volume_size \u003d new_size * 1024\r"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_cebfdf5e","line":639,"range":{"start_line":639,"start_character":20,"end_line":639,"end_character":28},"in_reply_to":"5a9d85d2_6dd35639","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":360,"context_line":"\r"},{"line_number":361,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):\r"},{"line_number":362,"context_line":"        # Copy image to volume\r"},{"line_number":363,"context_line":"        # step1 attach volume to host\r"},{"line_number":364,"context_line":"        LOG.debug(\"Begin to copy image to volume.\")\r"},{"line_number":365,"context_line":"        dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":366,"context_line":"        volume_attach_result \u003d self._attach_volume(volume[\u0027name\u0027],\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_7511c85c","line":363,"updated":"2016-06-25 01:59:49.000000000","message":"Step1: attach volume...","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":360,"context_line":"\r"},{"line_number":361,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):\r"},{"line_number":362,"context_line":"        # Copy image to volume\r"},{"line_number":363,"context_line":"        # step1 attach volume to host\r"},{"line_number":364,"context_line":"        LOG.debug(\"Begin to copy image to volume.\")\r"},{"line_number":365,"context_line":"        dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":366,"context_line":"        volume_attach_result \u003d self._attach_volume(volume[\u0027name\u0027],\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_c919f223","line":363,"in_reply_to":"3aaa91ec_7511c85c","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if volume_attach_path \u003d\u003d \u0027\u0027:\r"},{"line_number":374,"context_line":"            msg \u003d _(\"Host attach volume failed!\")\r"},{"line_number":375,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":376,"context_line":"            # step2 fetch the image from image_service and write it to the\r"},{"line_number":377,"context_line":"            # volume.\r"},{"line_number":378,"context_line":"        try:\r"},{"line_number":379,"context_line":"            image_utils.fetch_to_raw(context,\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_55148c4b","line":376,"range":{"start_line":376,"start_character":14,"end_line":376,"end_character":19},"updated":"2016-06-25 01:59:49.000000000","message":"Step2: fetch the ...","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if volume_attach_path \u003d\u003d \u0027\u0027:\r"},{"line_number":374,"context_line":"            msg \u003d _(\"Host attach volume failed!\")\r"},{"line_number":375,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":376,"context_line":"            # step2 fetch the image from image_service and write it to the\r"},{"line_number":377,"context_line":"            # volume.\r"},{"line_number":378,"context_line":"        try:\r"},{"line_number":379,"context_line":"            image_utils.fetch_to_raw(context,\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_09a49ab7","line":376,"range":{"start_line":376,"start_character":14,"end_line":376,"end_character":19},"in_reply_to":"3aaa91ec_55148c4b","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                                     volume_attach_path,\r"},{"line_number":383,"context_line":"                                     self.configuration.volume_dd_blocksize)\r"},{"line_number":384,"context_line":"        finally:\r"},{"line_number":385,"context_line":"            # step3 detach volume from host\r"},{"line_number":386,"context_line":"            dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":387,"context_line":"            volume_detach_result \u003d self._detach_volume(volume[\u0027name\u0027],\r"},{"line_number":388,"context_line":"                                                       dsw_manager_ip)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_f505b813","line":385,"range":{"start_line":385,"start_character":14,"end_line":385,"end_character":19},"updated":"2016-06-25 01:59:49.000000000","message":"Step3: detach ...","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                                     volume_attach_path,\r"},{"line_number":383,"context_line":"                                     self.configuration.volume_dd_blocksize)\r"},{"line_number":384,"context_line":"        finally:\r"},{"line_number":385,"context_line":"            # step3 detach volume from host\r"},{"line_number":386,"context_line":"            dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":387,"context_line":"            volume_detach_result \u003d self._detach_volume(volume[\u0027name\u0027],\r"},{"line_number":388,"context_line":"                                                       dsw_manager_ip)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_a9c2a650","line":385,"range":{"start_line":385,"start_character":14,"end_line":385,"end_character":19},"in_reply_to":"3aaa91ec_f505b813","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":394,"context_line":"\r"},{"line_number":395,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):\r"},{"line_number":396,"context_line":"        # copy volume to image\r"},{"line_number":397,"context_line":"        # if volume was not attached,then attach it.\r"},{"line_number":398,"context_line":"\r"},{"line_number":399,"context_line":"        dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":400,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_40020c0b","line":397,"range":{"start_line":397,"start_character":36,"end_line":397,"end_character":37},"updated":"2016-06-25 01:59:49.000000000","message":"Add a space after this comma.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":394,"context_line":"\r"},{"line_number":395,"context_line":"    def copy_volume_to_image(self, context, volume, image_service, image_meta):\r"},{"line_number":396,"context_line":"        # copy volume to image\r"},{"line_number":397,"context_line":"        # if volume was not attached,then attach it.\r"},{"line_number":398,"context_line":"\r"},{"line_number":399,"context_line":"        dsw_manager_ip \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":400,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_69cc3e89","line":397,"range":{"start_line":397,"start_character":36,"end_line":397,"end_character":37},"in_reply_to":"3aaa91ec_40020c0b","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        _attach_result \u003d self._attach_volume(volume[\u0027name\u0027], dsw_manager_ip)\r"},{"line_number":403,"context_line":"        if _attach_result:\r"},{"line_number":404,"context_line":"            retcode \u003d _attach_result[\u0027ret_code\u0027]\r"},{"line_number":405,"context_line":"            if int(retcode) \u003d\u003d 50151401:\r"},{"line_number":406,"context_line":"                already_attached \u003d True\r"},{"line_number":407,"context_line":"                result \u003d self._query_volume_attach(volume[\u0027name\u0027],\r"},{"line_number":408,"context_line":"                                                   dsw_manager_ip)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_801fd459","line":405,"range":{"start_line":405,"start_character":31,"end_line":405,"end_character":39},"updated":"2016-06-25 01:59:49.000000000","message":"Change this to a value like OLD_VERSION declared in line 59.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        _attach_result \u003d self._attach_volume(volume[\u0027name\u0027], dsw_manager_ip)\r"},{"line_number":403,"context_line":"        if _attach_result:\r"},{"line_number":404,"context_line":"            retcode \u003d _attach_result[\u0027ret_code\u0027]\r"},{"line_number":405,"context_line":"            if int(retcode) \u003d\u003d 50151401:\r"},{"line_number":406,"context_line":"                already_attached \u003d True\r"},{"line_number":407,"context_line":"                result \u003d self._query_volume_attach(volume[\u0027name\u0027],\r"},{"line_number":408,"context_line":"                                                   dsw_manager_ip)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_89d1aa25","line":405,"range":{"start_line":405,"start_character":31,"end_line":405,"end_character":39},"in_reply_to":"3aaa91ec_801fd459","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":441,"context_line":"    def _get_volume(self, volume_name):\r"},{"line_number":442,"context_line":"        result \u003d self.dsware_client.query_volume(volume_name)\r"},{"line_number":443,"context_line":"        LOG.debug(\"Dsware query volume result is %s.\", result[\u0027result\u0027])\r"},{"line_number":444,"context_line":"        if result[\u0027result\u0027] \u003d\u003d \"50150005\\n\":\r"},{"line_number":445,"context_line":"            LOG.debug(\"Dsware volume %s does not exist.\", volume_name)\r"},{"line_number":446,"context_line":"            return False\r"},{"line_number":447,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_4077ac9f","line":444,"range":{"start_line":444,"start_character":32,"end_line":444,"end_character":40},"updated":"2016-06-25 01:59:49.000000000","message":"Please define these magic values around line 59 like OLD_VERSION so the code will be more convenient to maintain.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":441,"context_line":"    def _get_volume(self, volume_name):\r"},{"line_number":442,"context_line":"        result \u003d self.dsware_client.query_volume(volume_name)\r"},{"line_number":443,"context_line":"        LOG.debug(\"Dsware query volume result is %s.\", result[\u0027result\u0027])\r"},{"line_number":444,"context_line":"        if result[\u0027result\u0027] \u003d\u003d \"50150005\\n\":\r"},{"line_number":445,"context_line":"            LOG.debug(\"Dsware volume %s does not exist.\", volume_name)\r"},{"line_number":446,"context_line":"            return False\r"},{"line_number":447,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_e9bf8ecd","line":444,"range":{"start_line":444,"start_character":32,"end_line":444,"end_character":40},"in_reply_to":"3aaa91ec_4077ac9f","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        # delete volume in Dsware\r"},{"line_number":455,"context_line":"        result \u003d self.dsware_client.delete_volume(volume_name)\r"},{"line_number":456,"context_line":"        LOG.debug(\"Dsware delete volume, result is %s.\", result)\r"},{"line_number":457,"context_line":"        if result \u003d\u003d \u002750150005\\n\u0027:\r"},{"line_number":458,"context_line":"            LOG.debug(\"Dsware delete volume, volume does not exist.\")\r"},{"line_number":459,"context_line":"            return True\r"},{"line_number":460,"context_line":"        elif result \u003d\u003d \u002750151002\\n\u0027:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_80a4f407","line":457,"range":{"start_line":457,"start_character":22,"end_line":457,"end_character":30},"updated":"2016-06-25 01:59:49.000000000","message":"same","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        # delete volume in Dsware\r"},{"line_number":455,"context_line":"        result \u003d self.dsware_client.delete_volume(volume_name)\r"},{"line_number":456,"context_line":"        LOG.debug(\"Dsware delete volume, result is %s.\", result)\r"},{"line_number":457,"context_line":"        if result \u003d\u003d \u002750150005\\n\u0027:\r"},{"line_number":458,"context_line":"            LOG.debug(\"Dsware delete volume, volume does not exist.\")\r"},{"line_number":459,"context_line":"            return True\r"},{"line_number":460,"context_line":"        elif result \u003d\u003d \u002750151002\\n\u0027:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_09bdbad7","line":457,"range":{"start_line":457,"start_character":22,"end_line":457,"end_character":30},"in_reply_to":"3aaa91ec_80a4f407","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        if result \u003d\u003d \u002750150005\\n\u0027:\r"},{"line_number":458,"context_line":"            LOG.debug(\"Dsware delete volume, volume does not exist.\")\r"},{"line_number":459,"context_line":"            return True\r"},{"line_number":460,"context_line":"        elif result \u003d\u003d \u002750151002\\n\u0027:\r"},{"line_number":461,"context_line":"            LOG.debug(\"Dsware delete volume, volume is being deleted.\")\r"},{"line_number":462,"context_line":"            return True\r"},{"line_number":463,"context_line":"        elif result \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_c0b27c4b","line":460,"range":{"start_line":460,"start_character":24,"end_line":460,"end_character":32},"updated":"2016-06-25 01:59:49.000000000","message":"same","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        if result \u003d\u003d \u002750150005\\n\u0027:\r"},{"line_number":458,"context_line":"            LOG.debug(\"Dsware delete volume, volume does not exist.\")\r"},{"line_number":459,"context_line":"            return True\r"},{"line_number":460,"context_line":"        elif result \u003d\u003d \u002750151002\\n\u0027:\r"},{"line_number":461,"context_line":"            LOG.debug(\"Dsware delete volume, volume is being deleted.\")\r"},{"line_number":462,"context_line":"            return True\r"},{"line_number":463,"context_line":"        elif result \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_a9ebc6da","line":460,"range":{"start_line":460,"start_character":24,"end_line":460,"end_character":32},"in_reply_to":"3aaa91ec_c0b27c4b","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":468,"context_line":"\r"},{"line_number":469,"context_line":"    def delete_volume(self, volume):\r"},{"line_number":470,"context_line":"        # delete volume\r"},{"line_number":471,"context_line":"        # if volume is not exist,then return\r"},{"line_number":472,"context_line":"        LOG.debug(\"Begin to delete volume in Dsware: %s.\", volume[\u0027name\u0027])\r"},{"line_number":473,"context_line":"        if not self._get_volume(volume[\u0027name\u0027]):\r"},{"line_number":474,"context_line":"            return True\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_2088a070","line":471,"range":{"start_line":471,"start_character":32,"end_line":471,"end_character":33},"updated":"2016-06-25 01:59:49.000000000","message":"Need a space.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":468,"context_line":"\r"},{"line_number":469,"context_line":"    def delete_volume(self, volume):\r"},{"line_number":470,"context_line":"        # delete volume\r"},{"line_number":471,"context_line":"        # if volume is not exist,then return\r"},{"line_number":472,"context_line":"        LOG.debug(\"Begin to delete volume in Dsware: %s.\", volume[\u0027name\u0027])\r"},{"line_number":473,"context_line":"        if not self._get_volume(volume[\u0027name\u0027]):\r"},{"line_number":474,"context_line":"            return True\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_c9f0d2cb","line":471,"range":{"start_line":471,"start_character":32,"end_line":471,"end_character":33},"in_reply_to":"3aaa91ec_2088a070","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":478,"context_line":"    def _get_snapshot(self, snapshot_name):\r"},{"line_number":479,"context_line":"        snapshot_info \u003d self.dsware_client.query_snap(snapshot_name)\r"},{"line_number":480,"context_line":"        LOG.debug(\"Get snapshot, snapshot_info is : %s.\", snapshot_info)\r"},{"line_number":481,"context_line":"        if snapshot_info[\u0027result\u0027] \u003d\u003d \"50150006\\n\":\r"},{"line_number":482,"context_line":"            msg \u003d _(\u0027Snapshot: %s not found!\u0027) % snapshot_name\r"},{"line_number":483,"context_line":"            LOG.error(msg)\r"},{"line_number":484,"context_line":"            return False\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_e08a1863","line":481,"range":{"start_line":481,"start_character":39,"end_line":481,"end_character":47},"updated":"2016-06-25 01:59:49.000000000","message":"same","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":478,"context_line":"    def _get_snapshot(self, snapshot_name):\r"},{"line_number":479,"context_line":"        snapshot_info \u003d self.dsware_client.query_snap(snapshot_name)\r"},{"line_number":480,"context_line":"        LOG.debug(\"Get snapshot, snapshot_info is : %s.\", snapshot_info)\r"},{"line_number":481,"context_line":"        if snapshot_info[\u0027result\u0027] \u003d\u003d \"50150006\\n\":\r"},{"line_number":482,"context_line":"            msg \u003d _(\u0027Snapshot: %s not found!\u0027) % snapshot_name\r"},{"line_number":483,"context_line":"            LOG.error(msg)\r"},{"line_number":484,"context_line":"            return False\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_69e55e07","line":481,"range":{"start_line":481,"start_character":39,"end_line":481,"end_character":47},"in_reply_to":"3aaa91ec_e08a1863","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":646,"context_line":"\r"},{"line_number":647,"context_line":"\r"},{"line_number":648,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":649,"context_line":"    \"\"\"use Dsware local driver\"\"\"\r"},{"line_number":650,"context_line":"\r"},{"line_number":651,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_206420b7","line":649,"range":{"start_line":649,"start_character":24,"end_line":649,"end_character":30},"updated":"2016-06-25 01:59:49.000000000","message":"Add a full stop at the end of line.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":646,"context_line":"\r"},{"line_number":647,"context_line":"\r"},{"line_number":648,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":649,"context_line":"    \"\"\"use Dsware local driver\"\"\"\r"},{"line_number":650,"context_line":"\r"},{"line_number":651,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_e04fb831","line":649,"range":{"start_line":649,"start_character":7,"end_line":649,"end_character":8},"updated":"2016-06-25 01:59:49.000000000","message":"s/u/U","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":646,"context_line":"\r"},{"line_number":647,"context_line":"\r"},{"line_number":648,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":649,"context_line":"    \"\"\"use Dsware local driver\"\"\"\r"},{"line_number":650,"context_line":"\r"},{"line_number":651,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_49dce245","line":649,"range":{"start_line":649,"start_character":24,"end_line":649,"end_character":30},"in_reply_to":"3aaa91ec_206420b7","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":646,"context_line":"\r"},{"line_number":647,"context_line":"\r"},{"line_number":648,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":649,"context_line":"    \"\"\"use Dsware local driver\"\"\"\r"},{"line_number":650,"context_line":"\r"},{"line_number":651,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_e98dce31","line":649,"range":{"start_line":649,"start_character":7,"end_line":649,"end_character":8},"in_reply_to":"3aaa91ec_e04fb831","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"472196f0f1d3281871be16479176bdc327be468a","unresolved":false,"context_lines":[{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"},{"line_number":653,"context_line":"\r"},{"line_number":654,"context_line":"    def initialize_connection(self, volume, connector):\r"},{"line_number":655,"context_line":"        \"\"\"update volume host, ensure volume to image ok\"\"\"\r"},{"line_number":656,"context_line":"        LOG.debug(\"Begin initialize connection.\")\r"},{"line_number":657,"context_line":"        model_update \u003d {}\r"},{"line_number":658,"context_line":"        model_update[\u0027host\u0027] \u003d connector[\u0027host\u0027]\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_006c849a","line":655,"updated":"2016-06-25 01:59:49.000000000","message":"Same to line 649.","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"5fce3945891fdaac3181692a118abb3d5a274b17","unresolved":false,"context_lines":[{"line_number":652,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"},{"line_number":653,"context_line":"\r"},{"line_number":654,"context_line":"    def initialize_connection(self, volume, connector):\r"},{"line_number":655,"context_line":"        \"\"\"update volume host, ensure volume to image ok\"\"\"\r"},{"line_number":656,"context_line":"        LOG.debug(\"Begin initialize connection.\")\r"},{"line_number":657,"context_line":"        model_update \u003d {}\r"},{"line_number":658,"context_line":"        model_update[\u0027host\u0027] \u003d connector[\u0027host\u0027]\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3aaa91ec_a91466e8","line":655,"in_reply_to":"3aaa91ec_006c849a","updated":"2016-06-27 04:17:58.000000000","message":"Done","commit_id":"d74fdc638d1e5a490975ac7213487d8f43dcda5a"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":89,"context_line":"\r"},{"line_number":90,"context_line":"    def do_setup(self, context):\r"},{"line_number":91,"context_line":"        self.context \u003d context\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"        # lrk: create fsc_conf_file here.\r"},{"line_number":94,"context_line":"        conf_info \u003d [\"manage_ip\u003d%s\" % self.configuration.dsware_manager,\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_1ceb5ce0","line":91,"range":{"start_line":91,"start_character":13,"end_line":91,"end_character":20},"updated":"2016-07-07 03:06:35.000000000","message":"This is never used","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":89,"context_line":"\r"},{"line_number":90,"context_line":"    def do_setup(self, context):\r"},{"line_number":91,"context_line":"        self.context \u003d context\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"        # lrk: create fsc_conf_file here.\r"},{"line_number":94,"context_line":"        conf_info \u003d [\"manage_ip\u003d%s\" % self.configuration.dsware_manager,\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_b085095b","line":91,"range":{"start_line":91,"start_character":13,"end_line":91,"end_character":20},"in_reply_to":"1aa78d24_1ceb5ce0","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                     \"vbs_url\u003d%s\" % self.configuration.fusionstorageagent]\r"},{"line_number":97,"context_line":"\r"},{"line_number":98,"context_line":"        fsc_dir \u003d os.path.dirname(fspythonapi.fsc_conf_file)\r"},{"line_number":99,"context_line":"        if not os.path.exists(fsc_dir):\r"},{"line_number":100,"context_line":"            os.makedirs(fsc_dir)\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"},{"line_number":103,"context_line":"            f.writelines(conf_info)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_fc93f058","line":100,"range":{"start_line":99,"start_character":8,"end_line":100,"end_character":32},"updated":"2016-07-07 03:06:35.000000000","message":"This is going to race against a second copy of the driver running on the same host (e.g. you\u0027ve got two arrays and are using multi-backend). Maybe they both need to be configured to use different fsc_dir? You could also hit the race if somebody is testing the H/A support with two c-vol on the same host.\n\nEasily avoided by putting the mkdir, open and write in a try block and ignoring the \u0027file exists\u0027 exception","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                     \"vbs_url\u003d%s\" % self.configuration.fusionstorageagent]\r"},{"line_number":97,"context_line":"\r"},{"line_number":98,"context_line":"        fsc_dir \u003d os.path.dirname(fspythonapi.fsc_conf_file)\r"},{"line_number":99,"context_line":"        if not os.path.exists(fsc_dir):\r"},{"line_number":100,"context_line":"            os.makedirs(fsc_dir)\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"        with open(fspythonapi.fsc_conf_file, \u0027w\u0027) as f:\r"},{"line_number":103,"context_line":"            f.writelines(conf_info)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_c659ff36","line":100,"range":{"start_line":99,"start_character":8,"end_line":100,"end_character":32},"in_reply_to":"1aa78d24_fc93f058","updated":"2016-07-07 08:45:07.000000000","message":"Thanks for your review. Here when using multi-backend, the content of the file fsc_conf_file in fsc_dir are the same.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        volume_size \u003d volume[\u0027size\u0027]\r"},{"line_number":168,"context_line":"        volume_host \u003d volume[\u0027host\u0027]\r"},{"line_number":169,"context_line":"        is_thin \u003d self.configuration.dsware_isthin\r"},{"line_number":170,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":171,"context_line":"        if volume_metadata is not None:\r"},{"line_number":172,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":173,"context_line":"                if (metadata.key.lower() \u003d\u003d \u0027isthin\u0027) and (\r"},{"line_number":174,"context_line":"                        metadata.value.lower() \u003d\u003d \u0027true\u0027):\r"},{"line_number":175,"context_line":"                    is_thin \u003d True\r"},{"line_number":176,"context_line":"                else:\r"},{"line_number":177,"context_line":"                    is_thin \u003d False\r"},{"line_number":178,"context_line":"        # Change GB to MB.\r"},{"line_number":179,"context_line":"        volume_size \u003d volume_size * 1024\r"},{"line_number":180,"context_line":"        self._create_volume(volume_id, volume_size, is_thin, volume_host)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_5cf2049b","line":177,"range":{"start_line":170,"start_character":7,"end_line":177,"end_character":35},"updated":"2016-07-07 03:06:35.000000000","message":"Volume drivers should *not* be looking at the volume metadata to make decisions like this, just following the volume type.\n\nA few existing drivers still do, but they need fixing. We shouldn\u0027t be adding more cases.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        volume_size \u003d volume[\u0027size\u0027]\r"},{"line_number":168,"context_line":"        volume_host \u003d volume[\u0027host\u0027]\r"},{"line_number":169,"context_line":"        is_thin \u003d self.configuration.dsware_isthin\r"},{"line_number":170,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":171,"context_line":"        if volume_metadata is not None:\r"},{"line_number":172,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":173,"context_line":"                if (metadata.key.lower() \u003d\u003d \u0027isthin\u0027) and (\r"},{"line_number":174,"context_line":"                        metadata.value.lower() \u003d\u003d \u0027true\u0027):\r"},{"line_number":175,"context_line":"                    is_thin \u003d True\r"},{"line_number":176,"context_line":"                else:\r"},{"line_number":177,"context_line":"                    is_thin \u003d False\r"},{"line_number":178,"context_line":"        # Change GB to MB.\r"},{"line_number":179,"context_line":"        volume_size \u003d volume_size * 1024\r"},{"line_number":180,"context_line":"        self._create_volume(volume_id, volume_size, is_thin, volume_host)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_1229859e","line":177,"range":{"start_line":170,"start_character":7,"end_line":177,"end_character":35},"in_reply_to":"1aa78d24_5cf2049b","updated":"2016-07-07 08:45:07.000000000","message":"Oh, I find that the backend only accepts is_thin as False so I will remove these codes.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":186,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":187,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":188,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":189,"context_line":"\r"},{"line_number":190,"context_line":"    def _create_volume_from_snap(self, volume_id, volume_size, snapshot_name):\r"},{"line_number":191,"context_line":"        result \u003d self.dsware_client.create_volume_from_snap(\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_dc59d48f","line":188,"range":{"start_line":188,"start_character":14,"end_line":188,"end_character":38},"updated":"2016-07-07 03:06:35.000000000","message":"Drivers should not be storing data or otherwise reading/changing volume metadata. Volume metadata is tenant readable and writable, and their volume shouldn\u0027t break or change because they changed metadata.\n\nThe manager_ip should probably be in the volume provider_id field","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":186,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":187,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":188,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":189,"context_line":"\r"},{"line_number":190,"context_line":"    def _create_volume_from_snap(self, volume_id, volume_size, snapshot_name):\r"},{"line_number":191,"context_line":"        result \u003d self.dsware_client.create_volume_from_snap(\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_508b0568","line":188,"range":{"start_line":188,"start_character":14,"end_line":188,"end_character":38},"in_reply_to":"1aa78d24_dc59d48f","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":210,"context_line":"\r"},{"line_number":211,"context_line":"        dsw_manager_ip \u003d self.dsware_client.get_manage_ip()\r"},{"line_number":212,"context_line":"        meta_data \u003d {}\r"},{"line_number":213,"context_line":"        if volume_metadata is not None:\r"},{"line_number":214,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":215,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":216,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":217,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":218,"context_line":"\r"},{"line_number":219,"context_line":"    def create_cloned_volume(self, volume, src_volume):\r"},{"line_number":220,"context_line":"        \u0027\u0027\u0027Dispatcher to Dsware client to create volume from volume.\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_9ccaac19","line":217,"range":{"start_line":213,"start_character":7,"end_line":217,"end_character":38},"updated":"2016-07-07 03:06:35.000000000","message":"See above","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":210,"context_line":"\r"},{"line_number":211,"context_line":"        dsw_manager_ip \u003d self.dsware_client.get_manage_ip()\r"},{"line_number":212,"context_line":"        meta_data \u003d {}\r"},{"line_number":213,"context_line":"        if volume_metadata is not None:\r"},{"line_number":214,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":215,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":216,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":217,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":218,"context_line":"\r"},{"line_number":219,"context_line":"    def create_cloned_volume(self, volume, src_volume):\r"},{"line_number":220,"context_line":"        \u0027\u0027\u0027Dispatcher to Dsware client to create volume from volume.\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_d0f535ed","line":217,"range":{"start_line":213,"start_character":7,"end_line":217,"end_character":38},"in_reply_to":"1aa78d24_9ccaac19","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        src_volume_status \u003d src_volume[\u0027status\u0027]\r"},{"line_number":229,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":230,"context_line":"\r"},{"line_number":231,"context_line":"        # FIXME(chenrui): check volume status.\r"},{"line_number":232,"context_line":"        if src_volume_status not in [\u0027available\u0027, \u0027in-use\u0027]:\r"},{"line_number":233,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s from \u0027\r"},{"line_number":234,"context_line":"                     \u0027src volume %(src_volume_name)s, \u0027\r"},{"line_number":235,"context_line":"                     \u0027status is: %(src_volume_status)s.\u0027)\r"},{"line_number":236,"context_line":"                   % {\u0027volume_name\u0027: volume_name,\r"},{"line_number":237,"context_line":"                      \u0027src_volume_name\u0027: src_volume_name,\r"},{"line_number":238,"context_line":"                      \u0027src_volume_status\u0027: src_volume_status})\r"},{"line_number":239,"context_line":"            LOG.error(msg)\r"},{"line_number":240,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":241,"context_line":"\r"},{"line_number":242,"context_line":"        if volume_size \u003c src_volume_size:\r"},{"line_number":243,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s of \u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_fc8770b2","line":240,"range":{"start_line":231,"start_character":8,"end_line":240,"end_character":63},"updated":"2016-07-07 03:06:35.000000000","message":"The driver shouldn\u0027t need to check this - the higher level code manages state.\n\n Did you find a case where neither of these were true.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        src_volume_status \u003d src_volume[\u0027status\u0027]\r"},{"line_number":229,"context_line":"        volume_metadata \u003d volume[\u0027volume_metadata\u0027]\r"},{"line_number":230,"context_line":"\r"},{"line_number":231,"context_line":"        # FIXME(chenrui): check volume status.\r"},{"line_number":232,"context_line":"        if src_volume_status not in [\u0027available\u0027, \u0027in-use\u0027]:\r"},{"line_number":233,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s from \u0027\r"},{"line_number":234,"context_line":"                     \u0027src volume %(src_volume_name)s, \u0027\r"},{"line_number":235,"context_line":"                     \u0027status is: %(src_volume_status)s.\u0027)\r"},{"line_number":236,"context_line":"                   % {\u0027volume_name\u0027: volume_name,\r"},{"line_number":237,"context_line":"                      \u0027src_volume_name\u0027: src_volume_name,\r"},{"line_number":238,"context_line":"                      \u0027src_volume_status\u0027: src_volume_status})\r"},{"line_number":239,"context_line":"            LOG.error(msg)\r"},{"line_number":240,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":241,"context_line":"\r"},{"line_number":242,"context_line":"        if volume_size \u003c src_volume_size:\r"},{"line_number":243,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s of \u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_d0cc15bd","line":240,"range":{"start_line":231,"start_character":8,"end_line":240,"end_character":63},"in_reply_to":"1aa78d24_fc8770b2","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            LOG.error(msg)\r"},{"line_number":240,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":241,"context_line":"\r"},{"line_number":242,"context_line":"        if volume_size \u003c src_volume_size:\r"},{"line_number":243,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s of \u0027\r"},{"line_number":244,"context_line":"                     \u0027size %(volume_size)s from \u0027\r"},{"line_number":245,"context_line":"                     \u0027src volume %(src_volume_name)s of \u0027\r"},{"line_number":246,"context_line":"                     \u0027size %(src_volume_size)s.\u0027)\r"},{"line_number":247,"context_line":"                   % {\u0027volume_name\u0027: volume_name,\r"},{"line_number":248,"context_line":"                      \u0027volume_size\u0027: volume_size,\r"},{"line_number":249,"context_line":"                      \u0027src_volume_name\u0027: src_volume_name,\r"},{"line_number":250,"context_line":"                      \u0027src_volume_size\u0027: src_volume_size})\r"},{"line_number":251,"context_line":"            LOG.error(msg)\r"},{"line_number":252,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":253,"context_line":"\r"},{"line_number":254,"context_line":"        volume_size \u003d volume_size * 1024\r"},{"line_number":255,"context_line":"        result \u003d self.dsware_client.create_volume_from_volume(\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_3c8e18d0","line":252,"range":{"start_line":242,"start_character":8,"end_line":252,"end_character":63},"updated":"2016-07-07 03:06:35.000000000","message":"Again, this sort of check is handled in the higher level code","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            LOG.error(msg)\r"},{"line_number":240,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":241,"context_line":"\r"},{"line_number":242,"context_line":"        if volume_size \u003c src_volume_size:\r"},{"line_number":243,"context_line":"            msg \u003d (_(\u0027Cannot clone volume %(volume_name)s of \u0027\r"},{"line_number":244,"context_line":"                     \u0027size %(volume_size)s from \u0027\r"},{"line_number":245,"context_line":"                     \u0027src volume %(src_volume_name)s of \u0027\r"},{"line_number":246,"context_line":"                     \u0027size %(src_volume_size)s.\u0027)\r"},{"line_number":247,"context_line":"                   % {\u0027volume_name\u0027: volume_name,\r"},{"line_number":248,"context_line":"                      \u0027volume_size\u0027: volume_size,\r"},{"line_number":249,"context_line":"                      \u0027src_volume_name\u0027: src_volume_name,\r"},{"line_number":250,"context_line":"                      \u0027src_volume_size\u0027: src_volume_size})\r"},{"line_number":251,"context_line":"            LOG.error(msg)\r"},{"line_number":252,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":253,"context_line":"\r"},{"line_number":254,"context_line":"        volume_size \u003d volume_size * 1024\r"},{"line_number":255,"context_line":"        result \u003d self.dsware_client.create_volume_from_volume(\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_50b94514","line":252,"range":{"start_line":242,"start_character":8,"end_line":252,"end_character":63},"in_reply_to":"1aa78d24_3c8e18d0","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":266,"context_line":"\r"},{"line_number":267,"context_line":"        ret \u003d self._wait_for_create_cloned_volume_finish_timer(volume_name)\r"},{"line_number":268,"context_line":"        if not ret:\r"},{"line_number":269,"context_line":"            msg \u003d _(\u0027Clone volume %s failed!\u0027) % volume_name\r"},{"line_number":270,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":271,"context_line":"\r"},{"line_number":272,"context_line":"        LOG.debug(\u0027Dsware create volume from volume ends.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_fc75b0ca","line":269,"range":{"start_line":269,"start_character":21,"end_line":269,"end_character":43},"updated":"2016-07-07 03:06:35.000000000","message":"Might be worth making this message slightly different, to help tell it apart from line 258 in the logs","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":266,"context_line":"\r"},{"line_number":267,"context_line":"        ret \u003d self._wait_for_create_cloned_volume_finish_timer(volume_name)\r"},{"line_number":268,"context_line":"        if not ret:\r"},{"line_number":269,"context_line":"            msg \u003d _(\u0027Clone volume %s failed!\u0027) % volume_name\r"},{"line_number":270,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":271,"context_line":"\r"},{"line_number":272,"context_line":"        LOG.debug(\u0027Dsware create volume from volume ends.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_d0b6d5f7","line":269,"range":{"start_line":269,"start_character":21,"end_line":269,"end_character":43},"in_reply_to":"1aa78d24_fc75b0ca","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":273,"context_line":"\r"},{"line_number":274,"context_line":"        dsw_manager_ip \u003d self.dsware_client.get_manage_ip()\r"},{"line_number":275,"context_line":"        meta_data \u003d {}\r"},{"line_number":276,"context_line":"        if volume_metadata is not None:\r"},{"line_number":277,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":278,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":279,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":280,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":281,"context_line":"\r"},{"line_number":282,"context_line":"    def _check_create_cloned_volume_finish(self, new_volume_name):\r"},{"line_number":283,"context_line":"        LOG.debug(\u0027Loopcall: _check_create_cloned_volume_finish(), \u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_9c4d8c9c","line":280,"range":{"start_line":276,"start_character":5,"end_line":280,"end_character":38},"updated":"2016-07-07 03:06:35.000000000","message":"See above","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":273,"context_line":"\r"},{"line_number":274,"context_line":"        dsw_manager_ip \u003d self.dsware_client.get_manage_ip()\r"},{"line_number":275,"context_line":"        meta_data \u003d {}\r"},{"line_number":276,"context_line":"        if volume_metadata is not None:\r"},{"line_number":277,"context_line":"            for metadata in volume_metadata:\r"},{"line_number":278,"context_line":"                meta_data.update({metadata.key: metadata.value})\r"},{"line_number":279,"context_line":"        meta_data.update({\"manager_ip\": dsw_manager_ip})\r"},{"line_number":280,"context_line":"        return {\"metadata\": meta_data}\r"},{"line_number":281,"context_line":"\r"},{"line_number":282,"context_line":"    def _check_create_cloned_volume_finish(self, new_volume_name):\r"},{"line_number":283,"context_line":"        LOG.debug(\u0027Loopcall: _check_create_cloned_volume_finish(), \u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_b03a2997","line":280,"range":{"start_line":276,"start_character":5,"end_line":280,"end_character":38},"in_reply_to":"1aa78d24_9c4d8c9c","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":573,"context_line":"\r"},{"line_number":574,"context_line":"        return pools_status\r"},{"line_number":575,"context_line":"\r"},{"line_number":576,"context_line":"    def _update_pool_info_status(self):\r"},{"line_number":577,"context_line":"        status \u003d {}\r"},{"line_number":578,"context_line":"        status[\u0027volume_backend_name\u0027] \u003d self.configuration.volume_backend_name\r"},{"line_number":579,"context_line":"        status[\u0027vendor_name\u0027] \u003d \u0027Open Source\u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_fff762d0","line":576,"range":{"start_line":576,"start_character":8,"end_line":576,"end_character":32},"updated":"2016-07-07 03:06:35.000000000","message":"A docstring for this and _update_pool_type_status would be helpful to explain their differences - looks like they are for different driver versions? IF so, they could have clearer names to make this obvious?","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":573,"context_line":"\r"},{"line_number":574,"context_line":"        return pools_status\r"},{"line_number":575,"context_line":"\r"},{"line_number":576,"context_line":"    def _update_pool_info_status(self):\r"},{"line_number":577,"context_line":"        status \u003d {}\r"},{"line_number":578,"context_line":"        status[\u0027volume_backend_name\u0027] \u003d self.configuration.volume_backend_name\r"},{"line_number":579,"context_line":"        status[\u0027vendor_name\u0027] \u003d \u0027Open Source\u0027\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_70aa811a","line":576,"range":{"start_line":576,"start_character":8,"end_line":576,"end_character":32},"in_reply_to":"1aa78d24_fff762d0","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"7396dbf15c3cc5db819779946230d73ee572b5c5","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            elif dsware_version \u003d\u003d NEW_VERSION:\r"},{"line_number":627,"context_line":"                self._update_pool_type_status()\r"},{"line_number":628,"context_line":"            else:\r"},{"line_number":629,"context_line":"                LOG.error(_LE(\"Query Dsware version failed!\"))\r"},{"line_number":630,"context_line":"                msg \u003d \"Dsware query Dsware version failed!\"\r"},{"line_number":631,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":632,"context_line":"\r"},{"line_number":633,"context_line":"        return self._stats\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_54ae7ee6","line":630,"range":{"start_line":629,"start_character":15,"end_line":630,"end_character":59},"updated":"2016-07-06 14:37:10.000000000","message":"msg \u003d _LE(\"Dsware query Dsware version failed!\")\nLOG.error(msg)\n\nJust keep the same format with lines 518-519.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8ea34eca96952bd8f2835f5aa3b9077957ef7d75","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            elif dsware_version \u003d\u003d NEW_VERSION:\r"},{"line_number":627,"context_line":"                self._update_pool_type_status()\r"},{"line_number":628,"context_line":"            else:\r"},{"line_number":629,"context_line":"                LOG.error(_LE(\"Query Dsware version failed!\"))\r"},{"line_number":630,"context_line":"                msg \u003d \"Dsware query Dsware version failed!\"\r"},{"line_number":631,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":632,"context_line":"\r"},{"line_number":633,"context_line":"        return self._stats\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_6d31115a","line":630,"range":{"start_line":629,"start_character":15,"end_line":630,"end_character":59},"in_reply_to":"1aa78d24_54ae7ee6","updated":"2016-07-07 01:46:46.000000000","message":"Agreed. Should probably use _() for translation if it is being passed to an exception too, but in practice it makes little difference.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            elif dsware_version \u003d\u003d NEW_VERSION:\r"},{"line_number":627,"context_line":"                self._update_pool_type_status()\r"},{"line_number":628,"context_line":"            else:\r"},{"line_number":629,"context_line":"                LOG.error(_LE(\"Query Dsware version failed!\"))\r"},{"line_number":630,"context_line":"                msg \u003d \"Dsware query Dsware version failed!\"\r"},{"line_number":631,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":632,"context_line":"\r"},{"line_number":633,"context_line":"        return self._stats\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_3f71ea44","line":630,"range":{"start_line":629,"start_character":15,"end_line":630,"end_character":59},"in_reply_to":"1aa78d24_54ae7ee6","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            elif dsware_version \u003d\u003d NEW_VERSION:\r"},{"line_number":627,"context_line":"                self._update_pool_type_status()\r"},{"line_number":628,"context_line":"            else:\r"},{"line_number":629,"context_line":"                LOG.error(_LE(\"Query Dsware version failed!\"))\r"},{"line_number":630,"context_line":"                msg \u003d \"Dsware query Dsware version failed!\"\r"},{"line_number":631,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":632,"context_line":"\r"},{"line_number":633,"context_line":"        return self._stats\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_3950dd0a","line":630,"range":{"start_line":629,"start_character":15,"end_line":630,"end_character":59},"in_reply_to":"1aa78d24_6d31115a","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":652,"context_line":"\r"},{"line_number":653,"context_line":"\r"},{"line_number":654,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":655,"context_line":"    \"\"\"Use Dsware local driver.\"\"\"\r"},{"line_number":656,"context_line":"\r"},{"line_number":657,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":658,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_5f1af617","line":655,"range":{"start_line":655,"start_character":0,"end_line":655,"end_character":34},"updated":"2016-07-07 03:06:35.000000000","message":"Please make this explain a bit more about this driver and when you\u0027d use it","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":652,"context_line":"\r"},{"line_number":653,"context_line":"\r"},{"line_number":654,"context_line":"class DSWARELocalDriver(DSWAREDriver):\r"},{"line_number":655,"context_line":"    \"\"\"Use Dsware local driver.\"\"\"\r"},{"line_number":656,"context_line":"\r"},{"line_number":657,"context_line":"    def __init__(self, *args, **kwargs):\r"},{"line_number":658,"context_line":"        super(DSWARELocalDriver, self).__init__(*args, **kwargs)\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_2b452c45","line":655,"range":{"start_line":655,"start_character":0,"end_line":655,"end_character":34},"in_reply_to":"1aa78d24_5f1af617","updated":"2016-07-07 08:45:07.000000000","message":"Actually, we use this driver as FusionStorage Driver. Now I have merged these two drivers.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":18026,"name":"huanan","email":"huanan@huawei.com","username":"huanan"},"change_message_id":"7396dbf15c3cc5db819779946230d73ee572b5c5","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        properties[\u0027volume\u0027] \u003d volume\r"},{"line_number":667,"context_line":"        properties[\u0027dsw_manager_ip\u0027] \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":668,"context_line":"\r"},{"line_number":669,"context_line":"        LOG.debug(\"End initialize connection %s.\", properties)\r"},{"line_number":670,"context_line":"\r"},{"line_number":671,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027dsware\u0027,\r"},{"line_number":672,"context_line":"                \u0027data\u0027: properties}\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_94ec66f4","line":669,"range":{"start_line":669,"start_character":18,"end_line":669,"end_character":49},"updated":"2016-07-06 14:37:10.000000000","message":"Use \"End initialize connection with properties:%s.\" is more better.","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        properties[\u0027volume\u0027] \u003d volume\r"},{"line_number":667,"context_line":"        properties[\u0027dsw_manager_ip\u0027] \u003d self._get_dsware_manage_ip(volume)\r"},{"line_number":668,"context_line":"\r"},{"line_number":669,"context_line":"        LOG.debug(\"End initialize connection %s.\", properties)\r"},{"line_number":670,"context_line":"\r"},{"line_number":671,"context_line":"        return {\u0027driver_volume_type\u0027: \u0027dsware\u0027,\r"},{"line_number":672,"context_line":"                \u0027data\u0027: properties}\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_993f51b3","line":669,"range":{"start_line":669,"start_character":18,"end_line":669,"end_character":49},"in_reply_to":"1aa78d24_94ec66f4","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":149,"context_line":"        except Exception as e:\r"},{"line_number":150,"context_line":"            LOG.exception(_LE(\"Create volume error, details is: %s.\"),\r"},{"line_number":151,"context_line":"                          six.text_type(e))\r"},{"line_number":152,"context_line":"            raise\r"},{"line_number":153,"context_line":"\r"},{"line_number":154,"context_line":"        if result !\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_cdb8c0eb","line":151,"range":{"start_line":151,"start_character":26,"end_line":151,"end_character":40},"updated":"2016-07-08 02:54:51.000000000","message":"Please remove this here, it is not needed for passing in to logging calls.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                volume_id, pool_id, volume_size, int(isThin))\r"},{"line_number":149,"context_line":"        except Exception as e:\r"},{"line_number":150,"context_line":"            LOG.exception(_LE(\"Create volume error, details is: %s.\"),\r"},{"line_number":151,"context_line":"                          six.text_type(e))\r"},{"line_number":152,"context_line":"            raise\r"},{"line_number":153,"context_line":"\r"},{"line_number":154,"context_line":"        if result !\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_431ca113","line":151,"range":{"start_line":151,"start_character":26,"end_line":151,"end_character":40},"in_reply_to":"1aa78d24_cdb8c0eb","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return {\"provider_id\": dsw_manager_ip}\r"},{"line_number":194,"context_line":"\r"},{"line_number":195,"context_line":"    def create_cloned_volume(self, volume, src_volume):\r"},{"line_number":196,"context_line":"        \u0027\u0027\u0027Dispatcher to Dsware client to create volume from volume.\r"},{"line_number":197,"context_line":"\r"},{"line_number":198,"context_line":"        Wait volume create finished.\r"},{"line_number":199,"context_line":"        \u0027\u0027\u0027\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ada454b9","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":11},"updated":"2016-07-08 02:54:51.000000000","message":"Docstring actually needs to be \"\"\", not \u0027\u0027\u0027. Please change throughout.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return {\"provider_id\": dsw_manager_ip}\r"},{"line_number":194,"context_line":"\r"},{"line_number":195,"context_line":"    def create_cloned_volume(self, volume, src_volume):\r"},{"line_number":196,"context_line":"        \u0027\u0027\u0027Dispatcher to Dsware client to create volume from volume.\r"},{"line_number":197,"context_line":"\r"},{"line_number":198,"context_line":"        Wait volume create finished.\r"},{"line_number":199,"context_line":"        \u0027\u0027\u0027\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_23dcf545","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":11},"in_reply_to":"1aa78d24_ada454b9","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":232,"context_line":"\r"},{"line_number":233,"context_line":"        if current_volume:\r"},{"line_number":234,"context_line":"            status \u003d current_volume[\u0027status\u0027]\r"},{"line_number":235,"context_line":"            LOG.debug(\u0027Wait cloned volume, {0} {1}.\u0027.format(new_volume_name,\r"},{"line_number":236,"context_line":"                                                            status))\r"},{"line_number":237,"context_line":"            if int(status) \u003d\u003d self.DSWARE_VOLUME_CREATING_STATUS or int(\r"},{"line_number":238,"context_line":"                    status) \u003d\u003d self.DSWARE_VOLUME_DUPLICATE_VOLUME:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_6d9b8c73","line":235,"range":{"start_line":235,"start_character":52,"end_line":235,"end_character":59},"updated":"2016-07-08 02:54:51.000000000","message":"Remove string formatting. Pass in formatting variable to the logger like in other instances.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":232,"context_line":"\r"},{"line_number":233,"context_line":"        if current_volume:\r"},{"line_number":234,"context_line":"            status \u003d current_volume[\u0027status\u0027]\r"},{"line_number":235,"context_line":"            LOG.debug(\u0027Wait cloned volume, {0} {1}.\u0027.format(new_volume_name,\r"},{"line_number":236,"context_line":"                                                            status))\r"},{"line_number":237,"context_line":"            if int(status) \u003d\u003d self.DSWARE_VOLUME_CREATING_STATUS or int(\r"},{"line_number":238,"context_line":"                    status) \u003d\u003d self.DSWARE_VOLUME_DUPLICATE_VOLUME:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_03e1f9fe","line":235,"range":{"start_line":235,"start_character":52,"end_line":235,"end_character":59},"in_reply_to":"1aa78d24_6d9b8c73","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                result \u003d self._query_volume_attach(volume[\u0027name\u0027],\r"},{"line_number":360,"context_line":"                                                   dsw_manager_ip)\r"},{"line_number":361,"context_line":"                if not result or int(result[\u0027ret_code\u0027]) !\u003d 0:\r"},{"line_number":362,"context_line":"                    msg \u003d \"Query volume attach failed, result\u003d%s.\" % result\r"},{"line_number":363,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":364,"context_line":"\r"},{"line_number":365,"context_line":"            elif int(retcode) \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_cd8d602c","line":362,"updated":"2016-07-08 02:54:51.000000000","message":"Needs _() translation marker.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                result \u003d self._query_volume_attach(volume[\u0027name\u0027],\r"},{"line_number":360,"context_line":"                                                   dsw_manager_ip)\r"},{"line_number":361,"context_line":"                if not result or int(result[\u0027ret_code\u0027]) !\u003d 0:\r"},{"line_number":362,"context_line":"                    msg \u003d \"Query volume attach failed, result\u003d%s.\" % result\r"},{"line_number":363,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":364,"context_line":"\r"},{"line_number":365,"context_line":"            elif int(retcode) \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_23b3550c","line":362,"in_reply_to":"1aa78d24_cd8d602c","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                                      volume_attach_path)\r"},{"line_number":385,"context_line":"        except Exception as e:\r"},{"line_number":386,"context_line":"            LOG.error(_LE(\"Upload volume error, details: %s.\"),\r"},{"line_number":387,"context_line":"                      six.text_type(e))\r"},{"line_number":388,"context_line":"            raise e\r"},{"line_number":389,"context_line":"        finally:\r"},{"line_number":390,"context_line":"            if not already_attached:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ed9c9c5f","line":387,"range":{"start_line":387,"start_character":22,"end_line":387,"end_character":35},"updated":"2016-07-08 02:54:51.000000000","message":"Remove six.text_type","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                                      volume_attach_path)\r"},{"line_number":385,"context_line":"        except Exception as e:\r"},{"line_number":386,"context_line":"            LOG.error(_LE(\"Upload volume error, details: %s.\"),\r"},{"line_number":387,"context_line":"                      six.text_type(e))\r"},{"line_number":388,"context_line":"            raise e\r"},{"line_number":389,"context_line":"        finally:\r"},{"line_number":390,"context_line":"            if not already_attached:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_03b8d9e4","line":387,"range":{"start_line":387,"start_character":22,"end_line":387,"end_character":35},"in_reply_to":"1aa78d24_ed9c9c5f","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        snapshot_info \u003d self.dsware_client.query_snap(snapshot_name)\r"},{"line_number":432,"context_line":"        LOG.debug(\"Get snapshot, snapshot_info is : %s.\", snapshot_info)\r"},{"line_number":433,"context_line":"        if snapshot_info[\u0027result\u0027] \u003d\u003d SNAP_NOT_EXIST:\r"},{"line_number":434,"context_line":"            msg \u003d _(\u0027Snapshot: %s not found!\u0027) % snapshot_name\r"},{"line_number":435,"context_line":"            LOG.error(msg)\r"},{"line_number":436,"context_line":"            return False\r"},{"line_number":437,"context_line":"        elif snapshot_info[\u0027result\u0027] \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_6dc0ac2b","line":434,"updated":"2016-07-08 02:54:51.000000000","message":"This is only used in the LOG.error call so please change to _LE() translation marker and pass snapshot_name as an argument into the logging call.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        snapshot_info \u003d self.dsware_client.query_snap(snapshot_name)\r"},{"line_number":432,"context_line":"        LOG.debug(\"Get snapshot, snapshot_info is : %s.\", snapshot_info)\r"},{"line_number":433,"context_line":"        if snapshot_info[\u0027result\u0027] \u003d\u003d SNAP_NOT_EXIST:\r"},{"line_number":434,"context_line":"            msg \u003d _(\u0027Snapshot: %s not found!\u0027) % snapshot_name\r"},{"line_number":435,"context_line":"            LOG.error(msg)\r"},{"line_number":436,"context_line":"            return False\r"},{"line_number":437,"context_line":"        elif snapshot_info[\u0027result\u0027] \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_a3c74563","line":434,"in_reply_to":"1aa78d24_6dc0ac2b","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        vol_id \u003d \u0027volume-%s\u0027 % snapshot[\u0027volume_id\u0027]\r"},{"line_number":462,"context_line":"        snapshot_id \u003d snapshot[\u0027name\u0027]\r"},{"line_number":463,"context_line":"        if not self._get_volume(vol_id):\r"},{"line_number":464,"context_line":"            msg \u003d _(\u0027Create Snapshot, but volume: %s not found!\u0027) % vol_id\r"},{"line_number":465,"context_line":"            LOG.error(msg)\r"},{"line_number":466,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvol_id)\r"},{"line_number":467,"context_line":"        else:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_4dd050f8","line":464,"range":{"start_line":464,"start_character":19,"end_line":464,"end_character":20},"updated":"2016-07-08 02:54:51.000000000","message":"_() \u003e _LE()\n% \u003e , into logger.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        vol_id \u003d \u0027volume-%s\u0027 % snapshot[\u0027volume_id\u0027]\r"},{"line_number":462,"context_line":"        snapshot_id \u003d snapshot[\u0027name\u0027]\r"},{"line_number":463,"context_line":"        if not self._get_volume(vol_id):\r"},{"line_number":464,"context_line":"            msg \u003d _(\u0027Create Snapshot, but volume: %s not found!\u0027) % vol_id\r"},{"line_number":465,"context_line":"            LOG.error(msg)\r"},{"line_number":466,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvol_id)\r"},{"line_number":467,"context_line":"        else:\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_83c4c95f","line":464,"range":{"start_line":464,"start_character":19,"end_line":464,"end_character":20},"in_reply_to":"1aa78d24_4dd050f8","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    def delete_snapshot(self, snapshot):\r"},{"line_number":471,"context_line":"        LOG.debug(\"Delete snapshot %s.\", snapshot[\u0027name\u0027])\r"},{"line_number":472,"context_line":"        snapshot_id \u003d snapshot[\u0027name\u0027]\r"},{"line_number":473,"context_line":"        if not self._get_snapshot(snapshot_id):\r"},{"line_number":474,"context_line":"            return\r"},{"line_number":475,"context_line":"        else:\r"},{"line_number":476,"context_line":"            self._delete_snapshot(snapshot_id)\r"},{"line_number":477,"context_line":"\r"},{"line_number":478,"context_line":"    def _calculate_pool_info(self, pool_sets):\r"},{"line_number":479,"context_line":"        filter \u003d False\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ad073480","line":476,"range":{"start_line":473,"start_character":8,"end_line":476,"end_character":46},"updated":"2016-07-08 02:54:51.000000000","message":"This could be simplified to just be:\n\nif self._get_snapshot(snapshot_id):\n    self._delete_snapshot(snapshot_id)","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    def delete_snapshot(self, snapshot):\r"},{"line_number":471,"context_line":"        LOG.debug(\"Delete snapshot %s.\", snapshot[\u0027name\u0027])\r"},{"line_number":472,"context_line":"        snapshot_id \u003d snapshot[\u0027name\u0027]\r"},{"line_number":473,"context_line":"        if not self._get_snapshot(snapshot_id):\r"},{"line_number":474,"context_line":"            return\r"},{"line_number":475,"context_line":"        else:\r"},{"line_number":476,"context_line":"            self._delete_snapshot(snapshot_id)\r"},{"line_number":477,"context_line":"\r"},{"line_number":478,"context_line":"    def _calculate_pool_info(self, pool_sets):\r"},{"line_number":479,"context_line":"        filter \u003d False\r"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_e39f8d63","line":476,"range":{"start_line":473,"start_character":8,"end_line":476,"end_character":46},"in_reply_to":"1aa78d24_ad073480","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":18481,"name":"menglong huang","email":"huangmenglong@huawei.com","username":"huangmenglong"},"change_message_id":"84231b0263f9a27469ee1281d550735febfc672d","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    def _get_volume(self, volume_name):\r"},{"line_number":393,"context_line":"        result \u003d self.dsware_client.query_volume(volume_name)\r"},{"line_number":394,"context_line":"        LOG.debug(\"Dsware query volume result is %s.\", result[\u0027result\u0027])\r"},{"line_number":395,"context_line":"        if result[\u0027result\u0027] \u003d\u003d VOLUME_NOT_EXIST:\r"},{"line_number":396,"context_line":"            LOG.debug(\"Dsware volume %s does not exist.\", volume_name)\r"},{"line_number":397,"context_line":"            return False\r"},{"line_number":398,"context_line":"        elif result[\u0027result\u0027] \u003d\u003d 0:\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_0b3fab24","line":395,"range":{"start_line":395,"start_character":31,"end_line":395,"end_character":47},"updated":"2017-01-23 03:46:30.000000000","message":"are you sure the result[\u0027result\u0027] will end with \u0027\\n\u0027, if the volume does not exist?","commit_id":"ecfb70cfebed4a40c24bcb874c18eede62a4b378"}],"cinder/volume/drivers/fusionstorage/fspythonapi.py":[{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"41be4987165a99e4132b2f312f053472e4a636c0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            return result"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def create_volume(self, vol_name, pool_id, vol_size, thin_flag):"},{"line_number":179,"context_line":"        cmd \u003d \u0027--op createVolume\u0027 + \u0027 \u0027 + \u0027--volName\u0027 + \u0027 \u0027 + str("},{"line_number":180,"context_line":"            vol_name) + \u0027 \u0027 + \u0027--poolId\u0027 + \u0027 \u0027 + str("},{"line_number":181,"context_line":"            pool_id) + \u0027 \u0027 + \u0027--volSize\u0027 + \u0027 \u0027 + str("},{"line_number":182,"context_line":"            vol_size) + \u0027 \u0027 + \u0027--thinFlag\u0027 + \u0027 \u0027 + str(thin_flag)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        exec_result \u003d self.start_execute_cmd(cmd, 0)"},{"line_number":185,"context_line":"        if exec_result:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_c8fec06a","line":182,"range":{"start_line":179,"start_character":8,"end_line":182,"end_character":65},"updated":"2016-06-20 21:14:44.000000000","message":"Due to compatibility matters, its preferable to six.text_type instead of str","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"72076c575f9ee7d8338ac7371af426d1ee002807","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            return result"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def create_volume(self, vol_name, pool_id, vol_size, thin_flag):"},{"line_number":179,"context_line":"        cmd \u003d \u0027--op createVolume\u0027 + \u0027 \u0027 + \u0027--volName\u0027 + \u0027 \u0027 + str("},{"line_number":180,"context_line":"            vol_name) + \u0027 \u0027 + \u0027--poolId\u0027 + \u0027 \u0027 + str("},{"line_number":181,"context_line":"            pool_id) + \u0027 \u0027 + \u0027--volSize\u0027 + \u0027 \u0027 + str("},{"line_number":182,"context_line":"            vol_size) + \u0027 \u0027 + \u0027--thinFlag\u0027 + \u0027 \u0027 + str(thin_flag)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        exec_result \u003d self.start_execute_cmd(cmd, 0)"},{"line_number":185,"context_line":"        if exec_result:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_6eb18b8f","line":182,"range":{"start_line":179,"start_character":8,"end_line":182,"end_character":65},"in_reply_to":"5a9d85d2_c8fec06a","updated":"2016-06-21 03:55:43.000000000","message":"Done","commit_id":"4457ae7d512b7192eb2a1d1fc583bda89e95fa90"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5002837ce50edc6a250ad2d6f1ae46af9c665f8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"fsc_ip \u003d []"},{"line_number":31,"context_line":"fsc_port \u003d \u002710519\u0027"},{"line_number":32,"context_line":"manage_ip \u003d \"127.0.0.1\""},{"line_number":33,"context_line":"CMD_BIN \u003d \u0027sudo cinder-rootwrap /etc/cinder/rootwrap.conf \u0027 + fsc_cli + \u0027 \u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"volume_info \u003d {"},{"line_number":36,"context_line":"    \u0027result\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_ff93e258","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":75},"updated":"2016-07-07 03:06:35.000000000","message":"We have existing utility functions to execute commands, please look at using them","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"bd522dddbdc7bf4109d3ac632dc7515f52585669","unresolved":false,"context_lines":[{"line_number":30,"context_line":"fsc_ip \u003d []"},{"line_number":31,"context_line":"fsc_port \u003d \u002710519\u0027"},{"line_number":32,"context_line":"manage_ip \u003d \"127.0.0.1\""},{"line_number":33,"context_line":"CMD_BIN \u003d \u0027sudo cinder-rootwrap /etc/cinder/rootwrap.conf \u0027 + fsc_cli + \u0027 \u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"volume_info \u003d {"},{"line_number":36,"context_line":"    \u0027result\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_0e06791f","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":75},"in_reply_to":"1aa78d24_ff93e258","updated":"2016-07-07 08:45:07.000000000","message":"Done","commit_id":"15771491868dfb9e15e0c0672718eff8650f185d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                        tmp_vbs_url \u003d line[8:]"},{"line_number":84,"context_line":"                        return re.split(\u0027,\u0027, tmp_vbs_url)"},{"line_number":85,"context_line":"            except Exception as e:"},{"line_number":86,"context_line":"                LOG.debug(\"Get fsc ip failed, error\u003d%s.\", six.text_type(e))"},{"line_number":87,"context_line":"            finally:"},{"line_number":88,"context_line":"                fsc_file.close()"},{"line_number":89,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ad2e14f8","line":86,"range":{"start_line":86,"start_character":58,"end_line":86,"end_character":71},"updated":"2016-07-08 02:54:51.000000000","message":"Remove six.text_type","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                        tmp_vbs_url \u003d line[8:]"},{"line_number":84,"context_line":"                        return re.split(\u0027,\u0027, tmp_vbs_url)"},{"line_number":85,"context_line":"            except Exception as e:"},{"line_number":86,"context_line":"                LOG.debug(\"Get fsc ip failed, error\u003d%s.\", six.text_type(e))"},{"line_number":87,"context_line":"            finally:"},{"line_number":88,"context_line":"                fsc_file.close()"},{"line_number":89,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_23aa3586","line":86,"range":{"start_line":86,"start_character":58,"end_line":86,"end_character":71},"in_reply_to":"1aa78d24_ad2e14f8","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                        manage_ip \u003d manage_ip.strip(\u0027\\n\u0027)"},{"line_number":102,"context_line":"                        return manage_ip"},{"line_number":103,"context_line":"            except Exception as e:"},{"line_number":104,"context_line":"                LOG.debug(\"Get manage ip failed, error\u003d%s.\", six.text_type(e))"},{"line_number":105,"context_line":"            finally:"},{"line_number":106,"context_line":"                fsc_file.close()"},{"line_number":107,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ed381c40","line":104,"range":{"start_line":104,"start_character":61,"end_line":104,"end_character":74},"updated":"2016-07-08 02:54:51.000000000","message":"Remove six.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                        manage_ip \u003d manage_ip.strip(\u0027\\n\u0027)"},{"line_number":102,"context_line":"                        return manage_ip"},{"line_number":103,"context_line":"            except Exception as e:"},{"line_number":104,"context_line":"                LOG.debug(\"Get manage ip failed, error\u003d%s.\", six.text_type(e))"},{"line_number":105,"context_line":"            finally:"},{"line_number":106,"context_line":"                fsc_file.close()"},{"line_number":107,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_43914152","line":104,"range":{"start_line":104,"start_character":61,"end_line":104,"end_character":74},"in_reply_to":"1aa78d24_ed381c40","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def get_dsw_manage_ip(self):"},{"line_number":111,"context_line":"        return manage_ip"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def start_execute_cmd(self, cmd, type):"},{"line_number":114,"context_line":"        fsc_ip \u003d self.get_ip_port()"},{"line_number":115,"context_line":"        manage_ip \u003d self.get_manage_ip()"},{"line_number":116,"context_line":"        ip_num \u003d len(fsc_ip)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_6d454cb2","line":113,"range":{"start_line":113,"start_character":37,"end_line":113,"end_character":41},"updated":"2016-07-08 02:54:51.000000000","message":"I would recommend using a variable name that is not a keyword.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def get_dsw_manage_ip(self):"},{"line_number":111,"context_line":"        return manage_ip"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def start_execute_cmd(self, cmd, type):"},{"line_number":114,"context_line":"        fsc_ip \u003d self.get_ip_port()"},{"line_number":115,"context_line":"        manage_ip \u003d self.get_manage_ip()"},{"line_number":116,"context_line":"        ip_num \u003d len(fsc_ip)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_839b2972","line":113,"range":{"start_line":113,"start_character":37,"end_line":113,"end_character":41},"in_reply_to":"1aa78d24_6d454cb2","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d62687d5107ff16fe20910b53d45615756ad6619","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                local_snap_info[\u0027create_time\u0027] \u003d line[len(\u0027create_time\u003d\u0027):]"},{"line_number":377,"context_line":"            else:"},{"line_number":378,"context_line":"                LOG.error(_LE(\"Analyze key not exist, key\u003d%s.\"),"},{"line_number":379,"context_line":"                          six.text_type(line))"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        return local_snap_info"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_ad7c54ec","line":379,"range":{"start_line":379,"start_character":26,"end_line":379,"end_character":38},"updated":"2016-07-08 02:54:51.000000000","message":"Remove six.text_type, should not be used in any logging calls.","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"},{"author":{"_account_id":22172,"name":"ningwei","email":"jxxiaohou331500@yeah.net","username":"ningwei"},"change_message_id":"915ec0c84594490ad0dae8b9c44eac9b574bafa3","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                local_snap_info[\u0027create_time\u0027] \u003d line[len(\u0027create_time\u003d\u0027):]"},{"line_number":377,"context_line":"            else:"},{"line_number":378,"context_line":"                LOG.error(_LE(\"Analyze key not exist, key\u003d%s.\"),"},{"line_number":379,"context_line":"                          six.text_type(line))"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        return local_snap_info"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_83720948","line":379,"range":{"start_line":379,"start_character":26,"end_line":379,"end_character":38},"in_reply_to":"1aa78d24_ad7c54ec","updated":"2016-07-08 05:33:18.000000000","message":"Done","commit_id":"2c295d8259f4f15dc326baadddd9322814105964"}],"releasenotes/notes/fusionstorage-cinder-driver-8f3bca98f6e2065a.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11743a62d89c5fe2069de7687eb086f8c25e13a1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added backend driver for huawei FusionStorage."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7aa08908_7603c442","line":3,"range":{"start_line":3,"start_character":29,"end_line":3,"end_character":30},"updated":"2016-06-13 16:07:24.000000000","message":"H should be capitalized.","commit_id":"497fd20bb04805ae084d6c0c794125f851dceae8"}]}
