)]}'
{"cinder/exception.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":""},{"line_number":1161,"context_line":"class SynoAuthError(CinderException):"},{"line_number":1162,"context_line":"    message \u003d _(\"%(message)s\")"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"class SynoLUNNotExist(CinderException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_db0b5f23","line":1162,"updated":"2016-07-01 15:05:07.000000000","message":"We can replace this with pass. CinderException\u0027s __init__ has a kwarg message.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"465789a3171055662dca317f341594db9e1d3e2f","unresolved":false,"context_lines":[{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":""},{"line_number":1161,"context_line":"class SynoAuthError(CinderException):"},{"line_number":1162,"context_line":"    message \u003d _(\"%(message)s\")"},{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"class SynoLUNNotExist(CinderException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2bf83ae5","line":1162,"in_reply_to":"3aaa91ec_db0b5f23","updated":"2016-07-04 06:33:53.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7811989d54afbf477e0d7219913773d0438d70f9","unresolved":false,"context_lines":[{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"class SynoAuthError(CinderException):"},{"line_number":1192,"context_line":"    pass"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":""},{"line_number":1195,"context_line":"class SynoLUNNotExist(CinderException):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_f13172ee","line":1192,"updated":"2016-07-12 13:24:46.000000000","message":"Suggest add a message for this exception.  For example:\n\nmessage \u003d _(\"Synology driver authentication failed: %(reason)s.\")","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"}],"cinder/tests/unit/test_synology_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Tests for the Synology iSCSI volume driver.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import copy"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import requests"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_772e0244","line":19,"updated":"2016-06-30 13:18:29.000000000","message":"mock and requests are third party libs, move down to group with oslo_utils.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Tests for the Synology iSCSI volume driver.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import copy"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import requests"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_6b48822e","line":19,"in_reply_to":"3aaa91ec_772e0244","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f33bbaa4a13c9625d6934f8c3e2b30ef49fab42f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertDictMatch(out, result)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        result \u003d self.session.query(FAKE_API)"},{"line_number":202,"context_line":"        self.assertTrue(result is None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"class SynoAPIRequestTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_7e668fef","line":202,"range":{"start_line":202,"start_character":8,"end_line":202,"end_character":39},"updated":"2016-07-01 19:33:00.000000000","message":"You can use assertIsNone here and in every other \u0027is None\u0027 assert.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"465789a3171055662dca317f341594db9e1d3e2f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertDictMatch(out, result)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        result \u003d self.session.query(FAKE_API)"},{"line_number":202,"context_line":"        self.assertTrue(result is None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"class SynoAPIRequestTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_ebd47248","line":202,"range":{"start_line":202,"start_character":8,"end_line":202,"end_character":39},"in_reply_to":"3aaa91ec_7e668fef","updated":"2016-07-04 06:33:53.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"d939b3f6901d8460bb30b9243f11d1b83f9c5979","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume import configuration as conf"},{"line_number":30,"context_line":"from cinder.volume.drivers.synology import synology_common as common"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"VOLUME_ID \u003d \u0027abcdef12-3456-7890-abcd-ef1234567890\u0027"},{"line_number":33,"context_line":"TARGET_NAME_PREFIX \u003d \u0027Cinder-Target-\u0027"},{"line_number":34,"context_line":"IP \u003d \u002710.0.0.1\u0027"},{"line_number":35,"context_line":"IQN \u003d \u0027iqn.2000-01.com.synology:\u0027 + TARGET_NAME_PREFIX + VOLUME_ID"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_1018a21d","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":50},"updated":"2016-07-11 20:53:28.000000000","message":"You can use fake UUID from cinder/test/unit/fake_constants here and in other fakes UUIDs.","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"cbc713d33cf7c53ea4e482c187bae27cf87d23d4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from cinder.volume import configuration as conf"},{"line_number":30,"context_line":"from cinder.volume.drivers.synology import synology_common as common"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"VOLUME_ID \u003d \u0027abcdef12-3456-7890-abcd-ef1234567890\u0027"},{"line_number":33,"context_line":"TARGET_NAME_PREFIX \u003d \u0027Cinder-Target-\u0027"},{"line_number":34,"context_line":"IP \u003d \u002710.0.0.1\u0027"},{"line_number":35,"context_line":"IQN \u003d \u0027iqn.2000-01.com.synology:\u0027 + TARGET_NAME_PREFIX + VOLUME_ID"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_f8dcd8e5","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"1aa78d24_1018a21d","updated":"2016-07-11 22:14:36.000000000","message":"Done","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"d939b3f6901d8460bb30b9243f11d1b83f9c5979","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        result \u003d self.request._start(FAKE_API, 3)"},{"line_number":263,"context_line":"        self.request._APIRequest__session.query.\\"},{"line_number":264,"context_line":"            assert_called_once_with(FAKE_API)"},{"line_number":265,"context_line":"        self.assertTrue(FAKE_PATH, result)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        out.update(maxVersion\u003d2)"},{"line_number":268,"context_line":"        self.assertRaises(exception.APIException,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_50322a11","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":42},"updated":"2016-07-11 20:53:28.000000000","message":"It shouldn\u0027t be self.assertEqual(FAKE_PATH, result)? Here and in other usages..\nSee https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertEqual for more info","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"cbc713d33cf7c53ea4e482c187bae27cf87d23d4","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        result \u003d self.request._start(FAKE_API, 3)"},{"line_number":263,"context_line":"        self.request._APIRequest__session.query.\\"},{"line_number":264,"context_line":"            assert_called_once_with(FAKE_API)"},{"line_number":265,"context_line":"        self.assertTrue(FAKE_PATH, result)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        out.update(maxVersion\u003d2)"},{"line_number":268,"context_line":"        self.assertRaises(exception.APIException,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_18f7245a","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":42},"in_reply_to":"1aa78d24_50322a11","updated":"2016-07-11 22:14:36.000000000","message":"Done","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        self.request._APIRequest__session.query \u003d mock.Mock(return_value\u003dout)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        result \u003d self.request._start(FAKE_API, 3)"},{"line_number":265,"context_line":"        self.request._APIRequest__session.query.\\"},{"line_number":266,"context_line":"            assert_called_once_with(FAKE_API)"},{"line_number":267,"context_line":"        self.assertEqual(FAKE_PATH, result)"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b396f33b","line":265,"range":{"start_line":265,"start_character":48,"end_line":265,"end_character":49},"updated":"2016-07-11 22:45:52.000000000","message":"If you do another update, please reformat all code to use () instead of \\ to span multiple lines.","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        self.request._APIRequest__session.query \u003d mock.Mock(return_value\u003dout)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        result \u003d self.request._start(FAKE_API, 3)"},{"line_number":265,"context_line":"        self.request._APIRequest__session.query.\\"},{"line_number":266,"context_line":"            assert_called_once_with(FAKE_API)"},{"line_number":267,"context_line":"        self.assertEqual(FAKE_PATH, result)"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9c5adff0","line":265,"range":{"start_line":265,"start_character":48,"end_line":265,"end_character":49},"in_reply_to":"1aa78d24_b396f33b","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        result \u003d self.request._encode_param(param)"},{"line_number":284,"context_line":"        self.assertIsInstance(result, string_types)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @mock.patch.object(common.LOG, \u0027debug\u0027)"},{"line_number":287,"context_line":"    def test_request(self, _log):"},{"line_number":288,"context_line":"        version \u003d 1"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b3e433e0","line":286,"updated":"2016-07-11 22:45:52.000000000","message":"Same.","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        result \u003d self.request._encode_param(param)"},{"line_number":284,"context_line":"        self.assertIsInstance(result, string_types)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @mock.patch.object(common.LOG, \u0027debug\u0027)"},{"line_number":287,"context_line":"    def test_request(self, _log):"},{"line_number":288,"context_line":"        version \u003d 1"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_dc70e774","line":286,"in_reply_to":"1aa78d24_b3e433e0","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        self.assertRaises(exception.SynoAuthError,"},{"line_number":1034,"context_line":"                          self.common._check_ds_ability)"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"    @mock.patch.object(common.LOG, \u0027exception\u0027)"},{"line_number":1037,"context_line":"    def test_check_response(self, _logexc):"},{"line_number":1038,"context_line":"        out \u003d {"},{"line_number":1039,"context_line":"            \u0027success\u0027: True"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_73de4b12","line":1036,"updated":"2016-07-11 22:45:52.000000000","message":"Why is this being mocked? I don\u0027t see it being used anywhere.","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        self.assertRaises(exception.SynoAuthError,"},{"line_number":1034,"context_line":"                          self.common._check_ds_ability)"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"    @mock.patch.object(common.LOG, \u0027exception\u0027)"},{"line_number":1037,"context_line":"    def test_check_response(self, _logexc):"},{"line_number":1038,"context_line":"        out \u003d {"},{"line_number":1039,"context_line":"            \u0027success\u0027: True"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5c3237a8","line":1036,"in_reply_to":"1aa78d24_73de4b12","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dfb3933b494d38da86f45c73a9cb9626dd9d7403","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        self.assertRaises(exception.SynoAuthError,"},{"line_number":1040,"context_line":"                          self.common._check_ds_ability)"},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    @mock.patch.object(common.LOG, \u0027exception\u0027)"},{"line_number":1043,"context_line":"    def test_check_response(self, _logexc):"},{"line_number":1044,"context_line":"        out \u003d {"},{"line_number":1045,"context_line":"            \u0027success\u0027: True"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_e1b529ed","line":1042,"updated":"2016-07-12 11:37:50.000000000","message":"My previous comment here was marked done, but nothing was changed. I don\u0027t see a need to mock any log calls here. This should just be removed.","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"70b5300e0e49c688af06216ab3cc4e3651f32f3d","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        self.assertRaises(exception.SynoAuthError,"},{"line_number":1040,"context_line":"                          self.common._check_ds_ability)"},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    @mock.patch.object(common.LOG, \u0027exception\u0027)"},{"line_number":1043,"context_line":"    def test_check_response(self, _logexc):"},{"line_number":1044,"context_line":"        out \u003d {"},{"line_number":1045,"context_line":"            \u0027success\u0027: True"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_a63c9cc8","line":1042,"in_reply_to":"1aa78d24_e1b529ed","updated":"2016-07-13 10:09:21.000000000","message":"Hi Sean, we examine the log call count since Patch Set 9. Please refer to Line#1082. Sorry that we didn\u0027t provide clear information for your review.","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"}],"cinder/tests/unit/test_synology_iscsi.py":[{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"d939b3f6901d8460bb30b9243f11d1b83f9c5979","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.drivers.synology import synology_common as common"},{"line_number":24,"context_line":"from cinder.volume.drivers.synology import synology_iscsi"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"VOLUME_ID \u003d \u0027abcdef12-3456-7890-abcd-ef1234567890\u0027"},{"line_number":27,"context_line":"TARGET_NAME_PREFIX \u003d \u0027Cinder-Target-\u0027"},{"line_number":28,"context_line":"IP \u003d \u002710.10.10.10\u0027"},{"line_number":29,"context_line":"IQN \u003d \u0027iqn.2000-01.com.synology:\u0027 + TARGET_NAME_PREFIX + VOLUME_ID"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_045067d3","line":26,"range":{"start_line":26,"start_character":12,"end_line":26,"end_character":50},"updated":"2016-07-11 20:53:28.000000000","message":"fake_constants can be used here too.","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"cbc713d33cf7c53ea4e482c187bae27cf87d23d4","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume.drivers.synology import synology_common as common"},{"line_number":24,"context_line":"from cinder.volume.drivers.synology import synology_iscsi"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"VOLUME_ID \u003d \u0027abcdef12-3456-7890-abcd-ef1234567890\u0027"},{"line_number":27,"context_line":"TARGET_NAME_PREFIX \u003d \u0027Cinder-Target-\u0027"},{"line_number":28,"context_line":"IP \u003d \u002710.10.10.10\u0027"},{"line_number":29,"context_line":"IQN \u003d \u0027iqn.2000-01.com.synology:\u0027 + TARGET_NAME_PREFIX + VOLUME_ID"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_789628f1","line":26,"range":{"start_line":26,"start_character":12,"end_line":26,"end_character":50},"in_reply_to":"1aa78d24_045067d3","updated":"2016-07-11 22:14:36.000000000","message":"Done","commit_id":"8f5c991067561d80c18e8db0e982b01d1b5ea2cd"}],"cinder/volume/drivers/synology/synology_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from random import randint"},{"line_number":25,"context_line":"import requests"},{"line_number":26,"context_line":"import string"},{"line_number":27,"context_line":"import time"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_34759831","line":27,"updated":"2016-06-30 13:18:29.000000000","message":"pycrypto and requests are third party libraries. Please move to the next third party grouping.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from random import randint"},{"line_number":25,"context_line":"import requests"},{"line_number":26,"context_line":"import string"},{"line_number":27,"context_line":"import time"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_ab526adb","line":27,"in_reply_to":"3aaa91ec_34759831","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class AESCipher(object):"},{"line_number":79,"context_line":"    \u0027\u0027\u0027Encrypt with OpenSSL-compatible way\u0027\u0027\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    SALT_MAGIC \u003d \u0027Salted__\u0027"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_14be9cad","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":7},"updated":"2016-06-30 13:18:29.000000000","message":"The correct docstring format is \"\"\", not \u0027\u0027\u0027.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class AESCipher(object):"},{"line_number":79,"context_line":"    \u0027\u0027\u0027Encrypt with OpenSSL-compatible way\u0027\u0027\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    SALT_MAGIC \u003d \u0027Salted__\u0027"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_2b5ddae9","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":7},"in_reply_to":"3aaa91ec_14be9cad","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            if one_time_pass and not device_id:"},{"line_number":160,"context_line":"                self._did \u003d result[\u0027data\u0027][\u0027did\u0027]"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            raise exception.SynoAuthError(\u0027Login failed.\u0027)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def _random_AES_passpharse(self, length):"},{"line_number":165,"context_line":"        available \u003d (\u00270123456789\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_141a1cc6","line":162,"updated":"2016-06-30 13:18:29.000000000","message":"Exception strings should have the _() translation marker.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            if one_time_pass and not device_id:"},{"line_number":160,"context_line":"                self._did \u003d result[\u0027data\u0027][\u0027did\u0027]"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            raise exception.SynoAuthError(\u0027Login failed.\u0027)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def _random_AES_passpharse(self, length):"},{"line_number":165,"context_line":"        available \u003d (\u00270123456789\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_8b720e7b","line":162,"in_reply_to":"3aaa91ec_141a1cc6","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def url_prefix(self):"},{"line_number":239,"context_line":"        s \u003d self"},{"line_number":240,"context_line":"        return s.proto() + \u0027://\u0027 + s.host() + \u0027:\u0027 + str(s.port())"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def query(self, api):"},{"line_number":243,"context_line":"        url \u003d self._url_prefix + \u0027/webapi/query.cgi\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_945bac85","line":240,"updated":"2016-06-30 13:18:29.000000000","message":"Isn\u0027t this already done in self._url_prefix?","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def url_prefix(self):"},{"line_number":239,"context_line":"        s \u003d self"},{"line_number":240,"context_line":"        return s.proto() + \u0027://\u0027 + s.host() + \u0027:\u0027 + str(s.port())"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def query(self, api):"},{"line_number":243,"context_line":"        url \u003d self._url_prefix + \u0027/webapi/query.cgi\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_6b6fe292","line":240,"in_reply_to":"3aaa91ec_945bac85","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    def _start(self, api, version):"},{"line_number":326,"context_line":"        apiInfo \u003d self.__session.query(api)"},{"line_number":327,"context_line":"        self._jsonFormat \u003d apiInfo[\u0027requestFormat\u0027] \u003d\u003d \u0027JSON\u0027"},{"line_number":328,"context_line":"        if apiInfo and (apiInfo[\u0027minVersion\u0027] \u003c\u003d version) \\"},{"line_number":329,"context_line":"                and (apiInfo[\u0027maxVersion\u0027] \u003e\u003d version):"},{"line_number":330,"context_line":"            return apiInfo[\u0027path\u0027]"},{"line_number":331,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_14f69c5c","line":328,"range":{"start_line":328,"start_character":58,"end_line":328,"end_character":59},"updated":"2016-06-30 13:18:29.000000000","message":"Wrap condition in () to avoid using \\","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    def _start(self, api, version):"},{"line_number":326,"context_line":"        apiInfo \u003d self.__session.query(api)"},{"line_number":327,"context_line":"        self._jsonFormat \u003d apiInfo[\u0027requestFormat\u0027] \u003d\u003d \u0027JSON\u0027"},{"line_number":328,"context_line":"        if apiInfo and (apiInfo[\u0027minVersion\u0027] \u003c\u003d version) \\"},{"line_number":329,"context_line":"                and (apiInfo[\u0027maxVersion\u0027] \u003e\u003d version):"},{"line_number":330,"context_line":"            return apiInfo[\u0027path\u0027]"},{"line_number":331,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_ab69ca8d","line":328,"range":{"start_line":328,"start_character":58,"end_line":328,"end_character":59},"in_reply_to":"3aaa91ec_14f69c5c","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":753,"context_line":"        define \u003d out[\u0027data\u0027]"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        if \u0027usbstation\u0027 in define and define[\u0027usbstation\u0027] \u003d\u003d \u0027yes\u0027:"},{"line_number":756,"context_line":"            m \u003d \u0027usbstation is not supported\u0027"},{"line_number":757,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        if \u0027support_storage_mgr\u0027 not in define \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_d45b7452","line":756,"updated":"2016-06-30 13:18:29.000000000","message":"Wrap exception messages in _()","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":753,"context_line":"        define \u003d out[\u0027data\u0027]"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        if \u0027usbstation\u0027 in define and define[\u0027usbstation\u0027] \u003d\u003d \u0027yes\u0027:"},{"line_number":756,"context_line":"            m \u003d \u0027usbstation is not supported\u0027"},{"line_number":757,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        if \u0027support_storage_mgr\u0027 not in define \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_0b057ec1","line":756,"in_reply_to":"3aaa91ec_d45b7452","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        elif (api.startswith(\u0027SYNO.Core.Storage.\u0027)):"},{"line_number":792,"context_line":"            message, exc \u003d self._check_storage_response(out, **kwargs)"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.error(_LE(\u0027%(message)s\u0027), {\u0027message\u0027: message})"},{"line_number":795,"context_line":"        LOG.error(_LE(\u0027%(exc)s\u0027), {\u0027exc\u0027: exc})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        raise exc"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_3733daf7","line":794,"updated":"2016-06-30 13:18:29.000000000","message":"Just do LOG.exception(message)","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        elif (api.startswith(\u0027SYNO.Core.Storage.\u0027)):"},{"line_number":792,"context_line":"            message, exc \u003d self._check_storage_response(out, **kwargs)"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.error(_LE(\u0027%(message)s\u0027), {\u0027message\u0027: message})"},{"line_number":795,"context_line":"        LOG.error(_LE(\u0027%(exc)s\u0027), {\u0027exc\u0027: exc})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        raise exc"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_eb0912df","line":794,"in_reply_to":"3aaa91ec_3733daf7","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            message, exc \u003d self._check_storage_response(out, **kwargs)"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.error(_LE(\u0027%(message)s\u0027), {\u0027message\u0027: message})"},{"line_number":795,"context_line":"        LOG.error(_LE(\u0027%(exc)s\u0027), {\u0027exc\u0027: exc})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        raise exc"},{"line_number":798,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_d7109650","line":795,"updated":"2016-06-30 13:18:29.000000000","message":"Remove this line and just change previous one to LOG.exception.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":792,"context_line":"            message, exc \u003d self._check_storage_response(out, **kwargs)"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"        LOG.error(_LE(\u0027%(message)s\u0027), {\u0027message\u0027: message})"},{"line_number":795,"context_line":"        LOG.error(_LE(\u0027%(exc)s\u0027), {\u0027exc\u0027: exc})"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        raise exc"},{"line_number":798,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_4b0f86e1","line":795,"in_reply_to":"3aaa91ec_d7109650","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        for key in key_array:"},{"line_number":813,"context_line":"            if key not in curr_obj:"},{"line_number":814,"context_line":"                LOG.error(_LE(\u0027key [%(key)s] is not in %(obj)s\u0027),"},{"line_number":815,"context_line":"                          {\u0027key\u0027: str(key),"},{"line_number":816,"context_line":"                           \u0027obj\u0027: str(curr_obj)})"},{"line_number":817,"context_line":"                return False"},{"line_number":818,"context_line":"            curr_obj \u003d curr_obj[key]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_9758ce32","line":815,"updated":"2016-06-30 13:18:29.000000000","message":"str() not needed here.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        for key in key_array:"},{"line_number":813,"context_line":"            if key not in curr_obj:"},{"line_number":814,"context_line":"                LOG.error(_LE(\u0027key [%(key)s] is not in %(obj)s\u0027),"},{"line_number":815,"context_line":"                          {\u0027key\u0027: str(key),"},{"line_number":816,"context_line":"                           \u0027obj\u0027: str(curr_obj)})"},{"line_number":817,"context_line":"                return False"},{"line_number":818,"context_line":"            curr_obj \u003d curr_obj[key]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_8bf96ecb","line":815,"in_reply_to":"3aaa91ec_9758ce32","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        if value_type and not isinstance(curr_obj, value_type):"},{"line_number":821,"context_line":"            LOG.error(_LE(\u0027[%(obj)s] is %(type)s, not %(value_type)s\u0027),"},{"line_number":822,"context_line":"                      {\u0027obj\u0027: str(curr_obj),"},{"line_number":823,"context_line":"                       \u0027type\u0027: str(type(curr_obj)),"},{"line_number":824,"context_line":"                       \u0027value_type\u0027: str(value_type)})"},{"line_number":825,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_1745fe41","line":822,"updated":"2016-06-30 13:18:29.000000000","message":"Same","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        if value_type and not isinstance(curr_obj, value_type):"},{"line_number":821,"context_line":"            LOG.error(_LE(\u0027[%(obj)s] is %(type)s, not %(value_type)s\u0027),"},{"line_number":822,"context_line":"                      {\u0027obj\u0027: str(curr_obj),"},{"line_number":823,"context_line":"                       \u0027type\u0027: str(type(curr_obj)),"},{"line_number":824,"context_line":"                       \u0027value_type\u0027: str(value_type)})"},{"line_number":825,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_cb0376b7","line":822,"in_reply_to":"3aaa91ec_1745fe41","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":919,"context_line":"            self.check_response(out)"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        except exception.SynoLUNNotExist:"},{"line_number":922,"context_line":"            LOG.warning(_LW(\u0027LUN not exist\u0027))"},{"line_number":923,"context_line":"        except Exception:"},{"line_number":924,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":925,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_b77a2a75","line":922,"updated":"2016-06-30 13:18:29.000000000","message":"/LUN not/LUN does not/","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":919,"context_line":"            self.check_response(out)"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        except exception.SynoLUNNotExist:"},{"line_number":922,"context_line":"            LOG.warning(_LW(\u0027LUN not exist\u0027))"},{"line_number":923,"context_line":"        except Exception:"},{"line_number":924,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":925,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_eb30f2a0","line":922,"in_reply_to":"3aaa91ec_b77a2a75","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":928,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"},{"line_number":929,"context_line":"            reason \u003d ((\u0027The size of volume to-be-cloned is smaller than \u0027"},{"line_number":930,"context_line":"                      \u0027original size. New: [%(new)d]  Old: [%(old)d]\u0027) % {"},{"line_number":931,"context_line":"                      \u0027new\u0027: volume[\u0027size\u0027],"},{"line_number":932,"context_line":"                      \u0027old\u0027: src_vref[\u0027size\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_97f44ef1","line":929,"updated":"2016-06-30 13:18:29.000000000","message":"_()","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":926,"context_line":""},{"line_number":927,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":928,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"},{"line_number":929,"context_line":"            reason \u003d ((\u0027The size of volume to-be-cloned is smaller than \u0027"},{"line_number":930,"context_line":"                      \u0027original size. New: [%(new)d]  Old: [%(old)d]\u0027) % {"},{"line_number":931,"context_line":"                      \u0027new\u0027: volume[\u0027size\u0027],"},{"line_number":932,"context_line":"                      \u0027old\u0027: src_vref[\u0027size\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_4b266669","line":929,"in_reply_to":"3aaa91ec_97f44ef1","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":968,"context_line":""},{"line_number":969,"context_line":"        LOG.error(_LE(\u0027Lun status [%s] not normal. Cannot extend volume.\u0027),"},{"line_number":970,"context_line":"                  status)"},{"line_number":971,"context_line":"        reason \u003d \u0027Lun status [%s] not normal\u0027 % status"},{"line_number":972,"context_line":"        raise exception.ExtendVolumeError(reason\u003dreason)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_37e63a44","line":971,"updated":"2016-06-30 13:18:29.000000000","message":"_()","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":968,"context_line":""},{"line_number":969,"context_line":"        LOG.error(_LE(\u0027Lun status [%s] not normal. Cannot extend volume.\u0027),"},{"line_number":970,"context_line":"                  status)"},{"line_number":971,"context_line":"        reason \u003d \u0027Lun status [%s] not normal\u0027 % status"},{"line_number":972,"context_line":"        raise exception.ExtendVolumeError(reason\u003dreason)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"    def extend_volume(self, volume, new_size):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_2b2b1a32","line":971,"in_reply_to":"3aaa91ec_37e63a44","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Volume on Synology storage to be used for creating lun.\u0027),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027admin_port\u0027,"},{"line_number":49,"context_line":"               default\u003d5000,"},{"line_number":50,"context_line":"               help\u003d\u0027Management port for Synology storage.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027username\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_3b94238b","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"updated":"2016-07-01 15:05:07.000000000","message":"PortOpt","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Volume on Synology storage to be used for creating lun.\u0027),"},{"line_number":48,"context_line":"    cfg.IntOpt(\u0027admin_port\u0027,"},{"line_number":49,"context_line":"               default\u003d5000,"},{"line_number":50,"context_line":"               help\u003d\u0027Management port for Synology storage.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027username\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_6b37e2e3","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":14},"in_reply_to":"3aaa91ec_3b94238b","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               help\u003d\u0027Administrator of Synology storage.\u0027),"},{"line_number":54,"context_line":"    cfg.StrOpt(\u0027password\u0027,"},{"line_number":55,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":56,"context_line":"               help\u003d\u0027Password of administator for logging in \u0027"},{"line_number":57,"context_line":"                    \u0027Synology storage.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027ssl_verify\u0027,"},{"line_number":59,"context_line":"                default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_fbc73b96","line":56,"updated":"2016-07-01 15:05:07.000000000","message":"Please add secret\u003dTrue","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               help\u003d\u0027Administrator of Synology storage.\u0027),"},{"line_number":54,"context_line":"    cfg.StrOpt(\u0027password\u0027,"},{"line_number":55,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":56,"context_line":"               help\u003d\u0027Password of administator for logging in \u0027"},{"line_number":57,"context_line":"                    \u0027Synology storage.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027ssl_verify\u0027,"},{"line_number":59,"context_line":"                default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0b4d7e72","line":56,"in_reply_to":"3aaa91ec_fbc73b96","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":55,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":56,"context_line":"               help\u003d\u0027Password of administator for logging in \u0027"},{"line_number":57,"context_line":"                    \u0027Synology storage.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027ssl_verify\u0027,"},{"line_number":59,"context_line":"                default\u003dTrue,"},{"line_number":60,"context_line":"                help\u003d\u0027Do certificate validation or not if \u0027"},{"line_number":61,"context_line":"                     \u0027$driver_use_ssl is True\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_3b93835e","line":58,"range":{"start_line":58,"start_character":17,"end_line":58,"end_character":28},"updated":"2016-07-01 15:05:07.000000000","message":"Why can\u0027t we use driver_use_ssl in the base driver?","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":55,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":56,"context_line":"               help\u003d\u0027Password of administator for logging in \u0027"},{"line_number":57,"context_line":"                    \u0027Synology storage.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027ssl_verify\u0027,"},{"line_number":59,"context_line":"                default\u003dTrue,"},{"line_number":60,"context_line":"                help\u003d\u0027Do certificate validation or not if \u0027"},{"line_number":61,"context_line":"                     \u0027$driver_use_ssl is True\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_b09017ee","line":58,"range":{"start_line":58,"start_character":17,"end_line":58,"end_character":28},"in_reply_to":"3aaa91ec_3b93835e","updated":"2016-07-04 06:31:42.000000000","message":"We did use driver_use_ssl to indicate using SSL connections for backend storage. This $ssl_verify option is used for certificate validation while establishing an SSL connection.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                help\u003d\u0027Do certificate validation or not if \u0027"},{"line_number":61,"context_line":"                     \u0027$driver_use_ssl is True\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027one_time_pass\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027One time password of administator for logging in \u0027"},{"line_number":65,"context_line":"                    \u0027Synology storage if OTP is enabled.\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027device_id\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_bb85b30b","line":63,"updated":"2016-07-01 15:05:07.000000000","message":"secret\u003dTrue","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                help\u003d\u0027Do certificate validation or not if \u0027"},{"line_number":61,"context_line":"                     \u0027$driver_use_ssl is True\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027one_time_pass\u0027,"},{"line_number":63,"context_line":"               default\u003dNone,"},{"line_number":64,"context_line":"               help\u003d\u0027One time password of administator for logging in \u0027"},{"line_number":65,"context_line":"                    \u0027Synology storage if OTP is enabled.\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027device_id\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_eb511210","line":63,"in_reply_to":"3aaa91ec_bb85b30b","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f33bbaa4a13c9625d6934f8c3e2b30ef49fab42f","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        data.update(params)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        LOG.debug(\u0027[%s]\u0027, url)"},{"line_number":348,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        # Send HTTP Post Request"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_e17b02f3","line":347,"range":{"start_line":347,"start_character":24,"end_line":347,"end_character":25},"updated":"2016-07-01 19:33:00.000000000","message":"s/,/% to keep your code log standard.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        data.update(params)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        LOG.debug(\u0027[%s]\u0027, url)"},{"line_number":348,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        # Send HTTP Post Request"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2b5cba24","line":347,"range":{"start_line":347,"start_character":24,"end_line":347,"end_character":25},"in_reply_to":"3aaa91ec_e17b02f3","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        if (200 !\u003d http_status):"},{"line_number":362,"context_line":"            result \u003d {\u0027http_status\u0027: http_status}"},{"line_number":363,"context_line":"        elif \u0027success\u0027 not in result:"},{"line_number":364,"context_line":"            reason \u003d _(\u0027\\\u0027success\\\u0027 not found\u0027)"},{"line_number":365,"context_line":"            raise exception.MalformedResponse(cmd\u003djson.dumps(data, indent\u003d4),"},{"line_number":366,"context_line":"                                              reason\u003dreason)"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_7bd98b22","line":364,"range":{"start_line":364,"start_character":23,"end_line":364,"end_character":46},"updated":"2016-07-01 15:05:07.000000000","message":"\"\u0027success\u0027 not found\"","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        if (200 !\u003d http_status):"},{"line_number":362,"context_line":"            result \u003d {\u0027http_status\u0027: http_status}"},{"line_number":363,"context_line":"        elif \u0027success\u0027 not in result:"},{"line_number":364,"context_line":"            reason \u003d _(\u0027\\\u0027success\\\u0027 not found\u0027)"},{"line_number":365,"context_line":"            raise exception.MalformedResponse(cmd\u003djson.dumps(data, indent\u003d4),"},{"line_number":366,"context_line":"                                              reason\u003dreason)"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_8b416e3c","line":364,"range":{"start_line":364,"start_character":23,"end_line":364,"end_character":46},"in_reply_to":"3aaa91ec_7bd98b22","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_pool_size\u0027,"},{"line_number":459,"context_line":"                                              reason\u003d_(\u0027size not found\u0027))"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        free_capacity_gb \u003d int(info[\u0027size_free_byte\u0027]) / units.Gi"},{"line_number":462,"context_line":"        total_capacity_gb \u003d int(info[\u0027size_total_byte\u0027]) / units.Gi"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        return free_capacity_gb, total_capacity_gb"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_1bab2720","line":461,"range":{"start_line":461,"start_character":8,"end_line":461,"end_character":65},"updated":"2016-07-01 15:05:07.000000000","message":"I think you should use int() after the division.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_pool_size\u0027,"},{"line_number":459,"context_line":"                                              reason\u003d_(\u0027size not found\u0027))"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        free_capacity_gb \u003d int(info[\u0027size_free_byte\u0027]) / units.Gi"},{"line_number":462,"context_line":"        total_capacity_gb \u003d int(info[\u0027size_total_byte\u0027]) / units.Gi"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        return free_capacity_gb, total_capacity_gb"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_6b3ec2b9","line":461,"range":{"start_line":461,"start_character":8,"end_line":461,"end_character":65},"in_reply_to":"3aaa91ec_1bab2720","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def _get_lun_info(self, lun_name, additional\u003dNone):"},{"line_number":467,"context_line":"        if not lun_name:"},{"line_number":468,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":469,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        params \u003d {\u0027uuid\u0027: lun_name}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_1b7207e4","line":468,"updated":"2016-07-01 15:05:07.000000000","message":"Please translate all exception messages.\n\nerr \u003d _(\u0027..\u0027)","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def _get_lun_info(self, lun_name, additional\u003dNone):"},{"line_number":467,"context_line":"        if not lun_name:"},{"line_number":468,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":469,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        params \u003d {\u0027uuid\u0027: lun_name}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_4b6e66ca","line":468,"in_reply_to":"3aaa91ec_1b7207e4","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _target_create(self, identifier):"},{"line_number":550,"context_line":"        if not identifier:"},{"line_number":551,"context_line":"            err \u003d \u0027Param [identifier] is invalid.\u0027"},{"line_number":552,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        # 0 for no auth, 1 for single chap, 2 for mutual chap"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_db46bf7a","line":551,"updated":"2016-07-01 15:05:07.000000000","message":"Same comment.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def _target_create(self, identifier):"},{"line_number":550,"context_line":"        if not identifier:"},{"line_number":551,"context_line":"            err \u003d \u0027Param [identifier] is invalid.\u0027"},{"line_number":552,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        # 0 for no auth, 1 for single chap, 2 for mutual chap"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2b731ab3","line":551,"in_reply_to":"3aaa91ec_db46bf7a","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def _target_create(self, identifier):"},{"line_number":550,"context_line":"        if not identifier:"},{"line_number":551,"context_line":"            err \u003d \u0027Param [identifier] is invalid.\u0027"},{"line_number":552,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        # 0 for no auth, 1 for single chap, 2 for mutual chap"},{"line_number":555,"context_line":"        auth_type \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_26f40ace","line":552,"range":{"start_line":552,"start_character":50,"end_line":552,"end_character":53},"updated":"2016-07-01 15:05:07.000000000","message":"err\u003derr","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def _target_create(self, identifier):"},{"line_number":550,"context_line":"        if not identifier:"},{"line_number":551,"context_line":"            err \u003d \u0027Param [identifier] is invalid.\u0027"},{"line_number":552,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        # 0 for no auth, 1 for single chap, 2 for mutual chap"},{"line_number":555,"context_line":"        auth_type \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_6b6522e0","line":552,"range":{"start_line":552,"start_character":50,"end_line":552,"end_character":53},"in_reply_to":"3aaa91ec_26f40ace","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _target_delete(self, trg_id):"},{"line_number":597,"context_line":"        if 0 \u003e trg_id:"},{"line_number":598,"context_line":"            err \u003d \u0027trg_id is invalid: %d.\u0027 % trg_id"},{"line_number":599,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_bb2e53a9","line":598,"updated":"2016-07-01 15:05:07.000000000","message":"Same comment.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _target_delete(self, trg_id):"},{"line_number":597,"context_line":"        if 0 \u003e trg_id:"},{"line_number":598,"context_line":"            err \u003d \u0027trg_id is invalid: %d.\u0027 % trg_id"},{"line_number":599,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_ab48aa5c","line":598,"in_reply_to":"3aaa91ec_bb2e53a9","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    def _target_delete(self, trg_id):"},{"line_number":597,"context_line":"        if 0 \u003e trg_id:"},{"line_number":598,"context_line":"            err \u003d \u0027trg_id is invalid: %d.\u0027 % trg_id"},{"line_number":599,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        try:"},{"line_number":602,"context_line":"            out \u003d self.exec_webapi(\u0027SYNO.Core.ISCSI.Target\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_e6284236","line":599,"range":{"start_line":599,"start_character":50,"end_line":599,"end_character":53},"updated":"2016-07-01 15:05:07.000000000","message":"err\u003derr","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    def _target_delete(self, trg_id):"},{"line_number":597,"context_line":"        if 0 \u003e trg_id:"},{"line_number":598,"context_line":"            err \u003d \u0027trg_id is invalid: %d.\u0027 % trg_id"},{"line_number":599,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        try:"},{"line_number":602,"context_line":"            out \u003d self.exec_webapi(\u0027SYNO.Core.ISCSI.Target\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_eb78f291","line":599,"range":{"start_line":599,"start_character":50,"end_line":599,"end_character":53},"in_reply_to":"3aaa91ec_e6284236","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":837,"context_line":""},{"line_number":838,"context_line":"    def is_lun_mapped(self, lun_name):"},{"line_number":839,"context_line":"        if not lun_name:"},{"line_number":840,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":841,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_c6b386eb","line":840,"updated":"2016-07-01 15:05:07.000000000","message":"_(..)","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":837,"context_line":""},{"line_number":838,"context_line":"    def is_lun_mapped(self, lun_name):"},{"line_number":839,"context_line":"        if not lun_name:"},{"line_number":840,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":841,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_ab5f0a0d","line":840,"in_reply_to":"3aaa91ec_c6b386eb","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":838,"context_line":"    def is_lun_mapped(self, lun_name):"},{"line_number":839,"context_line":"        if not lun_name:"},{"line_number":840,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":841,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        try:"},{"line_number":844,"context_line":"            lun_info \u003d self._get_lun_info(lun_name, [\u0027is_mapped\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_a6b8fac8","line":841,"updated":"2016-07-01 15:05:07.000000000","message":"err\u003derr","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":838,"context_line":"    def is_lun_mapped(self, lun_name):"},{"line_number":839,"context_line":"        if not lun_name:"},{"line_number":840,"context_line":"            err \u003d \u0027Param [lun_name] is invalid.\u0027"},{"line_number":841,"context_line":"            raise exception.InvalidParameterValue(err)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        try:"},{"line_number":844,"context_line":"            lun_info \u003d self._get_lun_info(lun_name, [\u0027is_mapped\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_0b9bbeca","line":841,"in_reply_to":"3aaa91ec_a6b8fac8","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":14907,"name":"Alyson","email":"alyson.rodrigues.rosa@gmail.com","username":"Alyson"},"change_message_id":"f33bbaa4a13c9625d6934f8c3e2b30ef49fab42f","unresolved":false,"context_lines":[{"line_number":914,"context_line":"            LOG.warning(_LW(\u0027LUN does not exist\u0027))"},{"line_number":915,"context_line":"        except Exception:"},{"line_number":916,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":917,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":920,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_c449b462","line":917,"range":{"start_line":917,"start_character":15,"end_line":917,"end_character":62},"updated":"2016-07-01 19:33:00.000000000","message":"Log which volume cant be deleted here and in other operations?","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":914,"context_line":"            LOG.warning(_LW(\u0027LUN does not exist\u0027))"},{"line_number":915,"context_line":"        except Exception:"},{"line_number":916,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":917,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":920,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_eb9f52b2","line":917,"range":{"start_line":917,"start_character":15,"end_line":917,"end_character":62},"in_reply_to":"3aaa91ec_c449b462","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e005ca96dbdad6b2181a63a43203144a9bfa6eac","unresolved":false,"context_lines":[{"line_number":917,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":920,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"},{"line_number":921,"context_line":"            reason \u003d (_(\u0027The size of volume to-be-cloned is smaller than \u0027"},{"line_number":922,"context_line":"                        \u0027original size. New: [%(new)d]  Old: [%(old)d]\u0027) % {"},{"line_number":923,"context_line":"                      \u0027new\u0027: volume[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_06e62eb0","line":920,"updated":"2016-07-01 15:05:07.000000000","message":"Already checked before the driver API is called; it is redundant.","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"6d6d7e9a5f26c9205ab6d5cd481bbfed4abfdc56","unresolved":false,"context_lines":[{"line_number":917,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume.\u0027))"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":920,"context_line":"        if src_vref[\u0027size\u0027] \u003e volume[\u0027size\u0027]:"},{"line_number":921,"context_line":"            reason \u003d (_(\u0027The size of volume to-be-cloned is smaller than \u0027"},{"line_number":922,"context_line":"                        \u0027original size. New: [%(new)d]  Old: [%(old)d]\u0027) % {"},{"line_number":923,"context_line":"                      \u0027new\u0027: volume[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_4ba5c602","line":920,"in_reply_to":"3aaa91ec_06e62eb0","updated":"2016-07-04 06:31:42.000000000","message":"Done","commit_id":"20643daaa59b49025ab91bd72ab8b85533e12923"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        data.update(params)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\u0027[%s]\u0027 % url)"},{"line_number":350,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        # Send HTTP Post Request"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_13726711","line":349,"range":{"start_line":349,"start_character":24,"end_line":349,"end_character":26},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        data.update(params)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\u0027[%s]\u0027 % url)"},{"line_number":350,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        # Send HTTP Post Request"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9c281f35","line":349,"range":{"start_line":349,"start_character":24,"end_line":349,"end_character":26},"in_reply_to":"1aa78d24_13726711","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        data.update(params)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\u0027[%s]\u0027 % url)"},{"line_number":350,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        # Send HTTP Post Request"},{"line_number":353,"context_line":"        resp \u003d requests.post(url,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_73612b39","line":350,"range":{"start_line":350,"start_character":22,"end_line":350,"end_character":24},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        data.update(params)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\u0027[%s]\u0027 % url)"},{"line_number":350,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(data, indent\u003d4))"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        # Send HTTP Post Request"},{"line_number":353,"context_line":"        resp \u003d requests.post(url,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3c180b1e","line":350,"range":{"start_line":350,"start_character":22,"end_line":350,"end_character":24},"in_reply_to":"1aa78d24_73612b39","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        http_status \u003d resp.status_code"},{"line_number":358,"context_line":"        result \u003d resp.json()"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(result, indent\u003d4))"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        # Check for status code"},{"line_number":363,"context_line":"        if (200 !\u003d http_status):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b3571359","line":360,"range":{"start_line":360,"start_character":22,"end_line":360,"end_character":24},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        http_status \u003d resp.status_code"},{"line_number":358,"context_line":"        result \u003d resp.json()"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        LOG.debug(\u0027%s\u0027 % json.dumps(result, indent\u003d4))"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        # Check for status code"},{"line_number":363,"context_line":"        if (200 !\u003d http_status):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_bcda3b49","line":360,"range":{"start_line":360,"start_character":22,"end_line":360,"end_character":24},"in_reply_to":"1aa78d24_b3571359","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            self.check_response(out, uuid\u003dlun_name)"},{"line_number":484,"context_line":"        except Exception:"},{"line_number":485,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":486,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_info. [%s]\u0027) % lun_name)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027lun\u0027], object):"},{"line_number":489,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_lun_info\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_d300df36","line":486,"range":{"start_line":486,"start_character":66,"end_line":486,"end_character":68},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            self.check_response(out, uuid\u003dlun_name)"},{"line_number":484,"context_line":"        except Exception:"},{"line_number":485,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":486,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_info. [%s]\u0027) % lun_name)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027lun\u0027], object):"},{"line_number":489,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_lun_info\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_fce843e4","line":486,"range":{"start_line":486,"start_character":66,"end_line":486,"end_character":68},"in_reply_to":"1aa78d24_d300df36","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            lun_info \u003d self._get_lun_info(lun_name)"},{"line_number":501,"context_line":"        except Exception:"},{"line_number":502,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":503,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_uuid. [%s]\u0027) % lun_name)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        if not self.check_value_valid(lun_info, [\u0027uuid\u0027], string_types):"},{"line_number":506,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_lun_info\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_d3873fb3","line":503,"range":{"start_line":503,"start_character":66,"end_line":503,"end_character":68},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            lun_info \u003d self._get_lun_info(lun_name)"},{"line_number":501,"context_line":"        except Exception:"},{"line_number":502,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":503,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_uuid. [%s]\u0027) % lun_name)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        if not self.check_value_valid(lun_info, [\u0027uuid\u0027], string_types):"},{"line_number":506,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_get_lun_info\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3cef6bea","line":503,"range":{"start_line":503,"start_character":66,"end_line":503,"end_character":68},"in_reply_to":"1aa78d24_d3873fb3","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                                          [\u0027status\u0027, \u0027is_action_locked\u0027])"},{"line_number":519,"context_line":"        except Exception:"},{"line_number":520,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":521,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_status. [%s]\u0027) %"},{"line_number":522,"context_line":"                              lun_name)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        if not self.check_value_valid(lun_info, [\u0027status\u0027], string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b3b39399","line":521,"range":{"start_line":521,"start_character":68,"end_line":521,"end_character":70},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                                          [\u0027status\u0027, \u0027is_action_locked\u0027])"},{"line_number":519,"context_line":"        except Exception:"},{"line_number":520,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":521,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_lun_status. [%s]\u0027) %"},{"line_number":522,"context_line":"                              lun_name)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        if not self.check_value_valid(lun_info, [\u0027status\u0027], string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_1cec2ff2","line":521,"range":{"start_line":521,"start_character":68,"end_line":521,"end_character":70},"in_reply_to":"1aa78d24_b3b39399","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            self.check_response(out, snapshot_id\u003dsnapshot_uuid)"},{"line_number":550,"context_line":"        except Exception:"},{"line_number":551,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":552,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_snapshot_info. [%s]\u0027) %"},{"line_number":553,"context_line":"                              snapshot_uuid)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027snapshot\u0027], object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_53698ff8","line":552,"range":{"start_line":552,"start_character":71,"end_line":552,"end_character":73},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":549,"context_line":"            self.check_response(out, snapshot_id\u003dsnapshot_uuid)"},{"line_number":550,"context_line":"        except Exception:"},{"line_number":551,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":552,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_snapshot_info. [%s]\u0027) %"},{"line_number":553,"context_line":"                              snapshot_uuid)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027snapshot\u0027], object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_dce58709","line":552,"range":{"start_line":552,"start_character":71,"end_line":552,"end_character":73},"in_reply_to":"1aa78d24_53698ff8","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                                     \u0027is_action_locked\u0027])"},{"line_number":571,"context_line":"        except Exception:"},{"line_number":572,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":573,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_snapshot_info. [%s]\u0027) %"},{"line_number":574,"context_line":"                              snapshot_uuid)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"        if not self.check_value_valid(snapshot_info, [\u0027status\u0027], string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_f3787bc6","line":573,"range":{"start_line":573,"start_character":71,"end_line":573,"end_character":73},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                                     \u0027is_action_locked\u0027])"},{"line_number":571,"context_line":"        except Exception:"},{"line_number":572,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":573,"context_line":"                LOG.exception(_LE(\u0027Failed to _get_snapshot_info. [%s]\u0027) %"},{"line_number":574,"context_line":"                              snapshot_uuid)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"        if not self.check_value_valid(snapshot_info, [\u0027status\u0027], string_types):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_fc21634e","line":573,"range":{"start_line":573,"start_character":71,"end_line":573,"end_character":73},"in_reply_to":"1aa78d24_f3787bc6","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        except Exception:"},{"line_number":642,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":643,"context_line":"                LOG.exception(_LE(\u0027Failed to _target_create. [%s]\u0027) %"},{"line_number":644,"context_line":"                              identifier)"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027target_id\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_d3757fcb","line":643,"range":{"start_line":643,"start_character":67,"end_line":643,"end_character":69},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        except Exception:"},{"line_number":642,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":643,"context_line":"                LOG.exception(_LE(\u0027Failed to _target_create. [%s]\u0027) %"},{"line_number":644,"context_line":"                              identifier)"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if not self.check_value_valid(out, [\u0027data\u0027, \u0027target_id\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_dc7aa723","line":643,"range":{"start_line":643,"start_character":67,"end_line":643,"end_character":69},"in_reply_to":"1aa78d24_d3757fcb","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        except Exception:"},{"line_number":668,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":669,"context_line":"                LOG.exception(_LE(\u0027Failed to _target_delete. [%d]\u0027) % trg_id)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    # is_map True for map, False for ummap"},{"line_number":672,"context_line":"    def _lun_map_unmap_target(self, volume_name, is_map, trg_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_137c27b4","line":669,"range":{"start_line":669,"start_character":67,"end_line":669,"end_character":69},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        except Exception:"},{"line_number":668,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":669,"context_line":"                LOG.exception(_LE(\u0027Failed to _target_delete. [%d]\u0027) % trg_id)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    # is_map True for map, False for ummap"},{"line_number":672,"context_line":"    def _lun_map_unmap_target(self, volume_name, is_map, trg_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_7cbbb3e5","line":669,"range":{"start_line":669,"start_character":67,"end_line":669,"end_character":69},"in_reply_to":"1aa78d24_137c27b4","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":687,"context_line":"        except Exception:"},{"line_number":688,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":689,"context_line":"                LOG.exception(_LE(\u0027Failed to _lun_map_unmap_target.\u0027"},{"line_number":690,"context_line":"                                  \u0027[%(action)s][%(vol)s].\u0027) %"},{"line_number":691,"context_line":"                              {\u0027action\u0027: (\u0027map_target\u0027 if is_map"},{"line_number":692,"context_line":"                                          else \u0027unmap_target\u0027),"},{"line_number":693,"context_line":"                               \u0027vol\u0027: volume_name})"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_53506f32","line":690,"range":{"start_line":690,"start_character":59,"end_line":690,"end_character":61},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":687,"context_line":"        except Exception:"},{"line_number":688,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":689,"context_line":"                LOG.exception(_LE(\u0027Failed to _lun_map_unmap_target.\u0027"},{"line_number":690,"context_line":"                                  \u0027[%(action)s][%(vol)s].\u0027) %"},{"line_number":691,"context_line":"                              {\u0027action\u0027: (\u0027map_target\u0027 if is_map"},{"line_number":692,"context_line":"                                          else \u0027unmap_target\u0027),"},{"line_number":693,"context_line":"                               \u0027vol\u0027: volume_name})"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_fccfa37c","line":690,"range":{"start_line":690,"start_character":59,"end_line":690,"end_character":61},"in_reply_to":"1aa78d24_53506f32","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                time.sleep(2)"},{"line_number":723,"context_line":"        except Exception:"},{"line_number":724,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":725,"context_line":"                LOG.exception(_LE(\u0027Failed to get lun status. [%s]\u0027) %"},{"line_number":726,"context_line":"                              volume_name)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        LOG.debug(_LE(\u0027Lun [%(vol)s], status [%(status)s].\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_f35fdb3e","line":725,"range":{"start_line":725,"start_character":67,"end_line":725,"end_character":69},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                time.sleep(2)"},{"line_number":723,"context_line":"        except Exception:"},{"line_number":724,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":725,"context_line":"                LOG.exception(_LE(\u0027Failed to get lun status. [%s]\u0027) %"},{"line_number":726,"context_line":"                              volume_name)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        LOG.debug(_LE(\u0027Lun [%(vol)s], status [%(status)s].\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_dccc678b","line":725,"range":{"start_line":725,"start_character":67,"end_line":725,"end_character":69},"in_reply_to":"1aa78d24_f35fdb3e","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                LOG.exception(_LE(\u0027Failed to get lun status. [%s]\u0027) %"},{"line_number":726,"context_line":"                              volume_name)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        LOG.debug(_LE(\u0027Lun [%(vol)s], status [%(status)s].\u0027) %"},{"line_number":729,"context_line":"                  {\u0027vol\u0027: volume_name,"},{"line_number":730,"context_line":"                   \u0027status\u0027: status})"},{"line_number":731,"context_line":"        return status \u003d\u003d \u0027normal\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3356832a","line":728,"range":{"start_line":728,"start_character":60,"end_line":728,"end_character":62},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":725,"context_line":"                LOG.exception(_LE(\u0027Failed to get lun status. [%s]\u0027) %"},{"line_number":726,"context_line":"                              volume_name)"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        LOG.debug(_LE(\u0027Lun [%(vol)s], status [%(status)s].\u0027) %"},{"line_number":729,"context_line":"                  {\u0027vol\u0027: volume_name,"},{"line_number":730,"context_line":"                   \u0027status\u0027: status})"},{"line_number":731,"context_line":"        return status \u003d\u003d \u0027normal\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3cc64b68","line":728,"range":{"start_line":728,"start_character":60,"end_line":728,"end_character":62},"in_reply_to":"1aa78d24_3356832a","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                status, locked \u003d self._get_snapshot_status(snapshot_uuid)"},{"line_number":738,"context_line":"                if not locked:"},{"line_number":739,"context_line":"                    break"},{"line_number":740,"context_line":"                time.sleep(2)"},{"line_number":741,"context_line":"        except Exception:"},{"line_number":742,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5337cffe","line":740,"updated":"2016-07-11 22:45:52.000000000","message":"If this is needed, make sure it is mocked out in any unit tests that exercise this code path so it does not slow down unit test runs.","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                status, locked \u003d self._get_snapshot_status(snapshot_uuid)"},{"line_number":738,"context_line":"                if not locked:"},{"line_number":739,"context_line":"                    break"},{"line_number":740,"context_line":"                time.sleep(2)"},{"line_number":741,"context_line":"        except Exception:"},{"line_number":742,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9cb65ff7","line":740,"in_reply_to":"1aa78d24_5337cffe","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                time.sleep(2)"},{"line_number":741,"context_line":"        except Exception:"},{"line_number":742,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"},{"line_number":744,"context_line":"                              snapshot_uuid)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        LOG.debug(_LE(\u0027Lun [%(snapshot)s], status [%(status)s].\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b338b3ef","line":743,"range":{"start_line":743,"start_character":73,"end_line":743,"end_character":74},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                time.sleep(2)"},{"line_number":741,"context_line":"        except Exception:"},{"line_number":742,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"},{"line_number":744,"context_line":"                              snapshot_uuid)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        LOG.debug(_LE(\u0027Lun [%(snapshot)s], status [%(status)s].\u0027) %"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_bcb19b03","line":743,"range":{"start_line":743,"start_character":73,"end_line":743,"end_character":74},"in_reply_to":"1aa78d24_b338b3ef","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"},{"line_number":744,"context_line":"                              snapshot_uuid)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        LOG.debug(_LE(\u0027Lun [%(snapshot)s], status [%(status)s].\u0027) %"},{"line_number":747,"context_line":"                  {\u0027snapshot\u0027: snapshot_uuid,"},{"line_number":748,"context_line":"                   \u0027status\u0027: status})"},{"line_number":749,"context_line":"        return status \u003d\u003d \u0027Healthy\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_f326bbcc","line":746,"range":{"start_line":746,"start_character":65,"end_line":746,"end_character":67},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027) %"},{"line_number":744,"context_line":"                              snapshot_uuid)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        LOG.debug(_LE(\u0027Lun [%(snapshot)s], status [%(status)s].\u0027) %"},{"line_number":747,"context_line":"                  {\u0027snapshot\u0027: snapshot_uuid,"},{"line_number":748,"context_line":"                   \u0027status\u0027: status})"},{"line_number":749,"context_line":"        return status \u003d\u003d \u0027Healthy\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5cc07750","line":746,"range":{"start_line":746,"start_character":65,"end_line":746,"end_character":67},"in_reply_to":"1aa78d24_f326bbcc","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":821,"context_line":"        major, minor, hotfix \u003d (int(major), int(minor), int(hotfix))"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"        if (6 \u003e major) or (major is 6 and minor is 0 and hotfix \u003c 2):"},{"line_number":824,"context_line":"            m \u003d (_(\u0027not support cinder-volume in DS ver \"%s\"\u0027) %"},{"line_number":825,"context_line":"                 firmware_version)"},{"line_number":826,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":827,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b30f1338","line":824,"updated":"2016-07-11 22:45:52.000000000","message":"This is a confusing statement. Is it supposed to say something like \"DS version %s is not supported\"?","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":821,"context_line":"        major, minor, hotfix \u003d (int(major), int(minor), int(hotfix))"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"        if (6 \u003e major) or (major is 6 and minor is 0 and hotfix \u003c 2):"},{"line_number":824,"context_line":"            m \u003d (_(\u0027not support cinder-volume in DS ver \"%s\"\u0027) %"},{"line_number":825,"context_line":"                 firmware_version)"},{"line_number":826,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":827,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3c748b34","line":824,"in_reply_to":"1aa78d24_b30f1338","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        if (\u0027support_storage_mgr\u0027 not in define"},{"line_number":850,"context_line":"                or define[\u0027support_storage_mgr\u0027] !\u003d \u0027yes\u0027):"},{"line_number":851,"context_line":"            m \u003d _(\u0027ds not support Storage Manager\u0027)"},{"line_number":852,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        if (\u0027support_iscsi_target\u0027 not in define"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_d30a9f25","line":851,"updated":"2016-07-11 22:45:52.000000000","message":"All of these are confusing.","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        if (\u0027support_storage_mgr\u0027 not in define"},{"line_number":850,"context_line":"                or define[\u0027support_storage_mgr\u0027] !\u003d \u0027yes\u0027):"},{"line_number":851,"context_line":"            m \u003d _(\u0027ds not support Storage Manager\u0027)"},{"line_number":852,"context_line":"            raise exception.VolumeDriverException(message\u003dm)"},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        if (\u0027support_iscsi_target\u0027 not in define"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_1cc38f58","line":851,"in_reply_to":"1aa78d24_d30a9f25","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            lun_info \u003d self._get_lun_info(lun_name, [\u0027is_mapped\u0027])"},{"line_number":942,"context_line":"        except Exception:"},{"line_number":943,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":944,"context_line":"                LOG.exception(_LE(\u0027Failed to _is_lun_mapped. [%s]\u0027) % lun_name)"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"        if not self.check_value_valid(lun_info, [\u0027is_mapped\u0027], bool):"},{"line_number":947,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_is_lun_mapped\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_4e05660f","line":944,"range":{"start_line":944,"start_character":67,"end_line":944,"end_character":70},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            lun_info \u003d self._get_lun_info(lun_name, [\u0027is_mapped\u0027])"},{"line_number":942,"context_line":"        except Exception:"},{"line_number":943,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":944,"context_line":"                LOG.exception(_LE(\u0027Failed to _is_lun_mapped. [%s]\u0027) % lun_name)"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"        if not self.check_value_valid(lun_info, [\u0027is_mapped\u0027], bool):"},{"line_number":947,"context_line":"            raise exception.MalformedResponse(cmd\u003d\u0027_is_lun_mapped\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_7ca293af","line":944,"range":{"start_line":944,"start_character":67,"end_line":944,"end_character":70},"in_reply_to":"1aa78d24_4e05660f","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        except Exception:"},{"line_number":997,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":998,"context_line":"                LOG.exception(_LE(\u0027Failed to create_volume. [%s]\u0027) %"},{"line_number":999,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ae068a19","line":998,"range":{"start_line":998,"start_character":66,"end_line":998,"end_character":68},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        except Exception:"},{"line_number":997,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":998,"context_line":"                LOG.exception(_LE(\u0027Failed to create_volume. [%s]\u0027) %"},{"line_number":999,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5ca7d7bc","line":998,"range":{"start_line":998,"start_character":66,"end_line":998,"end_character":68},"in_reply_to":"1aa78d24_ae068a19","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"            LOG.warning(_LW(\u0027LUN does not exist\u0027))"},{"line_number":1017,"context_line":"        except Exception:"},{"line_number":1018,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1019,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume. [%s]\u0027) %"},{"line_number":1020,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ee141245","line":1019,"range":{"start_line":1019,"start_character":66,"end_line":1019,"end_character":68},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"            LOG.warning(_LW(\u0027LUN does not exist\u0027))"},{"line_number":1017,"context_line":"        except Exception:"},{"line_number":1018,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1019,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_volume. [%s]\u0027) %"},{"line_number":1020,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_1c9a6f6e","line":1019,"range":{"start_line":1019,"start_character":66,"end_line":1019,"end_character":68},"in_reply_to":"1aa78d24_ee141245","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        except Exception:"},{"line_number":1035,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1036,"context_line":"                LOG.exception(_LE(\u0027Failed to create_cloned_volume. [%s]\u0027) %"},{"line_number":1037,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ce115654","line":1036,"range":{"start_line":1036,"start_character":73,"end_line":1036,"end_character":75},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        except Exception:"},{"line_number":1035,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1036,"context_line":"                LOG.exception(_LE(\u0027Failed to create_cloned_volume. [%s]\u0027) %"},{"line_number":1037,"context_line":"                              volume[\u0027name\u0027])"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_dc93c759","line":1036,"range":{"start_line":1036,"start_character":73,"end_line":1036,"end_character":75},"in_reply_to":"1aa78d24_ce115654","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"            self.check_response(out)"},{"line_number":1056,"context_line":""},{"line_number":1057,"context_line":"        except Exception as e:"},{"line_number":1058,"context_line":"            LOG.exception(_LE(\u0027Failed to extend_volume. [%s]\u0027) %"},{"line_number":1059,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":1060,"context_line":"            raise exception.ExtendVolumeError(reason\u003de.msg)"},{"line_number":1061,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_2e1bba74","line":1058,"range":{"start_line":1058,"start_character":61,"end_line":1058,"end_character":64},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"            self.check_response(out)"},{"line_number":1056,"context_line":""},{"line_number":1057,"context_line":"        except Exception as e:"},{"line_number":1058,"context_line":"            LOG.exception(_LE(\u0027Failed to extend_volume. [%s]\u0027) %"},{"line_number":1059,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":1060,"context_line":"            raise exception.ExtendVolumeError(reason\u003de.msg)"},{"line_number":1061,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9cadbf9d","line":1058,"range":{"start_line":1058,"start_character":61,"end_line":1058,"end_character":64},"in_reply_to":"1aa78d24_2e1bba74","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        except Exception:"},{"line_number":1087,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1088,"context_line":"                LOG.exception(_LE(\u0027Failed to create_snapshot. [%s]\u0027) %"},{"line_number":1089,"context_line":"                              snapshot[\u0027volume\u0027][\u0027name\u0027])"},{"line_number":1090,"context_line":""},{"line_number":1091,"context_line":"        if not self.check_value_valid(resp,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_0e187e74","line":1088,"range":{"start_line":1088,"start_character":68,"end_line":1088,"end_character":70},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        except Exception:"},{"line_number":1087,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1088,"context_line":"                LOG.exception(_LE(\u0027Failed to create_snapshot. [%s]\u0027) %"},{"line_number":1089,"context_line":"                              snapshot[\u0027volume\u0027][\u0027name\u0027])"},{"line_number":1090,"context_line":""},{"line_number":1091,"context_line":"        if not self.check_value_valid(resp,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3c9dab66","line":1088,"range":{"start_line":1088,"start_character":68,"end_line":1088,"end_character":70},"in_reply_to":"1aa78d24_0e187e74","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            return"},{"line_number":1126,"context_line":"        except Exception:"},{"line_number":1127,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1128,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_snapshot. [%s]\u0027) %"},{"line_number":1129,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_8e22aea1","line":1128,"range":{"start_line":1128,"start_character":68,"end_line":1128,"end_character":70},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"            return"},{"line_number":1126,"context_line":"        except Exception:"},{"line_number":1127,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1128,"context_line":"                LOG.exception(_LE(\u0027Failed to delete_snapshot. [%s]\u0027) %"},{"line_number":1129,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_7c89f325","line":1128,"range":{"start_line":1128,"start_character":68,"end_line":1128,"end_character":70},"in_reply_to":"1aa78d24_8e22aea1","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"        except exception.SnapshotMetadataNotFound:"},{"line_number":1147,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1148,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot UUID. [%s]\u0027) %"},{"line_number":1149,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1150,"context_line":"        except Exception:"},{"line_number":1151,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ee3b72cf","line":1148,"range":{"start_line":1148,"start_character":70,"end_line":1148,"end_character":72},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"        except exception.SnapshotMetadataNotFound:"},{"line_number":1147,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1148,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot UUID. [%s]\u0027) %"},{"line_number":1149,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1150,"context_line":"        except Exception:"},{"line_number":1151,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_bc7fdb15","line":1148,"range":{"start_line":1148,"start_character":70,"end_line":1148,"end_character":72},"in_reply_to":"1aa78d24_ee3b72cf","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"55b8cd746b3f71c5dd11bd1ea447021438e80d05","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"        except Exception:"},{"line_number":1151,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1152,"context_line":"                LOG.exception(_LE(\u0027Failed to create_volume_from_snapshot. \u0027"},{"line_number":1153,"context_line":"                                  \u0027[%s]\u0027) %"},{"line_number":1154,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_ce3836d6","line":1153,"range":{"start_line":1153,"start_character":41,"end_line":1153,"end_character":43},"updated":"2016-07-11 22:45:52.000000000","message":"Change % to ,","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":22454,"name":"Taylor Huang","email":"taylorh@synology.com","username":"taylorh"},"change_message_id":"8b603b05e963985f4ec110be9b03c7ea8296f126","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"        except Exception:"},{"line_number":1151,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1152,"context_line":"                LOG.exception(_LE(\u0027Failed to create_volume_from_snapshot. \u0027"},{"line_number":1153,"context_line":"                                  \u0027[%s]\u0027) %"},{"line_number":1154,"context_line":"                              snapshot[\u0027id\u0027])"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"        if not self._check_lun_status_normal(volume[\u0027name\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_5c8eb72e","line":1153,"range":{"start_line":1153,"start_character":41,"end_line":1153,"end_character":43},"in_reply_to":"1aa78d24_ce3836d6","updated":"2016-07-12 03:09:08.000000000","message":"Done","commit_id":"2a68db3bfe869a850cf012032d6cccbdf0589b0f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dfb3933b494d38da86f45c73a9cb9626dd9d7403","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        d \u003d d_i \u003d \u0027\u0027"},{"line_number":100,"context_line":"        while len(d) \u003c key_length + iv_length:"},{"line_number":101,"context_line":"            md5_str \u003d d_i + password + salt"},{"line_number":102,"context_line":"            d_i \u003d md5(md5_str).digest()"},{"line_number":103,"context_line":"            d +\u003d d_i"},{"line_number":104,"context_line":"        return d[:key_length], d[key_length:key_length + iv_length]"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_e136c94f","line":102,"updated":"2016-07-12 11:37:50.000000000","message":"Pylint is failing on this line with the following:\n\ncinder/volume/drivers/synology/synology_common.py:102: [E1121, AESCipher._derive_key_and_iv] Too many positional arguments for function call\n\nThis appears to be a bug in pylint, so just pointing that out here in case of questions.\n\nhttp://hustoknow.blogspot.com/2013/06/pylint.html","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7811989d54afbf477e0d7219913773d0438d70f9","unresolved":false,"context_lines":[{"line_number":719,"context_line":"                status, locked \u003d self._get_lun_status(volume_name)"},{"line_number":720,"context_line":"                if not locked:"},{"line_number":721,"context_line":"                    break"},{"line_number":722,"context_line":"                time.sleep(2)"},{"line_number":723,"context_line":"        except Exception:"},{"line_number":724,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":725,"context_line":"                LOG.exception(_LE(\u0027Failed to get lun status. [%s]\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_519b2666","line":722,"updated":"2016-07-12 13:24:46.000000000","message":"Suggest change to eventlet.sleep","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7811989d54afbf477e0d7219913773d0438d70f9","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                status, locked \u003d self._get_snapshot_status(snapshot_uuid)"},{"line_number":738,"context_line":"                if not locked:"},{"line_number":739,"context_line":"                    break"},{"line_number":740,"context_line":"                time.sleep(2)"},{"line_number":741,"context_line":"        except Exception:"},{"line_number":742,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":743,"context_line":"                LOG.exception(_LE(\u0027Failed to get snapshot status. [%s]\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_31b77ad9","line":740,"updated":"2016-07-12 13:24:46.000000000","message":"Same","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7811989d54afbf477e0d7219913773d0438d70f9","unresolved":false,"context_lines":[{"line_number":967,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":968,"context_line":"        data[\u0027thin_provisioning_support\u0027] \u003d True"},{"line_number":969,"context_line":"        data[\u0027thick_provisioning_support\u0027] \u003d False"},{"line_number":970,"context_line":"        data[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d free_capacity_gb"},{"line_number":973,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d total_capacity_gb"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_515cc67c","line":970,"updated":"2016-07-12 13:24:46.000000000","message":"Please use reserved_percentage from cinder.conf\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L247","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7811989d54afbf477e0d7219913773d0438d70f9","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        data[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d free_capacity_gb"},{"line_number":973,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d total_capacity_gb"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        data[\u0027iscsi_ip_address\u0027] \u003d self.config.iscsi_ip_address"},{"line_number":976,"context_line":"        data[\u0027pool_name\u0027] \u003d self.config.pool_name"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_5137a64c","line":973,"updated":"2016-07-12 13:24:46.000000000","message":"You should report provisioned_capacity_gb.  Otherwise the scheduler will make an estimation but won\u0027t be as accurate as reported by the driver as it assumes the storage backend is used by Cinder only.\n\nAlso please report max_over_subscription_ratio","commit_id":"78d124dee28e83a4718a455c456605b8127eab09"}],"cinder/volume/drivers/synology/synology_iscsi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            if self.common.is_lun_mapped(volume[\u0027name\u0027]):"},{"line_number":121,"context_line":"                return model_update"},{"line_number":122,"context_line":"            iqn, trg_id, provider_auth \u003d \\"},{"line_number":123,"context_line":"                self.common.create_iscsi_export(volume[\u0027name\u0027], volume[\u0027id\u0027])"},{"line_number":124,"context_line":"        except Exception as e:"},{"line_number":125,"context_line":"            LOG.exception(_LE(\u0027Failed to remove_export.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_74d5601a","line":122,"range":{"start_line":122,"start_character":41,"end_line":122,"end_character":42},"updated":"2016-06-30 13:18:29.000000000","message":"Please wrap assignment value in () to avoid using \\","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            if self.common.is_lun_mapped(volume[\u0027name\u0027]):"},{"line_number":121,"context_line":"                return model_update"},{"line_number":122,"context_line":"            iqn, trg_id, provider_auth \u003d \\"},{"line_number":123,"context_line":"                self.common.create_iscsi_export(volume[\u0027name\u0027], volume[\u0027id\u0027])"},{"line_number":124,"context_line":"        except Exception as e:"},{"line_number":125,"context_line":"            LOG.exception(_LE(\u0027Failed to remove_export.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_cb1a5617","line":122,"range":{"start_line":122,"start_character":41,"end_line":122,"end_character":42},"in_reply_to":"3aaa91ec_74d5601a","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"}],"releasenotes/notes/synology-volume-driver-c5e0f655b04390ce.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"283a2dc9e13ce1ea08847709567c47933b58a7ba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"        - Added backend driver for Synology iSCSI-supported storage."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3aaa91ec_f4fb10bf","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":8},"updated":"2016-06-30 13:18:29.000000000","message":"The generated template only includes two spaces. These extra spaces should not be added.","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"},{"author":{"_account_id":22100,"name":"Arsen Chen","email":"arsenc@synology.com","username":"arsenc"},"change_message_id":"24d3dabf28ba6869b269ee8cf25efcff1d2211da","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"        - Added backend driver for Synology iSCSI-supported storage."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1aa78d24_0bd3be39","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":8},"in_reply_to":"3aaa91ec_f4fb10bf","updated":"2016-07-04 06:37:20.000000000","message":"Done","commit_id":"7816cdf8ca71239c4184caf02943dd7620c8e749"}]}
