)]}'
{"cinder/tests/unit/volume/drivers/sandstone/test_sds_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import requests"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import test"},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.sandstone import test_utils"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a5c78e65","line":19,"updated":"2019-12-04 14:29:13.000000000","message":"Need blank line after mock and before requests. Import structure should be standard library imports, blank line, third party imports, blank line, local imports.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import requests"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import test"},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.sandstone import test_utils"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_112a4b7d","line":19,"in_reply_to":"3fa7e38b_a5c78e65","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                                         True)"},{"line_number":147,"context_line":"        self.client.login()"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def tearDown(self):"},{"line_number":150,"context_line":"        \"\"\"Teardown.\"\"\""},{"line_number":151,"context_line":"        super(TestSdsclient, self).tearDown()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def test_login(self):"},{"line_number":154,"context_line":"        \"\"\"Test login and check headers.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_788ca234","line":151,"range":{"start_line":149,"start_character":0,"end_line":151,"end_character":45},"updated":"2019-12-09 11:00:52.000000000","message":"Please, delete empty tearDown method","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                                         True)"},{"line_number":147,"context_line":"        self.client.login()"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def tearDown(self):"},{"line_number":150,"context_line":"        \"\"\"Teardown.\"\"\""},{"line_number":151,"context_line":"        super(TestSdsclient, self).tearDown()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def test_login(self):"},{"line_number":154,"context_line":"        \"\"\"Test login and check headers.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_b11a5768","line":151,"range":{"start_line":149,"start_character":0,"end_line":151,"end_character":45},"in_reply_to":"3fa7e38b_788ca234","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"}],"cinder/tests/unit/volume/drivers/sandstone/test_sds_driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":26,"context_line":"from cinder.volume.drivers.sandstone import sds_client"},{"line_number":27,"context_line":"from cinder.volume.drivers.sandstone import sds_driver"},{"line_number":28,"context_line":"from oslo_utils import units"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FakeSdsBaseDriver(sds_driver.SdsBaseDriver):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e5b586ee","line":28,"updated":"2019-12-04 14:29:13.000000000","message":"Should be in a separate group prior to the cinder imports for third party imports. ddt should be included with it.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":26,"context_line":"from cinder.volume.drivers.sandstone import sds_client"},{"line_number":27,"context_line":"from cinder.volume.drivers.sandstone import sds_driver"},{"line_number":28,"context_line":"from oslo_utils import units"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FakeSdsBaseDriver(sds_driver.SdsBaseDriver):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_51944341","line":28,"in_reply_to":"3fa7e38b_e5b586ee","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"class TestSdsBaseDriver(test.TestCase):"},{"line_number":53,"context_line":"    \"\"\"Testcase sds base driver.\"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    fake_driver \u003d None"},{"line_number":56,"context_line":"    client \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def setUp(self):"},{"line_number":59,"context_line":"        \"\"\"Setup.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_18924e4b","line":56,"range":{"start_line":55,"start_character":0,"end_line":56,"end_character":17},"updated":"2019-12-09 11:00:52.000000000","message":"nit: We can omit these declarations","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":52,"context_line":"class TestSdsBaseDriver(test.TestCase):"},{"line_number":53,"context_line":"    \"\"\"Testcase sds base driver.\"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    fake_driver \u003d None"},{"line_number":56,"context_line":"    client \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def setUp(self):"},{"line_number":59,"context_line":"        \"\"\"Setup.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d11fd357","line":56,"range":{"start_line":55,"start_character":0,"end_line":56,"end_character":17},"in_reply_to":"3fa7e38b_18924e4b","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\"Setup.\"\"\""},{"line_number":60,"context_line":"        super(TestSdsBaseDriver, self).setUp()"},{"line_number":61,"context_line":"        self.fake_driver \u003d FakeSdsBaseDriver()"},{"line_number":62,"context_line":"        self.fake_driver.client \u003d \\"},{"line_number":63,"context_line":"            sds_client.RestCmd(\u0027192.168.200.100\u0027,"},{"line_number":64,"context_line":"                               \u0027fake_user\u0027,"},{"line_number":65,"context_line":"                               \u0027fake_password\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_38970a3c","line":62,"updated":"2019-12-09 11:00:52.000000000","message":"Please, don\u0027t use back-slash for multi-line statements","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\"Setup.\"\"\""},{"line_number":60,"context_line":"        super(TestSdsBaseDriver, self).setUp()"},{"line_number":61,"context_line":"        self.fake_driver \u003d FakeSdsBaseDriver()"},{"line_number":62,"context_line":"        self.fake_driver.client \u003d \\"},{"line_number":63,"context_line":"            sds_client.RestCmd(\u0027192.168.200.100\u0027,"},{"line_number":64,"context_line":"                               \u0027fake_user\u0027,"},{"line_number":65,"context_line":"                               \u0027fake_password\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_71385fd3","line":62,"in_reply_to":"3fa7e38b_38970a3c","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                               \u0027fake_password\u0027,"},{"line_number":66,"context_line":"                               True)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def tearDown(self):"},{"line_number":69,"context_line":"        \"\"\"Teardown.\"\"\""},{"line_number":70,"context_line":"        super(TestSdsBaseDriver, self).tearDown()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @mock.patch.object(sds_client.RestCmd, \u0027login\u0027)"},{"line_number":73,"context_line":"    def test_do_setup(self, mock_login):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f89c125c","line":70,"range":{"start_line":68,"start_character":4,"end_line":70,"end_character":49},"updated":"2019-12-09 11:00:52.000000000","message":"We don\u0027t need empty tearDown method","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                               \u0027fake_password\u0027,"},{"line_number":66,"context_line":"                               True)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def tearDown(self):"},{"line_number":69,"context_line":"        \"\"\"Teardown.\"\"\""},{"line_number":70,"context_line":"        super(TestSdsBaseDriver, self).tearDown()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @mock.patch.object(sds_client.RestCmd, \u0027login\u0027)"},{"line_number":73,"context_line":"    def test_do_setup(self, mock_login):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9135dbdd","line":70,"range":{"start_line":68,"start_character":4,"end_line":70,"end_character":49},"in_reply_to":"3fa7e38b_f89c125c","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_do_setup(self, mock_login):"},{"line_number":74,"context_line":"        \"\"\"Do setup.\"\"\""},{"line_number":75,"context_line":"        self.fake_driver.do_setup(\u0027context\u0027)"},{"line_number":76,"context_line":"        mock_login.assert_called_once_with()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @mock.patch.object(sds_client.RestCmd, \u0027query_pool_info\u0027)"},{"line_number":79,"context_line":"    def test_check_for_setup_error(self, mock_query_pool_info):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_98a5dea2","line":76,"range":{"start_line":76,"start_character":19,"end_line":76,"end_character":42},"updated":"2019-12-09 11:00:52.000000000","message":"Please, add what actually arguments were passed or use `assert_called_once` method","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_do_setup(self, mock_login):"},{"line_number":74,"context_line":"        \"\"\"Do setup.\"\"\""},{"line_number":75,"context_line":"        self.fake_driver.do_setup(\u0027context\u0027)"},{"line_number":76,"context_line":"        mock_login.assert_called_once_with()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @mock.patch.object(sds_client.RestCmd, \u0027query_pool_info\u0027)"},{"line_number":79,"context_line":"    def test_check_for_setup_error(self, mock_query_pool_info):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_918e3b30","line":76,"range":{"start_line":76,"start_character":19,"end_line":76,"end_character":42},"in_reply_to":"3fa7e38b_98a5dea2","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":280,"context_line":"class TestSdsISCSIDriver(test.TestCase):"},{"line_number":281,"context_line":"    \"\"\"Testcase sds iscsi driver, include attach, detach.\"\"\""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    fake_driver \u003d None"},{"line_number":284,"context_line":"    client \u003d None"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_58b526cf","line":283,"updated":"2019-12-09 11:00:52.000000000","message":"The same as above","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":280,"context_line":"class TestSdsISCSIDriver(test.TestCase):"},{"line_number":281,"context_line":"    \"\"\"Testcase sds iscsi driver, include attach, detach.\"\"\""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    fake_driver \u003d None"},{"line_number":284,"context_line":"    client \u003d None"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_b17c9722","line":283,"in_reply_to":"3fa7e38b_58b526cf","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"}],"cinder/tests/unit/volume/drivers/sandstone/test_utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_45c6da6a","line":17,"updated":"2019-12-04 14:29:13.000000000","message":"re should be above with json.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"}],"cinder/volume/drivers/sandstone/constants.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"BASIC_URI \u003d \u0027/api/storage/\u0027"},{"line_number":20,"context_line":"OM_URI \u003d \u0027/api/om/\u0027"},{"line_number":21,"context_line":"CONF_PATH \u003d \"/etc/cinder/cinder.conf\""},{"line_number":22,"context_line":"Pagesize \u003d 1000"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_860003ad","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"updated":"2019-10-14 16:36:58.000000000","message":"why do we need it?","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"06a15ed6d203a497d28fb2ea2e85e72039becef6","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"BASIC_URI \u003d \u0027/api/storage/\u0027"},{"line_number":20,"context_line":"OM_URI \u003d \u0027/api/om/\u0027"},{"line_number":21,"context_line":"CONF_PATH \u003d \"/etc/cinder/cinder.conf\""},{"line_number":22,"context_line":"Pagesize \u003d 1000"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_d400da68","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":9},"in_reply_to":"3fa7e38b_860003ad","updated":"2019-10-15 02:07:06.000000000","message":"Done， not use， delete it.","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":19,"context_line":"BASIC_URI \u003d \u0027/api/storage/\u0027"},{"line_number":20,"context_line":"OM_URI \u003d \u0027/api/om/\u0027"},{"line_number":21,"context_line":"CONF_PATH \u003d \"/etc/cinder/cinder.conf\""},{"line_number":22,"context_line":"Pagesize \u003d 1000"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_06265369","line":22,"updated":"2019-10-14 16:36:58.000000000","message":"Constants should be named with upper case letters only","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"06a15ed6d203a497d28fb2ea2e85e72039becef6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"BASIC_URI \u003d \u0027/api/storage/\u0027"},{"line_number":20,"context_line":"OM_URI \u003d \u0027/api/om/\u0027"},{"line_number":21,"context_line":"CONF_PATH \u003d \"/etc/cinder/cinder.conf\""},{"line_number":22,"context_line":"Pagesize \u003d 1000"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_74fb2678","line":22,"in_reply_to":"3fa7e38b_06265369","updated":"2019-10-15 02:07:06.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"}],"cinder/volume/drivers/sandstone/sds_client.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"27614bc54a283b46996f6c42300f69d9c718eb12","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        \"\"\"Login web get with token session.\"\"\""},{"line_number":134,"context_line":"        url \u003d \u0027user/login\u0027"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        md5 \u003d hashlib.sha256()"},{"line_number":137,"context_line":"        md5.update(self.password.encode(\"utf8\"))"},{"line_number":138,"context_line":"        self.password \u003d md5.hexdigest()"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e9120658","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":11},"updated":"2019-10-11 14:30:28.000000000","message":"Please don\u0027t call this \"md5\" when it\u0027s an sha256 object...","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"5e694ba6fffaa8765740141ad0192e3fcef8bf86","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        \"\"\"Login web get with token session.\"\"\""},{"line_number":134,"context_line":"        url \u003d \u0027user/login\u0027"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        md5 \u003d hashlib.sha256()"},{"line_number":137,"context_line":"        md5.update(self.password.encode(\"utf8\"))"},{"line_number":138,"context_line":"        self.password \u003d md5.hexdigest()"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b47697a3","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":11},"in_reply_to":"3fa7e38b_e9120658","updated":"2019-10-12 09:01:38.000000000","message":"change variable name to sha256","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def __init__(self, address, user, password):"},{"line_number":39,"context_line":"        \"\"\"Init RestCmd class."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        Keyword arguments:"},{"line_number":42,"context_line":"        address -- Restapi url."},{"line_number":43,"context_line":"        user -- login web username."},{"line_number":44,"context_line":"        password -- login web password."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_c6e83be3","line":41,"updated":"2019-10-14 16:36:58.000000000","message":"Please, use docstring format like [1] for arguments description\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/manager.py#L114","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def __init__(self, address, user, password):"},{"line_number":39,"context_line":"        \"\"\"Init RestCmd class."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        Keyword arguments:"},{"line_number":42,"context_line":"        address -- Restapi url."},{"line_number":43,"context_line":"        user -- login web username."},{"line_number":44,"context_line":"        password -- login web password."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_f7d4f821","line":41,"in_reply_to":"3fa7e38b_c6e83be3","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.Pagesize"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        LOG.warning(\"Suppressing requests library SSL Warnings\")"},{"line_number":54,"context_line":"        requests.packages.urllib3.disable_warnings("},{"line_number":55,"context_line":"            requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":56,"context_line":"        requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_06a9738e","line":53,"updated":"2019-10-14 16:36:58.000000000","message":"I\u0027m not sure that we should always ignore SSL warnings. Maybe it\u0027s better to make it configurable","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7210c6eedba29c2af939c4a89e1345cb631054cf","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.Pagesize"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        LOG.warning(\"Suppressing requests library SSL Warnings\")"},{"line_number":54,"context_line":"        requests.packages.urllib3.disable_warnings("},{"line_number":55,"context_line":"            requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":56,"context_line":"        requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_6667074f","line":53,"in_reply_to":"3fa7e38b_06a9738e","updated":"2019-10-14 16:40:43.000000000","message":"Agree. There is a config option for deployers to do this if they want to. It should not be hard coded.","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.Pagesize"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        LOG.warning(\"Suppressing requests library SSL Warnings\")"},{"line_number":54,"context_line":"        requests.packages.urllib3.disable_warnings("},{"line_number":55,"context_line":"            requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":56,"context_line":"        requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_b7da0048","line":53,"in_reply_to":"3fa7e38b_06a9738e","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.Pagesize"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        LOG.warning(\"Suppressing requests library SSL Warnings\")"},{"line_number":54,"context_line":"        requests.packages.urllib3.disable_warnings("},{"line_number":55,"context_line":"            requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":56,"context_line":"        requests.packages.urllib3.disable_warnings("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_d7dd3c41","line":53,"in_reply_to":"3fa7e38b_6667074f","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            if exc.response.status_code \u003d\u003d constants.CONNECT_ERROR:"},{"line_number":100,"context_line":"                try:"},{"line_number":101,"context_line":"                    self.login()"},{"line_number":102,"context_line":"                except Exception as err:"},{"line_number":103,"context_line":"                    LOG.error(\"Sandstone web server may be abnormal\""},{"line_number":104,"context_line":"                              \"or storage may be poweroff.\")"},{"line_number":105,"context_line":"                    raise err"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e691b753","line":102,"range":{"start_line":102,"start_character":23,"end_line":102,"end_character":32},"updated":"2019-10-14 16:36:58.000000000","message":"Can we catch more specific exception here?","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            if exc.response.status_code \u003d\u003d constants.CONNECT_ERROR:"},{"line_number":100,"context_line":"                try:"},{"line_number":101,"context_line":"                    self.login()"},{"line_number":102,"context_line":"                except Exception as err:"},{"line_number":103,"context_line":"                    LOG.error(\"Sandstone web server may be abnormal\""},{"line_number":104,"context_line":"                              \"or storage may be poweroff.\")"},{"line_number":105,"context_line":"                    raise err"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_17d8b450","line":102,"range":{"start_line":102,"start_character":23,"end_line":102,"end_character":32},"in_reply_to":"3fa7e38b_e691b753","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.i18n import _"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone import constants"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import requests"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import six"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_85913256","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":10},"updated":"2019-12-04 14:29:13.000000000","message":"Remove blank lines between these and move before the cinder imports.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.i18n import _"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone import constants"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"import requests"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import six"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5e2452c3","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":10},"in_reply_to":"3fa7e38b_85913256","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.PAGESIZE"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        if suppress_requests_ssl_warnings:"},{"line_number":54,"context_line":"            LOG.warning(\"Suppressing requests library SSL Warnings.\")"},{"line_number":55,"context_line":"            requests.packages.urllib3.disable_warnings("},{"line_number":56,"context_line":"                requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":57,"context_line":"            requests.packages.urllib3.disable_warnings("},{"line_number":58,"context_line":"                requests.packages.urllib3.exceptions.InsecurePlatformWarning)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _init_http_header(self):"},{"line_number":61,"context_line":"        self.session \u003d requests.Session()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_883869d4","line":58,"range":{"start_line":53,"start_character":8,"end_line":58,"end_character":77},"updated":"2019-12-04 15:07:17.000000000","message":"This is not needed:\n\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/manager.py#L253","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.pagesize \u003d constants.PAGESIZE"},{"line_number":51,"context_line":"        self.session \u003d None"},{"line_number":52,"context_line":"        self._init_http_header()"},{"line_number":53,"context_line":"        if suppress_requests_ssl_warnings:"},{"line_number":54,"context_line":"            LOG.warning(\"Suppressing requests library SSL Warnings.\")"},{"line_number":55,"context_line":"            requests.packages.urllib3.disable_warnings("},{"line_number":56,"context_line":"                requests.packages.urllib3.exceptions.InsecureRequestWarning)"},{"line_number":57,"context_line":"            requests.packages.urllib3.disable_warnings("},{"line_number":58,"context_line":"                requests.packages.urllib3.exceptions.InsecurePlatformWarning)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _init_http_header(self):"},{"line_number":61,"context_line":"        self.session \u003d requests.Session()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_fe165e58","line":58,"range":{"start_line":53,"start_character":8,"end_line":58,"end_character":77},"in_reply_to":"3fa7e38b_883869d4","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        func \u003d getattr(self.session, method.lower())"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            result \u003d func(rest_url, **kwargs)"},{"line_number":90,"context_line":"        except Exception as err:"},{"line_number":91,"context_line":"            msg \u003d _(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":92,"context_line":"                    \u0027Error: %(err)s\u0027) % {\u0027url\u0027: rest_url, \u0027err\u0027: err}"},{"line_number":93,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d8c83657","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":32},"updated":"2019-12-09 11:00:52.000000000","message":"Can we catch more specific exception here?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        func \u003d getattr(self.session, method.lower())"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            result \u003d func(rest_url, **kwargs)"},{"line_number":90,"context_line":"        except Exception as err:"},{"line_number":91,"context_line":"            msg \u003d _(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":92,"context_line":"                    \u0027Error: %(err)s\u0027) % {\u0027url\u0027: rest_url, \u0027err\u0027: err}"},{"line_number":93,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_be0c6644","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":32},"in_reply_to":"3fa7e38b_d8c83657","updated":"2020-02-06 10:52:12.000000000","message":"rest api will return many types err. so use Exception to catch it.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                except requests.ConnectTimeout as err:"},{"line_number":103,"context_line":"                    LOG.error(\"Sandstone web server may be abnormal \""},{"line_number":104,"context_line":"                              \"or storage may be poweroff.\")"},{"line_number":105,"context_line":"                    raise err"},{"line_number":106,"context_line":"            else:"},{"line_number":107,"context_line":"                return {\"error\": {\"code\": exc.response.status_code,"},{"line_number":108,"context_line":"                                  \"description\": six.text_type(exc)}}"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_2884d55c","line":105,"range":{"start_line":105,"start_character":20,"end_line":105,"end_character":29},"updated":"2019-12-04 15:07:17.000000000","message":"Should just be \"raise\" not \"raise err\".","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                except requests.ConnectTimeout as err:"},{"line_number":103,"context_line":"                    LOG.error(\"Sandstone web server may be abnormal \""},{"line_number":104,"context_line":"                              \"or storage may be poweroff.\")"},{"line_number":105,"context_line":"                    raise err"},{"line_number":106,"context_line":"            else:"},{"line_number":107,"context_line":"                return {\"error\": {\"code\": exc.response.status_code,"},{"line_number":108,"context_line":"                                  \"description\": six.text_type(exc)}}"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_7e0a6e27","line":105,"range":{"start_line":105,"start_character":20,"end_line":105,"end_character":29},"in_reply_to":"3fa7e38b_2884d55c","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        data \u003d {\"targetName\": target_name,"},{"line_number":199,"context_line":"                \"iqns\": [{\"ip\": \"\", \"iqn\": initiator_name}]}"},{"line_number":200,"context_line":"        result \u003d self.run(url, \u0027POST\u0027, data\u003ddata)"},{"line_number":201,"context_line":"        self._assert_restapi_result(result, _(\"Add initiator \\"},{"line_number":202,"context_line":"                                               to target error.\"))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def query_initiator_by_name(self, initiator_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_48e35135","line":201,"range":{"start_line":201,"start_character":60,"end_line":201,"end_character":62},"updated":"2019-12-04 15:07:17.000000000","message":"Just close the string with \" and start the rest of the string on the next line.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        data \u003d {\"targetName\": target_name,"},{"line_number":199,"context_line":"                \"iqns\": [{\"ip\": \"\", \"iqn\": initiator_name}]}"},{"line_number":200,"context_line":"        result \u003d self.run(url, \u0027POST\u0027, data\u003ddata)"},{"line_number":201,"context_line":"        self._assert_restapi_result(result, _(\"Add initiator \\"},{"line_number":202,"context_line":"                                               to target error.\"))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def query_initiator_by_name(self, initiator_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9e072a1e","line":201,"range":{"start_line":201,"start_character":60,"end_line":201,"end_character":62},"in_reply_to":"3fa7e38b_48e35135","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            \"poolDisplayName\": pool_name,"},{"line_number":317,"context_line":"            \"volumeName\": volume_name}]}"},{"line_number":318,"context_line":"        result \u003d self.run(url, \u0027POST\u0027, data\u003ddata)"},{"line_number":319,"context_line":"        self._assert_restapi_result(result, _(\"Delete lun error.\"))"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def extend_lun(self, capacity_bytes, pool_name, volume_name):"},{"line_number":322,"context_line":"        \"\"\"Extend lun, only support enlarge.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_082b1933","line":319,"range":{"start_line":319,"start_character":8,"end_line":319,"end_character":67},"updated":"2019-12-04 15:07:17.000000000","message":"Will this succeed even if the volume is already deleted? This should return success if the end result is that the volume is not present.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            \"poolDisplayName\": pool_name,"},{"line_number":317,"context_line":"            \"volumeName\": volume_name}]}"},{"line_number":318,"context_line":"        result \u003d self.run(url, \u0027POST\u0027, data\u003ddata)"},{"line_number":319,"context_line":"        self._assert_restapi_result(result, _(\"Delete lun error.\"))"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def extend_lun(self, capacity_bytes, pool_name, volume_name):"},{"line_number":322,"context_line":"        \"\"\"Extend lun, only support enlarge.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_51120357","line":319,"range":{"start_line":319,"start_character":8,"end_line":319,"end_character":67},"in_reply_to":"3fa7e38b_082b1933","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eef75ccbc6957c8e01ea353ec72a8d1bfe394bb0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class RestCmd(object):"},{"line_number":34,"context_line":"    \"\"\"Restful api class.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self, address, user, password,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_4b6727ee","line":33,"range":{"start_line":33,"start_character":14,"end_line":33,"end_character":20},"updated":"2020-02-18 11:41:26.000000000","message":"nit: since we don\u0027t support Python 2.7 anymore it could be simplified to:\nclass RestCmd:","commit_id":"edc70289339f3219ac45ccce5601eb8b9c8ac721"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eef75ccbc6957c8e01ea353ec72a8d1bfe394bb0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        func \u003d getattr(self.session, method.lower())"},{"line_number":80,"context_line":"        try:"},{"line_number":81,"context_line":"            result \u003d func(rest_url, **kwargs)"},{"line_number":82,"context_line":"        except Exception as err:"},{"line_number":83,"context_line":"            msg \u003d _(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":84,"context_line":"                    \u0027Error: %(err)s\u0027) % {\u0027url\u0027: rest_url, \u0027err\u0027: err}"},{"line_number":85,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_8b92ffab","line":82,"range":{"start_line":82,"start_character":15,"end_line":82,"end_character":24},"updated":"2020-02-18 11:41:26.000000000","message":"Can we handle more specific exception here?","commit_id":"edc70289339f3219ac45ccce5601eb8b9c8ac721"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eef75ccbc6957c8e01ea353ec72a8d1bfe394bb0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        try:"},{"line_number":81,"context_line":"            result \u003d func(rest_url, **kwargs)"},{"line_number":82,"context_line":"        except Exception as err:"},{"line_number":83,"context_line":"            msg \u003d _(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":84,"context_line":"                    \u0027Error: %(err)s\u0027) % {\u0027url\u0027: rest_url, \u0027err\u0027: err}"},{"line_number":85,"context_line":"            LOG.error(msg)"},{"line_number":86,"context_line":"            raise exception.VolumeBackendAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_6b7a2377","line":83,"range":{"start_line":83,"start_character":12,"end_line":83,"end_character":15},"updated":"2020-02-18 11:41:26.000000000","message":"I\u0027m not sure that we need to expose URL and exception here","commit_id":"edc70289339f3219ac45ccce5601eb8b9c8ac721"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eef75ccbc6957c8e01ea353ec72a8d1bfe394bb0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        except Exception as err:"},{"line_number":83,"context_line":"            msg \u003d _(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":84,"context_line":"                    \u0027Error: %(err)s\u0027) % {\u0027url\u0027: rest_url, \u0027err\u0027: err}"},{"line_number":85,"context_line":"            LOG.error(msg)"},{"line_number":86,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_6ba1c3f6","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":22},"updated":"2020-02-18 11:41:26.000000000","message":"LOG.error \u003d\u003e LOG.exception. The same comment for the code below","commit_id":"edc70289339f3219ac45ccce5601eb8b9c8ac721"}],"cinder/volume/drivers/sandstone/sds_driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7022d693aac74efc3005d72677d22f2018009ea5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"sds_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"sandstone_login_ip\","},{"line_number":36,"context_line":"               default\u003dTrue,"},{"line_number":37,"context_line":"               help\u003d\"SandStone management interface ip.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"sandstone_om_user\","},{"line_number":39,"context_line":"               default\u003dTrue,"},{"line_number":40,"context_line":"               help\u003d\"SandStone management interface login username.\"),"},{"line_number":41,"context_line":"    cfg.StrOpt(\"sandstone_om_password\","},{"line_number":42,"context_line":"               default\u003dTrue,"},{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e94a0625","line":43,"range":{"start_line":35,"start_character":4,"end_line":43,"end_character":70},"updated":"2019-10-11 14:42:14.000000000","message":"None of these should be added. You should use the existing common options of san_ip, san_login, san_password, etc.","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"27614bc54a283b46996f6c42300f69d9c718eb12","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\"SandStone management interface login username.\"),"},{"line_number":41,"context_line":"    cfg.StrOpt(\"sandstone_om_password\","},{"line_number":42,"context_line":"               default\u003dTrue,"},{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_291ede5e","line":43,"updated":"2019-10-11 14:30:28.000000000","message":"password needs secret\u003dTrue option set.","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"5e694ba6fffaa8765740141ad0192e3fcef8bf86","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\"SandStone management interface login username.\"),"},{"line_number":41,"context_line":"    cfg.StrOpt(\"sandstone_om_password\","},{"line_number":42,"context_line":"               default\u003dTrue,"},{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f45f2f0c","line":43,"in_reply_to":"3fa7e38b_291ede5e","updated":"2019-10-12 09:01:38.000000000","message":"use san module option san_ip, san_login, san_password replace it.","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"5e694ba6fffaa8765740141ad0192e3fcef8bf86","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"sds_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"sandstone_login_ip\","},{"line_number":36,"context_line":"               default\u003dTrue,"},{"line_number":37,"context_line":"               help\u003d\"SandStone management interface ip.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\"sandstone_om_user\","},{"line_number":39,"context_line":"               default\u003dTrue,"},{"line_number":40,"context_line":"               help\u003d\"SandStone management interface login username.\"),"},{"line_number":41,"context_line":"    cfg.StrOpt(\"sandstone_om_password\","},{"line_number":42,"context_line":"               default\u003dTrue,"},{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_34af07e4","line":43,"range":{"start_line":35,"start_character":4,"end_line":43,"end_character":70},"in_reply_to":"3fa7e38b_e94a0625","updated":"2019-10-12 09:01:38.000000000","message":"done","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7022d693aac74efc3005d72677d22f2018009ea5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0948c22a","line":46,"range":{"start_line":46,"start_character":49,"end_line":46,"end_character":50},"updated":"2019-10-11 14:42:14.000000000","message":"Don\u0027t use \\ to span multiple lines. You can just close the string on this line and have another on the next line and they will be concatenated together.","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"5e694ba6fffaa8765740141ad0192e3fcef8bf86","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               help\u003d\"SandStone management interface login password.\"),"},{"line_number":44,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_546723ea","line":46,"range":{"start_line":46,"start_character":49,"end_line":46,"end_character":50},"in_reply_to":"3fa7e38b_0948c22a","updated":"2019-10-12 09:01:38.000000000","message":"done","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"27614bc54a283b46996f6c42300f69d9c718eb12","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"},{"line_number":50,"context_line":"               help\u003d\"SandStone default chap info.\\"},{"line_number":51,"context_line":"               include chap user info and chap password,\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_4958fa2f","line":48,"updated":"2019-10-11 14:30:28.000000000","message":"What does this option do?","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"49c4ee791fdc556acbec6aade197ad6d4c3a9c3d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               default\u003dTrue,"},{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"},{"line_number":50,"context_line":"               help\u003d\"SandStone default chap info.\\"},{"line_number":51,"context_line":"               include chap user info and chap password,\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_dfeed120","line":48,"in_reply_to":"3fa7e38b_4958fa2f","updated":"2019-10-12 02:09:27.000000000","message":"if user not set unique chap user and password to initiator. then use default chap user and  password.","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"27614bc54a283b46996f6c42300f69d9c718eb12","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"},{"line_number":50,"context_line":"               help\u003d\"SandStone default chap info.\\"},{"line_number":51,"context_line":"               include chap user info and chap password,\\"},{"line_number":52,"context_line":"               args must split with comma.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a9316eef","line":49,"range":{"start_line":49,"start_character":23,"end_line":49,"end_character":27},"updated":"2019-10-11 14:30:28.000000000","message":"\"True\" seems like the wrong default here (and on most of these options)","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"5e694ba6fffaa8765740141ad0192e3fcef8bf86","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               help\u003d\"SandStone default target ip.\\"},{"line_number":47,"context_line":"               args must split with comma.\"),"},{"line_number":48,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":49,"context_line":"               default\u003dTrue,"},{"line_number":50,"context_line":"               help\u003d\"SandStone default chap info.\\"},{"line_number":51,"context_line":"               include chap user info and chap password,\\"},{"line_number":52,"context_line":"               args must split with comma.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_346aa7b2","line":49,"range":{"start_line":49,"start_character":23,"end_line":49,"end_character":27},"in_reply_to":"3fa7e38b_a9316eef","updated":"2019-10-12 09:01:38.000000000","message":"done","commit_id":"a7133e828e09d269c0cfd444e28f688c64745900"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sds_opts \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":37,"context_line":"               default\u003d\"\","},{"line_number":38,"context_line":"               help\u003d\"SandStone default target ip.\""},{"line_number":39,"context_line":"               \"args must split with comma.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_c6a4bba8","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":34},"updated":"2019-10-14 16:36:58.000000000","message":"We should re-use \u0027target_ip_address\u0027 option here or use cfg.ListOpt","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sds_opts \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":37,"context_line":"               default\u003d\"\","},{"line_number":38,"context_line":"               help\u003d\"SandStone default target ip.\""},{"line_number":39,"context_line":"               \"args must split with comma.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_17e2f4d5","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":34},"in_reply_to":"3fa7e38b_c6a4bba8","updated":"2019-10-17 02:48:53.000000000","message":"If initiator does not specify target ip, use the default target ip","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sds_opts \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\"default_target_ips\","},{"line_number":37,"context_line":"               default\u003d\"\","},{"line_number":38,"context_line":"               help\u003d\"SandStone default target ip.\""},{"line_number":39,"context_line":"               \"args must split with comma.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_57e94ce0","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":34},"in_reply_to":"3fa7e38b_c6a4bba8","updated":"2019-10-17 02:48:53.000000000","message":"use cfg.ListOpt, default_targets_ips Represents the default parameter， use initiator_assign_target_ip to assign target ip.","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"20ca2ead2e3f0a74ccd512701987cfc262ad7338","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":334,"context_line":"        \"\"\"Init ISCSIDriver.\"\"\""},{"line_number":335,"context_line":"        super(SdsISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":338,"context_line":"        \"\"\"Get volume status and capality.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_06fe536a","line":335,"range":{"start_line":333,"start_character":3,"end_line":335,"end_character":46},"updated":"2019-10-14 16:36:58.000000000","message":"Please, remove empty __init__ method","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"06a15ed6d203a497d28fb2ea2e85e72039becef6","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":334,"context_line":"        \"\"\"Init ISCSIDriver.\"\"\""},{"line_number":335,"context_line":"        super(SdsISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":338,"context_line":"        \"\"\"Get volume status and capality.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_54be2aae","line":335,"range":{"start_line":333,"start_character":3,"end_line":335,"end_character":46},"in_reply_to":"3fa7e38b_06fe536a","updated":"2019-10-15 02:07:06.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"06a15ed6d203a497d28fb2ea2e85e72039becef6","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        # If not specify target IP for some initiators, use default IP."},{"line_number":377,"context_line":"        if not target_ips:"},{"line_number":378,"context_line":"            default_target_ips \u003d [ip.strip() for ip in"},{"line_number":379,"context_line":"                                  self.default_target_ips.split(\",\")"},{"line_number":380,"context_line":"                                  if ip.strip()]"},{"line_number":381,"context_line":"            if default_target_ips:"},{"line_number":382,"context_line":"                target_ips \u003d default_target_ips"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_74cd6664","line":379,"range":{"start_line":379,"start_character":39,"end_line":379,"end_character":57},"updated":"2019-10-15 02:07:06.000000000","message":"Done","commit_id":"92e4a788dffde79b84d3d891c1fe6defc9781044"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"78c197f351c23a7ea85cc54e1e057a20b17448d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":40,"context_line":"               default\u003d\"\","},{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info.\""},{"line_number":42,"context_line":"               \"include chap user info and chap password,\""},{"line_number":43,"context_line":"               \"args must split with comma.\"),"},{"line_number":44,"context_line":"    cfg.BoolOpt(\"discard_ssl_warning\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_89a484a7","line":41,"range":{"start_line":41,"start_character":49,"end_line":41,"end_character":50},"updated":"2019-10-15 15:12:31.000000000","message":"All of these need a trailing space before the closing \" so the resulting string doesn\u0027t all run together.\n\nAlso, if ending with a period here, the \"I\" in include should be upper case.","commit_id":"f3aa5ba32e0f3fc11759b2ec5772255e6aa1896c"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":40,"context_line":"               default\u003d\"\","},{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info.\""},{"line_number":42,"context_line":"               \"include chap user info and chap password,\""},{"line_number":43,"context_line":"               \"args must split with comma.\"),"},{"line_number":44,"context_line":"    cfg.BoolOpt(\"discard_ssl_warning\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_dded48f0","line":41,"range":{"start_line":41,"start_character":49,"end_line":41,"end_character":50},"in_reply_to":"3fa7e38b_89a484a7","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"f3aa5ba32e0f3fc11759b2ec5772255e6aa1896c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"c56c3756f3f3df7f39ae8f33d0dd63afcd00a245","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info.\""},{"line_number":42,"context_line":"               \"include chap user info and chap password,\""},{"line_number":43,"context_line":"               \"args must split with comma.\"),"},{"line_number":44,"context_line":"    cfg.BoolOpt(\"discard_ssl_warning\","},{"line_number":45,"context_line":"                default\u003dTrue,"},{"line_number":46,"context_line":"                help\u003d\"if not want SSL Warnings log,\""},{"line_number":47,"context_line":"                \"set True to discard requests library SSL Warnings,\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_29d8f050","line":44,"updated":"2019-10-15 15:07:26.000000000","message":"Please, use already existing \u0027suppress_requests_ssl_warnings\u0027 option","commit_id":"f3aa5ba32e0f3fc11759b2ec5772255e6aa1896c"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"e6f4d1d2193c43f5fc9f5b15f0e890bf7a2b9218","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info.\""},{"line_number":42,"context_line":"               \"include chap user info and chap password,\""},{"line_number":43,"context_line":"               \"args must split with comma.\"),"},{"line_number":44,"context_line":"    cfg.BoolOpt(\"discard_ssl_warning\","},{"line_number":45,"context_line":"                default\u003dTrue,"},{"line_number":46,"context_line":"                help\u003d\"if not want SSL Warnings log,\""},{"line_number":47,"context_line":"                \"set True to discard requests library SSL Warnings,\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fde844df","line":44,"in_reply_to":"3fa7e38b_29d8f050","updated":"2019-10-17 02:48:53.000000000","message":"Done","commit_id":"f3aa5ba32e0f3fc11759b2ec5772255e6aa1896c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b43664a9d4396de1f40fe03970237feeaafcdf20","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":300,"context_line":"        \"\"\"The config option has a default to be False, So just return it.\"\"\""},{"line_number":301,"context_line":"        pass"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def unmanage(self, volume):"},{"line_number":304,"context_line":"        \"\"\"Export SandStone volume from Cinder.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_bb9026ef","line":301,"range":{"start_line":301,"start_character":8,"end_line":301,"end_character":12},"updated":"2019-10-23 19:11:51.000000000","message":"This should return something.","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"a7751f5a45fcf45af120ad76cd772d41e40b29b8","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def backup_use_temp_snapshot(self):"},{"line_number":300,"context_line":"        \"\"\"The config option has a default to be False, So just return it.\"\"\""},{"line_number":301,"context_line":"        pass"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def unmanage(self, volume):"},{"line_number":304,"context_line":"        \"\"\"Export SandStone volume from Cinder.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_eaa00694","line":301,"range":{"start_line":301,"start_character":8,"end_line":301,"end_character":12},"in_reply_to":"3fa7e38b_bb9026ef","updated":"2019-10-24 02:59:22.000000000","message":"Done","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b43664a9d4396de1f40fe03970237feeaafcdf20","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":464,"context_line":"        hostlun_id \u003d int(lun_id)"},{"line_number":465,"context_line":"        if not multipath:"},{"line_number":466,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\"%s:3260\" % target_ips[0])"},{"line_number":467,"context_line":"            properties[\u0027target_iqn\u0027] \u003d target_name"},{"line_number":468,"context_line":"            properties[\u0027target_lun\u0027] \u003d hostlun_id"},{"line_number":469,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_1bab7a1e","line":466,"range":{"start_line":466,"start_character":43,"end_line":466,"end_character":52},"updated":"2019-10-23 19:11:51.000000000","message":"This will fail for ipv6.","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"a7751f5a45fcf45af120ad76cd772d41e40b29b8","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":464,"context_line":"        hostlun_id \u003d int(lun_id)"},{"line_number":465,"context_line":"        if not multipath:"},{"line_number":466,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\"%s:3260\" % target_ips[0])"},{"line_number":467,"context_line":"            properties[\u0027target_iqn\u0027] \u003d target_name"},{"line_number":468,"context_line":"            properties[\u0027target_lun\u0027] \u003d hostlun_id"},{"line_number":469,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_ca6f4a26","line":466,"range":{"start_line":466,"start_character":43,"end_line":466,"end_character":52},"in_reply_to":"3fa7e38b_1bab7a1e","updated":"2019-10-24 02:59:22.000000000","message":"in os.brick, if connect single path will call _connect_to_iscsi_portal, in \"                if (s[0] in self.VALID_SESSIONS_PREFIX and\n                        portal.lower() \u003d\u003d s[2].lower() and s[4] \u003d\u003d target_iqn):\" if not with 3260 ,will endless loop.","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b43664a9d4396de1f40fe03970237feeaafcdf20","unresolved":false,"context_lines":[{"line_number":470,"context_line":"            properties[\u0027target_iqns\u0027] \u003d [target_name for i in"},{"line_number":471,"context_line":"                                         range(len(target_ips))]"},{"line_number":472,"context_line":"            properties[\u0027target_portals\u0027] \u003d ["},{"line_number":473,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":474,"context_line":"            properties[\u0027target_luns\u0027] \u003d [hostlun_id] * len(target_ips)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        # If use CHAP, return CHAP info."}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_dba4024e","line":473,"range":{"start_line":473,"start_character":16,"end_line":473,"end_character":25},"updated":"2019-10-23 19:11:51.000000000","message":"Same","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"a7751f5a45fcf45af120ad76cd772d41e40b29b8","unresolved":false,"context_lines":[{"line_number":470,"context_line":"            properties[\u0027target_iqns\u0027] \u003d [target_name for i in"},{"line_number":471,"context_line":"                                         range(len(target_ips))]"},{"line_number":472,"context_line":"            properties[\u0027target_portals\u0027] \u003d ["},{"line_number":473,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":474,"context_line":"            properties[\u0027target_luns\u0027] \u003d [hostlun_id] * len(target_ips)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        # If use CHAP, return CHAP info."}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_8a639241","line":473,"range":{"start_line":473,"start_character":16,"end_line":473,"end_character":25},"in_reply_to":"3fa7e38b_dba4024e","updated":"2019-10-24 02:59:22.000000000","message":"Same reason above","commit_id":"87dbaccd8fb5c62beeaa5f678b6a716aeb75efcc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder.i18n import _"},{"line_number":19,"context_line":"from cinder import interface"},{"line_number":20,"context_line":"from cinder import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.volume import driver"},{"line_number":23,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone.sds_client import RestCmd"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e5834602","line":21,"updated":"2019-12-04 14:29:13.000000000","message":"Remove blank line between cinder imports.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder.i18n import _"},{"line_number":19,"context_line":"from cinder import interface"},{"line_number":20,"context_line":"from cinder import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.volume import driver"},{"line_number":23,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone.sds_client import RestCmd"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_263a44c3","line":21,"in_reply_to":"3fa7e38b_e5834602","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b7dae018d8073d00c15f2ecdacd2944801d449b2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone.sds_client import RestCmd"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_config import cfg"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_log import log as logging"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from oslo_utils import units"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a5754e35","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":28},"updated":"2019-12-04 14:29:13.000000000","message":"Remove blank lines and move prior to the local cinder imports.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":24,"context_line":"from cinder.volume.drivers.sandstone.sds_client import RestCmd"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_config import cfg"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_log import log as logging"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from oslo_utils import units"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c644904a","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":28},"in_reply_to":"3fa7e38b_a5754e35","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d2c0afe3bb516c045ad7851da34057bef1d41f71","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sds_opts \u003d ["},{"line_number":36,"context_line":"    cfg.ListOpt(\"default_target_ips\","},{"line_number":37,"context_line":"                default\u003d[],"},{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_6540b6a3","line":36,"updated":"2019-12-04 14:38:19.000000000","message":"Any driver specific config options should have sandstone in the name.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"sds_opts \u003d ["},{"line_number":36,"context_line":"    cfg.ListOpt(\"default_target_ips\","},{"line_number":37,"context_line":"                default\u003d[],"},{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c6e0102a","line":36,"in_reply_to":"3fa7e38b_6540b6a3","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d2c0afe3bb516c045ad7851da34057bef1d41f71","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    cfg.ListOpt(\"default_target_ips\","},{"line_number":37,"context_line":"                default\u003d[],"},{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":40,"context_line":"               default\u003d\"\","},{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info. \""},{"line_number":42,"context_line":"               \"Include chap user info and chap password, \""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_0528e2eb","line":39,"range":{"start_line":39,"start_character":16,"end_line":39,"end_character":33},"updated":"2019-12-04 14:38:19.000000000","message":"This should use the standard chap_username and chap_password config options.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    cfg.ListOpt(\"default_target_ips\","},{"line_number":37,"context_line":"                default\u003d[],"},{"line_number":38,"context_line":"                help\u003d\"SandStone default target ip.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"default_chap_info\","},{"line_number":40,"context_line":"               default\u003d\"\","},{"line_number":41,"context_line":"               help\u003d\"SandStone default chap info. \""},{"line_number":42,"context_line":"               \"Include chap user info and chap password, \""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_463bc099","line":39,"range":{"start_line":39,"start_character":16,"end_line":39,"end_character":33},"in_reply_to":"3fa7e38b_0528e2eb","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d2c0afe3bb516c045ad7851da34057bef1d41f71","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\"sandstone_pool\","},{"line_number":45,"context_line":"               default\u003d\"\","},{"line_number":46,"context_line":"               help\u003d\"SandStone storage pool resource name.\"),"},{"line_number":47,"context_line":"    cfg.DictOpt(\"initiator_assign_target_ip\","},{"line_number":48,"context_line":"                default\u003d{},"},{"line_number":49,"context_line":"                help\u003d\"Support initiator assign target with assign ip.\")"},{"line_number":50,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a5c8ee4c","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":45},"updated":"2019-12-04 14:38:19.000000000","message":"Why can\u0027t the standard target_ip_address be used?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\"sandstone_pool\","},{"line_number":45,"context_line":"               default\u003d\"\","},{"line_number":46,"context_line":"               help\u003d\"SandStone storage pool resource name.\"),"},{"line_number":47,"context_line":"    cfg.DictOpt(\"initiator_assign_target_ip\","},{"line_number":48,"context_line":"                default\u003d{},"},{"line_number":49,"context_line":"                help\u003d\"Support initiator assign target with assign ip.\")"},{"line_number":50,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ac5ecb75","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":45},"in_reply_to":"3fa7e38b_a5c8ee4c","updated":"2020-02-06 10:52:12.000000000","message":"some host use specified target ip, when use distributed storange","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        super(SdsBaseDriver, self).__init__(*args, **kwargs)"},{"line_number":66,"context_line":"        if not self.configuration:"},{"line_number":67,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":68,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.configuration.append_config_values(sds_opts)"},{"line_number":71,"context_line":"        self.configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d8cd965e","line":68,"range":{"start_line":68,"start_character":18,"end_line":68,"end_character":39},"updated":"2019-12-09 11:00:52.000000000","message":"Please, use exception.InvalidConfigurationValue here","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3aa95025b680c1849579f1916b3d692278f9b75e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":64,"context_line":"        \"\"\"Init configuration.\"\"\""},{"line_number":65,"context_line":"        super(SdsBaseDriver, self).__init__(*args, **kwargs)"},{"line_number":66,"context_line":"        if not self.configuration:"},{"line_number":67,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":68,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.configuration.append_config_values(sds_opts)"},{"line_number":71,"context_line":"        self.configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ed01af05","line":68,"range":{"start_line":66,"start_character":8,"end_line":68,"end_character":52},"updated":"2019-12-09 16:13:42.000000000","message":"This check isn\u0027t needed, self.configuration is provided by the volume manager code.\n\nJust fail in do_setup instead of here for config issues.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        super(SdsBaseDriver, self).__init__(*args, **kwargs)"},{"line_number":66,"context_line":"        if not self.configuration:"},{"line_number":67,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":68,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.configuration.append_config_values(sds_opts)"},{"line_number":71,"context_line":"        self.configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_06206848","line":68,"range":{"start_line":68,"start_character":18,"end_line":68,"end_character":39},"in_reply_to":"3fa7e38b_d8cd965e","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":64,"context_line":"        \"\"\"Init configuration.\"\"\""},{"line_number":65,"context_line":"        super(SdsBaseDriver, self).__init__(*args, **kwargs)"},{"line_number":66,"context_line":"        if not self.configuration:"},{"line_number":67,"context_line":"            msg \u003d _(\u0027Configuration is not found.\u0027)"},{"line_number":68,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.configuration.append_config_values(sds_opts)"},{"line_number":71,"context_line":"        self.configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_261b241c","line":68,"range":{"start_line":66,"start_character":8,"end_line":68,"end_character":52},"in_reply_to":"3fa7e38b_ed01af05","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"24a353adb6e8e0fb54c1b74156e3c7746c34d82d","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def do_setup(self, context):"},{"line_number":74,"context_line":"        \"\"\"Instantiate common class and login storage system.\"\"\""},{"line_number":75,"context_line":"        self.address \u003d self.configuration.san_ip"},{"line_number":76,"context_line":"        self.user \u003d self.configuration.san_login"},{"line_number":77,"context_line":"        self.password \u003d self.configuration.san_password"},{"line_number":78,"context_line":"        self.pool \u003d self.configuration.sandstone_pool"},{"line_number":79,"context_line":"        self.iscsi_info \u003d self.configuration.initiator_assign_target_ip"},{"line_number":80,"context_line":"        self.default_target_ips \u003d self.configuration.default_target_ips"},{"line_number":81,"context_line":"        self.default_chap_info \u003d self.configuration.default_chap_info"},{"line_number":82,"context_line":"        self.suppress_requests_ssl_warnings \u003d \\"},{"line_number":83,"context_line":"            self.configuration.suppress_requests_ssl_warnings"},{"line_number":84,"context_line":"        self.client \u003d RestCmd(self.address, self.user, self.password,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f8cad243","line":81,"range":{"start_line":75,"start_character":0,"end_line":81,"end_character":69},"updated":"2019-12-09 11:00:52.000000000","message":"I won\u0027t block a patch for these lines, but do we really need them?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.iscsi_info \u003d self.configuration.initiator_assign_target_ip"},{"line_number":80,"context_line":"        self.default_target_ips \u003d self.configuration.default_target_ips"},{"line_number":81,"context_line":"        self.default_chap_info \u003d self.configuration.default_chap_info"},{"line_number":82,"context_line":"        self.suppress_requests_ssl_warnings \u003d \\"},{"line_number":83,"context_line":"            self.configuration.suppress_requests_ssl_warnings"},{"line_number":84,"context_line":"        self.client \u003d RestCmd(self.address, self.user, self.password,"},{"line_number":85,"context_line":"                              self.suppress_requests_ssl_warnings)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_05c4620d","line":82,"range":{"start_line":82,"start_character":46,"end_line":82,"end_character":47},"updated":"2019-12-04 15:07:17.000000000","message":"Do not use \\ to span multiple lines. If you need to, wrap the assignment in () to be able to span lines.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.iscsi_info \u003d self.configuration.initiator_assign_target_ip"},{"line_number":80,"context_line":"        self.default_target_ips \u003d self.configuration.default_target_ips"},{"line_number":81,"context_line":"        self.default_chap_info \u003d self.configuration.default_chap_info"},{"line_number":82,"context_line":"        self.suppress_requests_ssl_warnings \u003d \\"},{"line_number":83,"context_line":"            self.configuration.suppress_requests_ssl_warnings"},{"line_number":84,"context_line":"        self.client \u003d RestCmd(self.address, self.user, self.password,"},{"line_number":85,"context_line":"                              self.suppress_requests_ssl_warnings)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e610acf6","line":82,"range":{"start_line":82,"start_character":46,"end_line":82,"end_character":47},"in_reply_to":"3fa7e38b_05c4620d","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.configuration.suppress_requests_ssl_warnings"},{"line_number":84,"context_line":"        self.client \u003d RestCmd(self.address, self.user, self.password,"},{"line_number":85,"context_line":"                              self.suppress_requests_ssl_warnings)"},{"line_number":86,"context_line":"        self.client.login()"},{"line_number":87,"context_line":"        LOG.debug(\"Run sandstone driver setup.\")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def check_for_setup_error(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_05ed428d","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":27},"updated":"2019-12-04 15:07:17.000000000","message":"This should probably happen in check_for_setup_error.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.configuration.suppress_requests_ssl_warnings"},{"line_number":84,"context_line":"        self.client \u003d RestCmd(self.address, self.user, self.password,"},{"line_number":85,"context_line":"                              self.suppress_requests_ssl_warnings)"},{"line_number":86,"context_line":"        self.client.login()"},{"line_number":87,"context_line":"        LOG.debug(\"Run sandstone driver setup.\")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def check_for_setup_error(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_465420c6","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":27},"in_reply_to":"3fa7e38b_05ed428d","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        if pool_status:"},{"line_number":103,"context_line":"            if \"health\" not in pool_status[0][\u0027state\u0027] and \\"},{"line_number":104,"context_line":"                    pool_status[0][\"progress\"] !\u003d 100:"},{"line_number":105,"context_line":"                LOG.warning(\u0027Storage pool: %(poolName)s not health.\u0027,"},{"line_number":106,"context_line":"                            {\"poolName\": self.pool})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _update_volume_stats(self, pool_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c5e64ab1","line":105,"range":{"start_line":105,"start_character":56,"end_line":105,"end_character":66},"updated":"2019-12-04 15:07:17.000000000","message":"\"not healthy\"?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        if pool_status:"},{"line_number":103,"context_line":"            if \"health\" not in pool_status[0][\u0027state\u0027] and \\"},{"line_number":104,"context_line":"                    pool_status[0][\"progress\"] !\u003d 100:"},{"line_number":105,"context_line":"                LOG.warning(\u0027Storage pool: %(poolName)s not health.\u0027,"},{"line_number":106,"context_line":"                            {\"poolName\": self.pool})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _update_volume_stats(self, pool_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_865e98e6","line":105,"range":{"start_line":105,"start_character":56,"end_line":105,"end_character":66},"in_reply_to":"3fa7e38b_c5e64ab1","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":131,"context_line":"        \"\"\"Get volume status and reload sandstone config file.\"\"\""},{"line_number":132,"context_line":"        return self._update_volume_stats(self.pool)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def _raise_exception(self, msg):"},{"line_number":135,"context_line":"        LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_059222fd","line":132,"updated":"2019-12-04 15:07:17.000000000","message":"Should only get current stats if refresh\u003dTrue.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":131,"context_line":"        \"\"\"Get volume status and reload sandstone config file.\"\"\""},{"line_number":132,"context_line":"        return self._update_volume_stats(self.pool)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def _raise_exception(self, msg):"},{"line_number":135,"context_line":"        LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5eb000dd","line":132,"in_reply_to":"3fa7e38b_059222fd","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def create_volume(self, volume):"},{"line_number":139,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":140,"context_line":"        LOG.debug(\"Create volume %(volumeName)s from pool: %(poolName)s,\""},{"line_number":141,"context_line":"                  \"volume size: %(size)sGi.\","},{"line_number":142,"context_line":"                  {\"volumeName\": volume.name,"},{"line_number":143,"context_line":"                   \"poolName\": self.pool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_458fbacc","line":140,"updated":"2019-12-04 15:07:17.000000000","message":"These debug statements are not really needed. That information is logged prior to calling into the driver.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def create_volume(self, volume):"},{"line_number":139,"context_line":"        \"\"\"Create a volume.\"\"\""},{"line_number":140,"context_line":"        LOG.debug(\"Create volume %(volumeName)s from pool: %(poolName)s,\""},{"line_number":141,"context_line":"                  \"volume size: %(size)sGi.\","},{"line_number":142,"context_line":"                  {\"volumeName\": volume.name,"},{"line_number":143,"context_line":"                   \"poolName\": self.pool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c6ea50d7","line":140,"in_reply_to":"3fa7e38b_458fbacc","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def migrate_volume(self, ctxt, volume, host, new_type\u003dNone):"},{"line_number":156,"context_line":"        \"\"\"Migrate a volume within the same array.\"\"\""},{"line_number":157,"context_line":"        pass"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":160,"context_line":"        \"\"\"Create a volume from a snapshot."}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c5696af8","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":12},"updated":"2019-12-04 15:07:17.000000000","message":"If this driver can\u0027t perform an optimized migration, this needs to return the tuple (False, None).","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def migrate_volume(self, ctxt, volume, host, new_type\u003dNone):"},{"line_number":156,"context_line":"        \"\"\"Migrate a volume within the same array.\"\"\""},{"line_number":157,"context_line":"        pass"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":160,"context_line":"        \"\"\"Create a volume from a snapshot."}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_66259c5a","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":12},"in_reply_to":"3fa7e38b_c5696af8","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                                 source_volume_name,"},{"line_number":172,"context_line":"                                                 self.pool,"},{"line_number":173,"context_line":"                                                 destination_volume_name)"},{"line_number":174,"context_line":"            vol_size \u003d volume.size * units.Gi"},{"line_number":175,"context_line":"            self.client.extend_lun(vol_size, self.pool, volume.name)"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            err_msg \u003d _(\u0027No such snapshot volume.\u0027)"},{"line_number":178,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e8cb1da1","line":175,"range":{"start_line":174,"start_character":12,"end_line":175,"end_character":68},"updated":"2019-12-04 15:07:17.000000000","message":"Should check that an extend is needed before making this call.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            vol_size \u003d volume.size * units.Gi"},{"line_number":175,"context_line":"            self.client.extend_lun(vol_size, self.pool, volume.name)"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            err_msg \u003d _(\u0027No such snapshot volume.\u0027)"},{"line_number":178,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def create_cloned_volume(self, dst_volume, src_volume):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_6578b6c0","line":177,"updated":"2019-12-04 15:07:17.000000000","message":"Since you added it, these should all use _raise_exception","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            vol_size \u003d volume.size * units.Gi"},{"line_number":175,"context_line":"            self.client.extend_lun(vol_size, self.pool, volume.name)"},{"line_number":176,"context_line":"        else:"},{"line_number":177,"context_line":"            err_msg \u003d _(\u0027No such snapshot volume.\u0027)"},{"line_number":178,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def create_cloned_volume(self, dst_volume, src_volume):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_99ba12de","line":177,"in_reply_to":"3fa7e38b_6578b6c0","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def create_cloned_volume(self, dst_volume, src_volume):"},{"line_number":181,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":182,"context_line":"        if not self._check_volume_exist(src_volume.name):"},{"line_number":183,"context_line":"            msg \u003d _(\u0027Source volume: %(volume_name)s not exist.\u0027)\\"},{"line_number":184,"context_line":"                % {\u0027volume_name\u0027: src_volume.name}"},{"line_number":185,"context_line":"            self._raise_exception(msg)"},{"line_number":186,"context_line":"        self.client.create_lun_from_lun(dst_volume.name, self.pool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_254cfe9b","line":183,"range":{"start_line":183,"start_character":52,"end_line":183,"end_character":61},"updated":"2019-12-04 15:07:17.000000000","message":"\"does not exist\"","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def create_cloned_volume(self, dst_volume, src_volume):"},{"line_number":181,"context_line":"        \"\"\"Clone a new volume from an existing volume.\"\"\""},{"line_number":182,"context_line":"        if not self._check_volume_exist(src_volume.name):"},{"line_number":183,"context_line":"            msg \u003d _(\u0027Source volume: %(volume_name)s not exist.\u0027)\\"},{"line_number":184,"context_line":"                % {\u0027volume_name\u0027: src_volume.name}"},{"line_number":185,"context_line":"            self._raise_exception(msg)"},{"line_number":186,"context_line":"        self.client.create_lun_from_lun(dst_volume.name, self.pool,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5ee560da","line":183,"range":{"start_line":183,"start_character":52,"end_line":183,"end_character":61},"in_reply_to":"3fa7e38b_254cfe9b","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            self._raise_exception(msg)"},{"line_number":186,"context_line":"        self.client.create_lun_from_lun(dst_volume.name, self.pool,"},{"line_number":187,"context_line":"                                        src_volume.name)"},{"line_number":188,"context_line":"        vol_size \u003d dst_volume.size * units.Gi"},{"line_number":189,"context_line":"        self.client.extend_lun(vol_size, self.pool, dst_volume.name)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _check_volume_exist(self, volume):"},{"line_number":192,"context_line":"        return self.client.query_lun_by_name(volume, self.pool)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a8bd2504","line":189,"range":{"start_line":188,"start_character":7,"end_line":189,"end_character":68},"updated":"2019-12-04 15:07:17.000000000","message":"Check if needed first.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3aa95025b680c1849579f1916b3d692278f9b75e","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self._raise_exception(msg)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        LOG.debug("},{"line_number":238,"context_line":"            \"create snapshot form volumeName: %(volume)s, \""},{"line_number":239,"context_line":"            \"snap name: %(snapshot)s.\","},{"line_number":240,"context_line":"            {\"snapshot\": snapshot.name,"},{"line_number":241,"context_line":"             \"volume\": volume.name},)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_cd4ab359","line":238,"range":{"start_line":238,"start_character":29,"end_line":238,"end_character":33},"updated":"2019-12-09 16:13:42.000000000","message":"from","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self._raise_exception(msg)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        LOG.debug("},{"line_number":238,"context_line":"            \"create snapshot form volumeName: %(volume)s, \""},{"line_number":239,"context_line":"            \"snap name: %(snapshot)s.\","},{"line_number":240,"context_line":"            {\"snapshot\": snapshot.name,"},{"line_number":241,"context_line":"             \"volume\": volume.name},)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9edbd81e","line":238,"range":{"start_line":238,"start_character":29,"end_line":238,"end_character":33},"in_reply_to":"3fa7e38b_cd4ab359","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3aa95025b680c1849579f1916b3d692278f9b75e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        snapshot_name \u003d snapshot.name"},{"line_number":254,"context_line":"        volume_name \u003d snapshot.volume.name"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if not self._check_snapshot_exist(snapshot):"},{"line_number":257,"context_line":"            msg \u003d _(\u0027Not exist snapshot: %(snapshotName)s\u0027)\\"},{"line_number":258,"context_line":"                % {\"snapshotName\": snapshot.name}"},{"line_number":259,"context_line":"            self._raise_exception(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ed4f6f67","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":51},"updated":"2019-12-09 16:13:42.000000000","message":"If the snapshot does not exist on the backend, the delete_snapshot() call should succeed and do nothing.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        snapshot_name \u003d snapshot.name"},{"line_number":254,"context_line":"        volume_name \u003d snapshot.volume.name"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if not self._check_snapshot_exist(snapshot):"},{"line_number":257,"context_line":"            msg \u003d _(\u0027Not exist snapshot: %(snapshotName)s\u0027)\\"},{"line_number":258,"context_line":"                % {\"snapshotName\": snapshot.name}"},{"line_number":259,"context_line":"            self._raise_exception(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_bed574e8","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":51},"in_reply_to":"3fa7e38b_ed4f6f67","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3aa95025b680c1849579f1916b3d692278f9b75e","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        return target_ips, chapinfo"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @utils.synchronized(\u0027SandStone\u0027, external\u003dTrue)"},{"line_number":389,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":390,"context_line":"        \"\"\"Map a volume to a host and return target iSCSI information.\"\"\""},{"line_number":391,"context_line":"        initiator_name \u003d connector[\u0027initiator\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_4d67a3eb","line":388,"updated":"2019-12-09 16:13:42.000000000","message":"Is it necessary to lock driver-wide, or can you lock just on a per-volume basis?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        return target_ips, chapinfo"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    @utils.synchronized(\u0027SandStone\u0027, external\u003dTrue)"},{"line_number":389,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":390,"context_line":"        \"\"\"Map a volume to a host and return target iSCSI information.\"\"\""},{"line_number":391,"context_line":"        initiator_name \u003d connector[\u0027initiator\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_dee950ab","line":388,"in_reply_to":"3fa7e38b_4d67a3eb","updated":"2020-02-06 10:52:12.000000000","message":"done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":410,"context_line":"                LOG.info(\u0027target is exist, do\\\u0027t repeat to create, \u0027"},{"line_number":411,"context_line":"                         \u0027iscsi_iqn: %(iscsi_iqn)s.\u0027,"},{"line_number":412,"context_line":"                         {\u0027iscsi_iqn\u0027: target_name})"},{"line_number":413,"context_line":"        except IndexError as e:"},{"line_number":414,"context_line":"            raise e"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        LOG.info(\u0027initialize_connection, iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":417,"context_line":"                 \u0027target_ips: %(target_ips)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_45049a18","line":414,"range":{"start_line":413,"start_character":8,"end_line":414,"end_character":19},"updated":"2019-12-04 15:07:17.000000000","message":"This try/except is useless, remove it.\n\nFor other cases, if other actions are needed in the exception handling, it should just be \"raise\", not \"raise e\".","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":410,"context_line":"                LOG.info(\u0027target is exist, do\\\u0027t repeat to create, \u0027"},{"line_number":411,"context_line":"                         \u0027iscsi_iqn: %(iscsi_iqn)s.\u0027,"},{"line_number":412,"context_line":"                         {\u0027iscsi_iqn\u0027: target_name})"},{"line_number":413,"context_line":"        except IndexError as e:"},{"line_number":414,"context_line":"            raise e"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        LOG.info(\u0027initialize_connection, iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":417,"context_line":"                 \u0027target_ips: %(target_ips)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_fe39ac3f","line":414,"range":{"start_line":413,"start_character":8,"end_line":414,"end_character":19},"in_reply_to":"3fa7e38b_45049a18","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            # Create initiator and add in storage"},{"line_number":423,"context_line":"            self.client.create_initiator(initiator_name)"},{"line_number":424,"context_line":"        else:"},{"line_number":425,"context_line":"            LOG.info(\u0027initiator is exist, do\\\u0027t repeat to create \u0027"},{"line_number":426,"context_line":"                     \u0027initiator: %(initiator_name)s.\u0027,"},{"line_number":427,"context_line":"                     {\u0027initiator_name\u0027: initiator_name})"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_28fff500","line":425,"range":{"start_line":425,"start_character":42,"end_line":425,"end_character":47},"updated":"2019-12-04 15:07:17.000000000","message":"don\u0027t?\n\nChange outer quotes to use double quotes so you don\u0027t have to escape the single quote.\n\n\"Don\u0027t repeat to create\" doesn\u0027t really make sense either. Maybe say something like \"no action needed\"?","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            # Create initiator and add in storage"},{"line_number":423,"context_line":"            self.client.create_initiator(initiator_name)"},{"line_number":424,"context_line":"        else:"},{"line_number":425,"context_line":"            LOG.info(\u0027initiator is exist, do\\\u0027t repeat to create \u0027"},{"line_number":426,"context_line":"                     \u0027initiator: %(initiator_name)s.\u0027,"},{"line_number":427,"context_line":"                     {\u0027initiator_name\u0027: initiator_name})"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5e0c8092","line":425,"range":{"start_line":425,"start_character":42,"end_line":425,"end_character":47},"in_reply_to":"3fa7e38b_28fff500","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # Mapping lungroup and hostgroup to view."},{"line_number":456,"context_line":"        LOG.info(\"initialize_connection, host lun id is: %(lun_id)s.\","},{"line_number":457,"context_line":"                 {\"lun_id\": str(lun_id)})"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        # Return iSCSI properties."},{"line_number":460,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_880f092e","line":457,"range":{"start_line":457,"start_character":28,"end_line":457,"end_character":31},"updated":"2019-12-04 15:07:17.000000000","message":"Don\u0027t convert to string when it\u0027s being formatted into a string anyway.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":30590,"name":"SandStone Storage CI","email":"yangziguan@szsandstone.com","username":"yangziguan","tags":["SERVICE_USER"]},"change_message_id":"0de62e11179f16428368c720b4879941f3386044","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        # Mapping lungroup and hostgroup to view."},{"line_number":456,"context_line":"        LOG.info(\"initialize_connection, host lun id is: %(lun_id)s.\","},{"line_number":457,"context_line":"                 {\"lun_id\": str(lun_id)})"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        # Return iSCSI properties."},{"line_number":460,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_19ddc23e","line":457,"range":{"start_line":457,"start_character":28,"end_line":457,"end_character":31},"in_reply_to":"3fa7e38b_880f092e","updated":"2020-02-06 10:52:12.000000000","message":"Done","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"418b72da604dcb1d86b300a54884ac77d3b4834d","unresolved":false,"context_lines":[{"line_number":496,"context_line":"    @utils.synchronized(\u0027SandStone\u0027, external\u003dTrue)"},{"line_number":497,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":498,"context_line":"        \"\"\"Delete map between a volume and a host.\"\"\""},{"line_number":499,"context_line":"        initiator_name \u003d connector[\u0027initiator\u0027]"},{"line_number":500,"context_line":"        # Remove lun from target force."},{"line_number":501,"context_line":"        iqn_end \u003d initiator_name.split(\u0027:\u0027)[-1]"},{"line_number":502,"context_line":"        target_head \u003d \u0027iqn.2014-10.com.szsandstone:storage:\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_88f5c9ce","line":499,"range":{"start_line":499,"start_character":25,"end_line":499,"end_character":47},"updated":"2019-12-04 15:07:17.000000000","message":"connector may be None. You need to check for that, and if connector is None then all connections to the volume should be terminated.","commit_id":"2267efcec7a1ed38e8a048648ecac91bfdbd8138"}]}
