)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":15,"context_line":" - Copy Image to Volume"},{"line_number":16,"context_line":" - Copy Volume to Image"},{"line_number":17,"context_line":" - Clone volume"},{"line_number":18,"context_line":" - Create volume from snapshot"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DocImpact"},{"line_number":21,"context_line":"Co-Authored-By: Cedric Zhuang \u003ccedric.zhuang@emc.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a629dbe_eb84bed3","line":18,"updated":"2016-11-13 02:39:20.000000000","message":"Manage/unmanage volume","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"14f03fe1700469565fb608a1476c03d4494a1228","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver supports both FC and iSCSI protocols and"},{"line_number":10,"context_line":"supports below operations:"},{"line_number":11,"context_line":" - Ceate / Delete volume"},{"line_number":12,"context_line":" - Extend volume"},{"line_number":13,"context_line":" - Attach / Detach volume"},{"line_number":14,"context_line":" - Create / Delete snapshot"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a629dbe_ad3f15d5","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":8},"updated":"2016-11-14 17:02:34.000000000","message":"Create","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This driver supports both FC and iSCSI protocols and"},{"line_number":10,"context_line":"supports below operations:"},{"line_number":11,"context_line":" - Ceate / Delete volume"},{"line_number":12,"context_line":" - Extend volume"},{"line_number":13,"context_line":" - Attach / Detach volume"},{"line_number":14,"context_line":" - Create / Delete snapshot"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a77a97e_eb69008d","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":8},"in_reply_to":"9a629dbe_ad3f15d5","updated":"2016-11-15 08:11:47.000000000","message":"Done","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_adapter.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import exception"},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":23,"context_line":"    import fake_exception as ex"},{"line_number":24,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity import test_client"},{"line_number":25,"context_line":"from cinder.volume.drivers.dell_emc.unity import adapter"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_9d5fb574","line":22,"updated":"2016-12-08 23:15:23.000000000","message":"()","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import exception"},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":23,"context_line":"    import fake_exception as ex"},{"line_number":24,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity import test_client"},{"line_number":25,"context_line":"from cinder.volume.drivers.dell_emc.unity import adapter"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_583fe824","line":22,"in_reply_to":"3a71b18c_9d5fb574","updated":"2016-12-09 02:45:11.000000000","message":"Can\u0027t make this change because the the pep8 check was failed. Using () is an invalid syntax here.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from mock import mock"},{"line_number":19,"context_line":"from oslo_utils import units"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":22,"context_line":"    import fake_exception as ex"},{"line_number":23,"context_line":"from cinder.volume.drivers.dell_emc.unity import client"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_dd820dc8","line":21,"updated":"2016-12-08 23:15:23.000000000","message":"()","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from mock import mock"},{"line_number":19,"context_line":"from oslo_utils import units"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":22,"context_line":"    import fake_exception as ex"},{"line_number":23,"context_line":"from cinder.volume.drivers.dell_emc.unity import client"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_783ae435","line":21,"in_reply_to":"3a71b18c_dd820dc8","updated":"2016-12-09 02:45:11.000000000","message":"The pep8 check will failed as using () is an invalid syntax here.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fbbb293436b90de6e5a22db9ca0c033c4cb1148e","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @property"},{"line_number":124,"context_line":"    def iscsi_node(self):"},{"line_number":125,"context_line":"        name \u003d \u0027iqn.1-1.com.e:c.{}.0\u0027.format(self.name)"},{"line_number":126,"context_line":"        return MockResource(name)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_782e4bfb","line":125,"updated":"2016-12-09 14:50:26.000000000","message":"Please use %s","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"2aa994d35064c8d5084b2126368102917084c532","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @property"},{"line_number":124,"context_line":"    def iscsi_node(self):"},{"line_number":125,"context_line":"        name \u003d \u0027iqn.1-1.com.e:c.{}.0\u0027.format(self.name)"},{"line_number":126,"context_line":"        return MockResource(name)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_f0232ebb","line":125,"in_reply_to":"3a71b18c_782e4bfb","updated":"2016-12-11 06:23:42.000000000","message":"Done","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fbbb293436b90de6e5a22db9ca0c033c4cb1148e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        path0.is_logged_in \u003d True"},{"line_number":140,"context_line":"        path1 \u003d MockResource(\u0027{}_path_1\u0027.format(self.name))"},{"line_number":141,"context_line":"        path1.is_logged_in \u003d False"},{"line_number":142,"context_line":"        path2 \u003d MockResource(\u0027{}_path_2\u0027.format(self.name))"},{"line_number":143,"context_line":"        path2.is_logged_in \u003d True"},{"line_number":144,"context_line":"        return [path0, path1]"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_f83a5b33","line":142,"updated":"2016-12-09 14:50:26.000000000","message":"Please use %s from line 138-142.","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"2aa994d35064c8d5084b2126368102917084c532","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        path0.is_logged_in \u003d True"},{"line_number":140,"context_line":"        path1 \u003d MockResource(\u0027{}_path_1\u0027.format(self.name))"},{"line_number":141,"context_line":"        path1.is_logged_in \u003d False"},{"line_number":142,"context_line":"        path2 \u003d MockResource(\u0027{}_path_2\u0027.format(self.name))"},{"line_number":143,"context_line":"        path2.is_logged_in \u003d True"},{"line_number":144,"context_line":"        return [path0, path1]"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_d02632cd","line":142,"in_reply_to":"3a71b18c_f83a5b33","updated":"2016-12-11 06:23:42.000000000","message":"Done","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fbbb293436b90de6e5a22db9ca0c033c4cb1148e","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def storage_resource(self):"},{"line_number":158,"context_line":"        return MockResource(_id\u003d\u0027sr_{}\u0027.format(self._id),"},{"line_number":159,"context_line":"                            name\u003d\u0027sr_{}\u0027.format(self.name))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def modify(self, name\u003dNone):"},{"line_number":162,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_58126fb5","line":159,"updated":"2016-12-09 14:50:26.000000000","message":"Same","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"2aa994d35064c8d5084b2126368102917084c532","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def storage_resource(self):"},{"line_number":158,"context_line":"        return MockResource(_id\u003d\u0027sr_{}\u0027.format(self._id),"},{"line_number":159,"context_line":"                            name\u003d\u0027sr_{}\u0027.format(self.name))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def modify(self, name\u003dNone):"},{"line_number":162,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_b03d36df","line":159,"in_reply_to":"3a71b18c_58126fb5","updated":"2016-12-11 06:23:42.000000000","message":"Done","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"}],"cinder/tests/unit/volume/drivers/dell_emc/unity/test_driver.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":21,"context_line":"    import fake_exception as ex"},{"line_number":22,"context_line":"from cinder.volume import configuration as conf"},{"line_number":23,"context_line":"from cinder.volume.drivers.dell_emc.unity import driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_1d264516","line":20,"updated":"2016-12-08 23:15:23.000000000","message":"Use () instead of \\","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.tests.unit.volume.drivers.dell_emc.unity \\"},{"line_number":21,"context_line":"    import fake_exception as ex"},{"line_number":22,"context_line":"from cinder.volume import configuration as conf"},{"line_number":23,"context_line":"from cinder.volume.drivers.dell_emc.unity import driver"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_7891049a","line":20,"in_reply_to":"3a71b18c_1d264516","updated":"2016-12-09 02:45:11.000000000","message":"The pep8 check will failed as using () is an invalid syntax here.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"}],"cinder/tests/unit/volume/drivers/emc/unity/test_adapter.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_4fc77145","line":18,"updated":"2016-11-23 01:50:38.000000000","message":"functools should be in the same import group as unittest.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_43aae4d5","line":18,"in_reply_to":"5a74a57a_4fc77145","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/tests/unit/volume/drivers/emc/unity/test_client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.existed \u003d True"},{"line_number":36,"context_line":"        self.size_total \u003d 5 * 1024 ** 3"},{"line_number":37,"context_line":"        self.size_subscribed \u003d 6 * 1024 ** 3"},{"line_number":38,"context_line":"        self.size_free \u003d 2 * 1024 ** 3"},{"line_number":39,"context_line":"        self.is_auto_delete \u003d None"},{"line_number":40,"context_line":"        self.initiator_id \u003d []"},{"line_number":41,"context_line":"        self.alu_hlu_map \u003d {\u0027already_attached\u0027: 99}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_2bcf9656","line":38,"updated":"2016-11-13 02:39:20.000000000","message":"Can you use units in oslo_utils for lines 36-38?","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.existed \u003d True"},{"line_number":36,"context_line":"        self.size_total \u003d 5 * 1024 ** 3"},{"line_number":37,"context_line":"        self.size_subscribed \u003d 6 * 1024 ** 3"},{"line_number":38,"context_line":"        self.size_free \u003d 2 * 1024 ** 3"},{"line_number":39,"context_line":"        self.is_auto_delete \u003d None"},{"line_number":40,"context_line":"        self.initiator_id \u003d []"},{"line_number":41,"context_line":"        self.alu_hlu_map \u003d {\u0027already_attached\u0027: 99}"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_c086ef15","line":38,"in_reply_to":"9a629dbe_2bcf9656","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @property"},{"line_number":72,"context_line":"    def total_size_gb(self):"},{"line_number":73,"context_line":"        return self.size_total / 1024 ** 3"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @total_size_gb.setter"},{"line_number":76,"context_line":"    def total_size_gb(self, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_ab09e696","line":73,"updated":"2016-11-13 02:39:20.000000000","message":"units","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @property"},{"line_number":72,"context_line":"    def total_size_gb(self):"},{"line_number":73,"context_line":"        return self.size_total / 1024 ** 3"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @total_size_gb.setter"},{"line_number":76,"context_line":"    def total_size_gb(self, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_6078c32c","line":73,"in_reply_to":"9a629dbe_ab09e696","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if value \u003d\u003d self.total_size_gb:"},{"line_number":78,"context_line":"            raise ex.UnityNothingToModifyError()"},{"line_number":79,"context_line":"        else:"},{"line_number":80,"context_line":"            self.size_total \u003d value * 1024 ** 3"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def add_initiator(self, uid, force_create\u003dNone):"},{"line_number":83,"context_line":"        self.initiator_id.append(uid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_cbfc5a74","line":80,"updated":"2016-11-13 02:39:20.000000000","message":"units","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if value \u003d\u003d self.total_size_gb:"},{"line_number":78,"context_line":"            raise ex.UnityNothingToModifyError()"},{"line_number":79,"context_line":"        else:"},{"line_number":80,"context_line":"            self.size_total \u003d value * 1024 ** 3"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def add_initiator(self, uid, force_create\u003dNone):"},{"line_number":83,"context_line":"        self.initiator_id.append(uid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_0081c7fb","line":80,"in_reply_to":"9a629dbe_cbfc5a74","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from mock import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import units"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.emc.unity import fake_exception as ex"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_efaf5d7b","line":19,"updated":"2016-11-23 01:50:38.000000000","message":"Remove blank line.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import unittest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from mock import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import units"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.emc.unity import fake_exception as ex"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_83acfcee","line":19,"in_reply_to":"5a74a57a_efaf5d7b","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/tests/unit/volume/drivers/emc/unity/test_driver.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.tests.unit.volume.drivers.emc.unity import fake_exception as ex"},{"line_number":21,"context_line":"from cinder.volume import configuration as conf"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder.volume.drivers.emc.unity import driver"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_cf93814e","line":22,"updated":"2016-11-23 01:50:38.000000000","message":"Remove blank line.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder.tests.unit.volume.drivers.emc.unity import fake_exception as ex"},{"line_number":21,"context_line":"from cinder.volume import configuration as conf"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder.volume.drivers.emc.unity import driver"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_03870c62","line":22,"in_reply_to":"5a74a57a_cf93814e","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/tests/unit/volume/drivers/emc/unity/test_utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.volume.drivers.emc.unity import utils"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_efb3dd08","line":20,"updated":"2016-11-23 01:50:38.000000000","message":"mock should be in a different import group before cinder imports as it is 3rd party lib.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.volume.drivers.emc.unity import utils"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_4381044a","line":20,"in_reply_to":"5a74a57a_efb3dd08","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.volume.drivers.emc.unity import utils"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def get_volume_type_extra_specs(volume_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_4fe4d10c","line":21,"updated":"2016-11-23 01:50:38.000000000","message":"unittest should be moved up to be in the same group as functools because it is in std lib.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.volume.drivers.emc.unity import utils"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"import unittest"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def get_volume_type_extra_specs(volume_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_63960096","line":21,"in_reply_to":"5a74a57a_4fe4d10c","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                          connector)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def test_byte_to_gib(self):"},{"line_number":158,"context_line":"        self.assertEqual(5, utils.byte_to_gib(5 * 1024 ** 3))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_byte_to_mib(self):"},{"line_number":161,"context_line":"        self.assertEqual(5, utils.byte_to_mib(5 * 1024 ** 2))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_cf8c6138","line":158,"updated":"2016-11-23 01:50:38.000000000","message":"Please use oslo_utils units for 1024 etc.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                          connector)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def test_byte_to_gib(self):"},{"line_number":158,"context_line":"        self.assertEqual(5, utils.byte_to_gib(5 * 1024 ** 3))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_byte_to_mib(self):"},{"line_number":161,"context_line":"        self.assertEqual(5, utils.byte_to_mib(5 * 1024 ** 2))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_d70957df","line":158,"in_reply_to":"5a74a57a_cf8c6138","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/volume/drivers/dell_emc/unity/adapter.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d278067ac7302b85f6ea8c8ba8448722212fba91","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                yield attach_info\r"},{"line_number":360,"context_line":"\r"},{"line_number":361,"context_line":"    def _create_volume_from_snap(self, volume, snap, size_in_m\u003dNone):\r"},{"line_number":362,"context_line":"        \"\"\"Creates a volume from an EMC snapshot.\r"},{"line_number":363,"context_line":"\r"},{"line_number":364,"context_line":"        It attaches the `volume` and `snap`, then use `dd` to copy the\r"},{"line_number":365,"context_line":"        data from the EMC snapshot to the `volume`.\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_a919498a","line":362,"updated":"2016-11-27 16:55:17.000000000","message":"s/EMC snapshot/Unity snapshot","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"37a74431246b76f58d2be97653d49d86c424c95b","unresolved":false,"context_lines":[{"line_number":359,"context_line":"                yield attach_info\r"},{"line_number":360,"context_line":"\r"},{"line_number":361,"context_line":"    def _create_volume_from_snap(self, volume, snap, size_in_m\u003dNone):\r"},{"line_number":362,"context_line":"        \"\"\"Creates a volume from an EMC snapshot.\r"},{"line_number":363,"context_line":"\r"},{"line_number":364,"context_line":"        It attaches the `volume` and `snap`, then use `dd` to copy the\r"},{"line_number":365,"context_line":"        data from the EMC snapshot to the `volume`.\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_f305b513","line":362,"in_reply_to":"5a74a57a_a919498a","updated":"2016-11-29 02:35:48.000000000","message":"Done","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d278067ac7302b85f6ea8c8ba8448722212fba91","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        \"\"\"Creates a volume from an EMC snapshot.\r"},{"line_number":363,"context_line":"\r"},{"line_number":364,"context_line":"        It attaches the `volume` and `snap`, then use `dd` to copy the\r"},{"line_number":365,"context_line":"        data from the EMC snapshot to the `volume`.\r"},{"line_number":366,"context_line":"        \"\"\"\r"},{"line_number":367,"context_line":"        model_update \u003d self.create_volume(volume)\r"},{"line_number":368,"context_line":"        src_id \u003d snap.get_id()\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_c91e856f","line":365,"updated":"2016-11-27 16:55:17.000000000","message":"same","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"37a74431246b76f58d2be97653d49d86c424c95b","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        \"\"\"Creates a volume from an EMC snapshot.\r"},{"line_number":363,"context_line":"\r"},{"line_number":364,"context_line":"        It attaches the `volume` and `snap`, then use `dd` to copy the\r"},{"line_number":365,"context_line":"        data from the EMC snapshot to the `volume`.\r"},{"line_number":366,"context_line":"        \"\"\"\r"},{"line_number":367,"context_line":"        model_update \u003d self.create_volume(volume)\r"},{"line_number":368,"context_line":"        src_id \u003d snap.get_id()\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_4e05dc0e","line":365,"in_reply_to":"5a74a57a_c91e856f","updated":"2016-11-29 02:35:48.000000000","message":"Done","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d278067ac7302b85f6ea8c8ba8448722212fba91","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            with excutils.save_and_reraise_exception():\r"},{"line_number":392,"context_line":"                utils.ignore_exception(self.delete_volume, volume)\r"},{"line_number":393,"context_line":"                LOG.error(_LE(\u0027Failed to create cloned volume: %(vol_id)s, \u0027\r"},{"line_number":394,"context_line":"                              \u0027from source emc snapshot: %(snap_name)s. \u0027),\r"},{"line_number":395,"context_line":"                          {\u0027vol_id\u0027: volume.id, \u0027snap_name\u0027: snap.name})\r"},{"line_number":396,"context_line":"\r"},{"line_number":397,"context_line":"        return model_update\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_e90fc136","line":394,"updated":"2016-11-27 16:55:17.000000000","message":"same","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"37a74431246b76f58d2be97653d49d86c424c95b","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            with excutils.save_and_reraise_exception():\r"},{"line_number":392,"context_line":"                utils.ignore_exception(self.delete_volume, volume)\r"},{"line_number":393,"context_line":"                LOG.error(_LE(\u0027Failed to create cloned volume: %(vol_id)s, \u0027\r"},{"line_number":394,"context_line":"                              \u0027from source emc snapshot: %(snap_name)s. \u0027),\r"},{"line_number":395,"context_line":"                          {\u0027vol_id\u0027: volume.id, \u0027snap_name\u0027: snap.name})\r"},{"line_number":396,"context_line":"\r"},{"line_number":397,"context_line":"        return model_update\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_2e50a00a","line":394,"in_reply_to":"5a74a57a_e90fc136","updated":"2016-11-29 02:35:48.000000000","message":"Done","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"72cadaac9bb7525e2da0af229adcc4abe4add0b9","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,\r"},{"line_number":154,"context_line":"            \u0027data\u0027: data,\r"},{"line_number":155,"context_line":"        }\r"},{"line_number":156,"context_line":"        LOG.debug(\u0027Initialized connection info: %s\u0027 % conn_info)\r"},{"line_number":157,"context_line":"        return conn_info\r"},{"line_number":158,"context_line":"\r"},{"line_number":159,"context_line":"    def initialize_connection(self, volume, connector):\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_b716a2a5","line":156,"range":{"start_line":156,"start_character":51,"end_line":156,"end_character":53},"updated":"2016-12-01 08:09:58.000000000","message":"Change to ,","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b5770d23a1818ea8ae22fce8dbdeeb6dec0add68","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,\r"},{"line_number":154,"context_line":"            \u0027data\u0027: data,\r"},{"line_number":155,"context_line":"        }\r"},{"line_number":156,"context_line":"        LOG.debug(\u0027Initialized connection info: %s\u0027 % conn_info)\r"},{"line_number":157,"context_line":"        return conn_info\r"},{"line_number":158,"context_line":"\r"},{"line_number":159,"context_line":"    def initialize_connection(self, volume, connector):\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_d6a67c52","line":156,"range":{"start_line":156,"start_character":51,"end_line":156,"end_character":53},"in_reply_to":"3a71b18c_b716a2a5","updated":"2016-12-02 09:29:04.000000000","message":"Done","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"72cadaac9bb7525e2da0af229adcc4abe4add0b9","unresolved":false,"context_lines":[{"line_number":441,"context_line":"    def get_connection_info(self, hlu, host, connector):\r"},{"line_number":442,"context_line":"        targets \u003d self.client.get_iscsi_target_info()\r"},{"line_number":443,"context_line":"        if not targets:\r"},{"line_number":444,"context_line":"            msg \u003d \"There is no accessible iSCSI targests on the system.\"\r"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":446,"context_line":"        one_target \u003d random.choice(targets)\r"},{"line_number":447,"context_line":"        portals \u003d [a[\u0027portal\u0027] for a in targets]\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_9778c6fa","line":444,"updated":"2016-12-01 08:09:58.000000000","message":"Needs _()","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b5770d23a1818ea8ae22fce8dbdeeb6dec0add68","unresolved":false,"context_lines":[{"line_number":441,"context_line":"    def get_connection_info(self, hlu, host, connector):\r"},{"line_number":442,"context_line":"        targets \u003d self.client.get_iscsi_target_info()\r"},{"line_number":443,"context_line":"        if not targets:\r"},{"line_number":444,"context_line":"            msg \u003d \"There is no accessible iSCSI targests on the system.\"\r"},{"line_number":445,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":446,"context_line":"        one_target \u003d random.choice(targets)\r"},{"line_number":447,"context_line":"        portals \u003d [a[\u0027portal\u0027] for a in targets]\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_c4e7b8e2","line":444,"in_reply_to":"3a71b18c_9778c6fa","updated":"2016-12-02 09:29:04.000000000","message":"Done","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"72cadaac9bb7525e2da0af229adcc4abe4add0b9","unresolved":false,"context_lines":[{"line_number":482,"context_line":"            host, logged_in_only\u003d(not self.auto_zone_enabled))\r"},{"line_number":483,"context_line":"\r"},{"line_number":484,"context_line":"        if not targets:\r"},{"line_number":485,"context_line":"            msg \u003d \"There is no accessible fibre channel targets on the system.\"\r"},{"line_number":486,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":487,"context_line":"\r"},{"line_number":488,"context_line":"        if self.auto_zone_enabled:\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_176d9632","line":485,"updated":"2016-12-01 08:09:58.000000000","message":"Needs _()","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b5770d23a1818ea8ae22fce8dbdeeb6dec0add68","unresolved":false,"context_lines":[{"line_number":482,"context_line":"            host, logged_in_only\u003d(not self.auto_zone_enabled))\r"},{"line_number":483,"context_line":"\r"},{"line_number":484,"context_line":"        if not targets:\r"},{"line_number":485,"context_line":"            msg \u003d \"There is no accessible fibre channel targets on the system.\"\r"},{"line_number":486,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":487,"context_line":"\r"},{"line_number":488,"context_line":"        if self.auto_zone_enabled:\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_e4ecb4c9","line":485,"in_reply_to":"3a71b18c_176d9632","updated":"2016-12-02 09:29:04.000000000","message":"Done","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # In some cases, cinder will not update volume info in DB with"},{"line_number":239,"context_line":"            # provider_location returned by us. We need to retrieve the id"},{"line_number":240,"context_line":"            # from array. For example, cinder backup-create doesn\u0027t use the"},{"line_number":241,"context_line":"            # provider_location returned from create_cloned_volume."},{"line_number":242,"context_line":"            lun \u003d self.client.get_lun(name\u003dvolume.name)"},{"line_number":243,"context_line":"            return lun.get_id() if lun is not None else None"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_c44495b8","line":241,"updated":"2016-12-06 04:12:31.000000000","message":"Are you sure backup-create still has this problem?  I believe it is fixed.  Please remove \"For example, cinder backup-create doesn\u0027t use the provider_location returned from create_cloned_volume.\"  It\u0027s fine to keep the rest of the comments and this code path.","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # In some cases, cinder will not update volume info in DB with"},{"line_number":239,"context_line":"            # provider_location returned by us. We need to retrieve the id"},{"line_number":240,"context_line":"            # from array. For example, cinder backup-create doesn\u0027t use the"},{"line_number":241,"context_line":"            # provider_location returned from create_cloned_volume."},{"line_number":242,"context_line":"            lun \u003d self.client.get_lun(name\u003dvolume.name)"},{"line_number":243,"context_line":"            return lun.get_id() if lun is not None else None"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_ef3885d5","line":241,"in_reply_to":"3a71b18c_c44495b8","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        .. code-block::"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        existing_ref:{"},{"line_number":289,"context_line":"            \u0027source-id\u0027:\u003cLUN id in VNX\u003e"},{"line_number":290,"context_line":"        }"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        or"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_c41575e5","line":289,"updated":"2016-12-06 04:12:31.000000000","message":"s/VNX/Unity","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        .. code-block::"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        existing_ref:{"},{"line_number":289,"context_line":"            \u0027source-id\u0027:\u003cLUN id in VNX\u003e"},{"line_number":290,"context_line":"        }"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        or"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_4f50990b","line":289,"in_reply_to":"3a71b18c_c41575e5","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        .. code-block::"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        existing_ref:{"},{"line_number":297,"context_line":"            \u0027source-name\u0027:\u003cLUN name in VNX\u003e"},{"line_number":298,"context_line":"        }"},{"line_number":299,"context_line":"        \"\"\""},{"line_number":300,"context_line":"        lun \u003d self._get_referenced_lun(existing_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_6422e153","line":297,"updated":"2016-12-06 04:12:31.000000000","message":"s/VNX/Unity","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        .. code-block::"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        existing_ref:{"},{"line_number":297,"context_line":"            \u0027source-name\u0027:\u003cLUN name in VNX\u003e"},{"line_number":298,"context_line":"        }"},{"line_number":299,"context_line":"        \"\"\""},{"line_number":300,"context_line":"        lun \u003d self._get_referenced_lun(existing_ref)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_8f563104","line":297,"in_reply_to":"3a71b18c_6422e153","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae7d44a0483a5ae524393c16e712e9ebbfc07250","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        hlu \u003d self.client.attach(host, lun_or_snap)"},{"line_number":148,"context_line":"        data \u003d self.get_connection_info(hlu, host, connector)"},{"line_number":149,"context_line":"        data[\u0027target_discovered\u0027] \u003d True"},{"line_number":150,"context_line":"        if _id is not None:"},{"line_number":151,"context_line":"            data[\u0027volume_id\u0027] \u003d _id"},{"line_number":152,"context_line":"        conn_info \u003d {"},{"line_number":153,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_8128b634","line":150,"updated":"2016-12-06 14:26:41.000000000","message":"Please, change _id to something like vol_id","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"7ca62fcfb01c4f1bda489a3d6d9e05fddf0dba27","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        hlu \u003d self.client.attach(host, lun_or_snap)"},{"line_number":148,"context_line":"        data \u003d self.get_connection_info(hlu, host, connector)"},{"line_number":149,"context_line":"        data[\u0027target_discovered\u0027] \u003d True"},{"line_number":150,"context_line":"        if _id is not None:"},{"line_number":151,"context_line":"            data[\u0027volume_id\u0027] \u003d _id"},{"line_number":152,"context_line":"        conn_info \u003d {"},{"line_number":153,"context_line":"            \u0027driver_volume_type\u0027: self.driver_volume_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_c5a37ab0","line":150,"in_reply_to":"3a71b18c_8128b634","updated":"2016-12-08 01:32:03.000000000","message":"Done","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                                  self.client.delete_snap,"},{"line_number":422,"context_line":"                                  True) as src_snap:"},{"line_number":423,"context_line":"            LOG.debug(\u0027Internal snapshot for clone is created, \u0027"},{"line_number":424,"context_line":"                      \u0027name: %s, id: %s.\u0027, src_snap_name, src_snap.get_id())"},{"line_number":425,"context_line":"            return self._create_volume_from_snap("},{"line_number":426,"context_line":"                volume, src_snap, size_in_m\u003dutils.gib_to_mib(volume.size))"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_bd063183","line":424,"updated":"2016-12-08 23:15:23.000000000","message":"Please use keyword parameters.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                                  self.client.delete_snap,"},{"line_number":422,"context_line":"                                  True) as src_snap:"},{"line_number":423,"context_line":"            LOG.debug(\u0027Internal snapshot for clone is created, \u0027"},{"line_number":424,"context_line":"                      \u0027name: %s, id: %s.\u0027, src_snap_name, src_snap.get_id())"},{"line_number":425,"context_line":"            return self._create_volume_from_snap("},{"line_number":426,"context_line":"                volume, src_snap, size_in_m\u003dutils.gib_to_mib(volume.size))"},{"line_number":427,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_b8fe3cac","line":424,"in_reply_to":"3a71b18c_bd063183","updated":"2016-12-09 02:45:11.000000000","message":"Done","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fbbb293436b90de6e5a22db9ca0c033c4cb1148e","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    def get_connection_info(self, hlu, host, connector):"},{"line_number":443,"context_line":"        targets \u003d self.client.get_iscsi_target_info()"},{"line_number":444,"context_line":"        if not targets:"},{"line_number":445,"context_line":"            msg \u003d _(\"There is no accessible iSCSI targests on the system.\")"},{"line_number":446,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":447,"context_line":"        one_target \u003d random.choice(targets)"},{"line_number":448,"context_line":"        portals \u003d [a[\u0027portal\u0027] for a in targets]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_bb5a9d28","line":445,"updated":"2016-12-09 14:50:26.000000000","message":"s/targests/targets","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"2aa994d35064c8d5084b2126368102917084c532","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    def get_connection_info(self, hlu, host, connector):"},{"line_number":443,"context_line":"        targets \u003d self.client.get_iscsi_target_info()"},{"line_number":444,"context_line":"        if not targets:"},{"line_number":445,"context_line":"            msg \u003d _(\"There is no accessible iSCSI targests on the system.\")"},{"line_number":446,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":447,"context_line":"        one_target \u003d random.choice(targets)"},{"line_number":448,"context_line":"        portals \u003d [a[\u0027portal\u0027] for a in targets]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_302a0691","line":445,"in_reply_to":"3a71b18c_bb5a9d28","updated":"2016-12-11 06:23:42.000000000","message":"Done","commit_id":"2b51ae9aaf5e6925ab7d34eec626d9aecbf199a0"}],"cinder/volume/drivers/dell_emc/unity/client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d278067ac7302b85f6ea8c8ba8448722212fba91","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, host, username, password, verify_cert\u003dTrue):\r"},{"line_number":37,"context_line":"        if storops is None:\r"},{"line_number":38,"context_line":"            msg \u003d _(\u0027Python package storops is not installed which \u0027\r"},{"line_number":39,"context_line":"                    \u0027is required to run EMC Unity driver.\u0027)\r"},{"line_number":40,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":41,"context_line":"        self._system \u003d None\r"},{"line_number":42,"context_line":"        self.host \u003d host\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_a94b0986","line":39,"updated":"2016-11-27 16:55:17.000000000","message":"Remove EMC.","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"37a74431246b76f58d2be97653d49d86c424c95b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, host, username, password, verify_cert\u003dTrue):\r"},{"line_number":37,"context_line":"        if storops is None:\r"},{"line_number":38,"context_line":"            msg \u003d _(\u0027Python package storops is not installed which \u0027\r"},{"line_number":39,"context_line":"                    \u0027is required to run EMC Unity driver.\u0027)\r"},{"line_number":40,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":41,"context_line":"        self._system \u003d None\r"},{"line_number":42,"context_line":"        self.host \u003d host\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_ce664cec","line":39,"in_reply_to":"5a74a57a_a94b0986","updated":"2016-11-29 02:35:48.000000000","message":"Done","commit_id":"5a14c52d70f347571a9b3aa9668d4fde8aefdfa4"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            lun.total_size_gb \u003d size_gib"},{"line_number":115,"context_line":"        except storops_ex.UnityNothingToModifyError:"},{"line_number":116,"context_line":"            LOG.debug(\"LUN %s is already expanded. LUN expand is not needed.\","},{"line_number":117,"context_line":"                      id)"},{"line_number":118,"context_line":"        return lun"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_pools(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_7d5d7914","line":117,"updated":"2016-12-08 23:15:23.000000000","message":"Where does \"id\" come from?  Should be \"lun_id\".","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            lun.total_size_gb \u003d size_gib"},{"line_number":115,"context_line":"        except storops_ex.UnityNothingToModifyError:"},{"line_number":116,"context_line":"            LOG.debug(\"LUN %s is already expanded. LUN expand is not needed.\","},{"line_number":117,"context_line":"                      id)"},{"line_number":118,"context_line":"        return lun"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_pools(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_5820c849","line":117,"in_reply_to":"3a71b18c_7d5d7914","updated":"2016-12-09 02:45:11.000000000","message":"Done","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        return None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def create_host(self, name, uids):"},{"line_number":175,"context_line":"        \"\"\"Creates a host on Unity"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        Creates a host on Unity which has the uids associated."},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_3dbf81fd","line":175,"updated":"2016-12-08 23:15:23.000000000","message":"Period at the end.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        return None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def create_host(self, name, uids):"},{"line_number":175,"context_line":"        \"\"\"Creates a host on Unity"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        Creates a host on Unity which has the uids associated."},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_587c4820","line":175,"in_reply_to":"3a71b18c_3dbf81fd","updated":"2016-12-09 02:45:11.000000000","message":"Done","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"}],"cinder/volume/drivers/dell_emc/unity/driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae7d44a0483a5ae524393c16e712e9ebbfc07250","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        protocol \u003d self.configuration.storage_protocol"},{"line_number":63,"context_line":"        if protocol.lower() \u003d\u003d adapter.PROTOCOL_FC.lower():"},{"line_number":64,"context_line":"            self.protocol \u003d adapter.PROTOCOL_FC"},{"line_number":65,"context_line":"            self.adapter \u003d adapter.FCAdapter(self.VERSION)"},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            self.protocol \u003d adapter.PROTOCOL_ISCSI"},{"line_number":68,"context_line":"            self.adapter \u003d adapter.ISCSIAdapter(self.VERSION)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_41a77ebc","line":65,"updated":"2016-12-06 14:26:41.000000000","message":"Please, add adapter as a parent class. It will make code easier","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3700405fe787652489c8ecca48ddd4fcc98ca20e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        protocol \u003d self.configuration.storage_protocol"},{"line_number":63,"context_line":"        if protocol.lower() \u003d\u003d adapter.PROTOCOL_FC.lower():"},{"line_number":64,"context_line":"            self.protocol \u003d adapter.PROTOCOL_FC"},{"line_number":65,"context_line":"            self.adapter \u003d adapter.FCAdapter(self.VERSION)"},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            self.protocol \u003d adapter.PROTOCOL_ISCSI"},{"line_number":68,"context_line":"            self.adapter \u003d adapter.ISCSIAdapter(self.VERSION)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_6988a3c7","line":65,"in_reply_to":"3a71b18c_41a77ebc","updated":"2016-12-07 17:18:20.000000000","message":"As discussed in IRC, we\u0027ve already have DELL EMC drivers with such architecture, so I won\u0027t block this patch for it until further discussions","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"7ca62fcfb01c4f1bda489a3d6d9e05fddf0dba27","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        protocol \u003d self.configuration.storage_protocol"},{"line_number":63,"context_line":"        if protocol.lower() \u003d\u003d adapter.PROTOCOL_FC.lower():"},{"line_number":64,"context_line":"            self.protocol \u003d adapter.PROTOCOL_FC"},{"line_number":65,"context_line":"            self.adapter \u003d adapter.FCAdapter(self.VERSION)"},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            self.protocol \u003d adapter.PROTOCOL_ISCSI"},{"line_number":68,"context_line":"            self.adapter \u003d adapter.ISCSIAdapter(self.VERSION)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_457f6a14","line":65,"in_reply_to":"3a71b18c_41a77ebc","updated":"2016-12-08 01:32:03.000000000","message":"Hi Ivan,\n\nThe driver is not the parent class of adapter, as we may create different adapter for the driver.\n\nThanks,\nTina","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"fca8d43df5f712e4cad23239078ea32b2693cab0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        protocol \u003d self.configuration.storage_protocol"},{"line_number":63,"context_line":"        if protocol.lower() \u003d\u003d adapter.PROTOCOL_FC.lower():"},{"line_number":64,"context_line":"            self.protocol \u003d adapter.PROTOCOL_FC"},{"line_number":65,"context_line":"            self.adapter \u003d adapter.FCAdapter(self.VERSION)"},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            self.protocol \u003d adapter.PROTOCOL_ISCSI"},{"line_number":68,"context_line":"            self.adapter \u003d adapter.ISCSIAdapter(self.VERSION)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a71b18c_5e1c6977","line":65,"in_reply_to":"3a71b18c_6988a3c7","updated":"2016-12-08 01:37:23.000000000","message":"Thanks Ivan.","commit_id":"8c8ff2f13aa202172bfbfb624583759663e21305"}],"cinder/volume/drivers/dell_emc/unity/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"72cadaac9bb7525e2da0af229adcc4abe4add0b9","unresolved":false,"context_lines":[{"line_number":90,"context_line":"\r"},{"line_number":91,"context_line":"def validate_pool_names(conf_pools, array_pools):\r"},{"line_number":92,"context_line":"    if not conf_pools:\r"},{"line_number":93,"context_line":"        LOG.debug(\"No storage pools are specified. This host will manage\"\r"},{"line_number":94,"context_line":"                  \"all the pools on the Unity system.\")\r"},{"line_number":95,"context_line":"        return array_pools\r"},{"line_number":96,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_b793024f","line":93,"updated":"2016-12-01 08:09:58.000000000","message":"Need space on the end so the two strings don\u0027t run together.","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b5770d23a1818ea8ae22fce8dbdeeb6dec0add68","unresolved":false,"context_lines":[{"line_number":90,"context_line":"\r"},{"line_number":91,"context_line":"def validate_pool_names(conf_pools, array_pools):\r"},{"line_number":92,"context_line":"    if not conf_pools:\r"},{"line_number":93,"context_line":"        LOG.debug(\"No storage pools are specified. This host will manage\"\r"},{"line_number":94,"context_line":"                  \"all the pools on the Unity system.\")\r"},{"line_number":95,"context_line":"        return array_pools\r"},{"line_number":96,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_f64a9882","line":93,"in_reply_to":"3a71b18c_b793024f","updated":"2016-12-02 09:29:04.000000000","message":"Done","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"16577e205a9981c95361ebf8b53ae15fa9fa9fdb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    if not existed:\r"},{"line_number":102,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exist. Please check \u0027\r"},{"line_number":103,"context_line":"                \u0027your configuration. The available storage pools on the \u0027\r"},{"line_number":104,"context_line":"                \u0027system are {}.\u0027).format(array_pools)\r"},{"line_number":105,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"    return existed\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_377f9d67","line":104,"updated":"2016-12-01 05:02:34.000000000","message":"Please use the %(xxxx)s style to format messages.\n\nPlease make this change in all places.","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b5770d23a1818ea8ae22fce8dbdeeb6dec0add68","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    if not existed:\r"},{"line_number":102,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exist. Please check \u0027\r"},{"line_number":103,"context_line":"                \u0027your configuration. The available storage pools on the \u0027\r"},{"line_number":104,"context_line":"                \u0027system are {}.\u0027).format(array_pools)\r"},{"line_number":105,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"    return existed\r"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a71b18c_3645f06f","line":104,"in_reply_to":"5a74a57a_377f9d67","updated":"2016-12-02 09:29:04.000000000","message":"Done","commit_id":"0f0ebe8591114bc37b535b9e93732656de16a946"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def build_provider_location(system, lun_type, lun_id, version):"},{"line_number":43,"context_line":"    \"\"\"Builds provider_location for volume or snapshot."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param system: VNX serial number"},{"line_number":46,"context_line":"    :param lun_id: LUN ID in VNX"},{"line_number":47,"context_line":"    :param lun_type: \u0027lun\u0027"},{"line_number":48,"context_line":"    :param version: driver version"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_2410e958","line":45,"updated":"2016-12-06 04:12:31.000000000","message":"s/VNX/Unity","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def build_provider_location(system, lun_type, lun_id, version):"},{"line_number":43,"context_line":"    \"\"\"Builds provider_location for volume or snapshot."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param system: VNX serial number"},{"line_number":46,"context_line":"    :param lun_id: LUN ID in VNX"},{"line_number":47,"context_line":"    :param lun_type: \u0027lun\u0027"},{"line_number":48,"context_line":"    :param version: driver version"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_6f7ab589","line":45,"in_reply_to":"3a71b18c_2410e958","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \"\"\"Builds provider_location for volume or snapshot."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param system: VNX serial number"},{"line_number":46,"context_line":"    :param lun_id: LUN ID in VNX"},{"line_number":47,"context_line":"    :param lun_type: \u0027lun\u0027"},{"line_number":48,"context_line":"    :param version: driver version"},{"line_number":49,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_4415e546","line":46,"updated":"2016-12-06 04:12:31.000000000","message":"same","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \"\"\"Builds provider_location for volume or snapshot."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param system: VNX serial number"},{"line_number":46,"context_line":"    :param lun_id: LUN ID in VNX"},{"line_number":47,"context_line":"    :param lun_type: \u0027lun\u0027"},{"line_number":48,"context_line":"    :param version: driver version"},{"line_number":49,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_8f6d51ce","line":46,"in_reply_to":"3a71b18c_4415e546","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.warning(msg, {\u0027key\u0027: key, \u0027location\u0027: provider_location})"},{"line_number":74,"context_line":"    else:"},{"line_number":75,"context_line":"        LOG.warning(_LW(\u0027Empty provider location received: \"%s\".\u0027),"},{"line_number":76,"context_line":"                    provider_location)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def byte_to_gib(byte):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_d700c503","line":76,"updated":"2016-12-06 04:12:31.000000000","message":"What are you printing here if provider_location is empty? Please change to:\n\nLOG.warning(_LW(\u0027Empty provider location received.))","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.warning(msg, {\u0027key\u0027: key, \u0027location\u0027: provider_location})"},{"line_number":74,"context_line":"    else:"},{"line_number":75,"context_line":"        LOG.warning(_LW(\u0027Empty provider location received: \"%s\".\u0027),"},{"line_number":76,"context_line":"                    provider_location)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def byte_to_gib(byte):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_af704da5","line":76,"in_reply_to":"3a71b18c_d700c503","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d7f108e314fcd1adbf8078c77e9384c95d249a5","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"def extract_fc_uids(connector):"},{"line_number":119,"context_line":"    if \u0027wwnns\u0027 not in connector or \u0027wwpns\u0027 not in connector:"},{"line_number":120,"context_line":"        msg \u003d _(\"Host %s dosen\u0027t have FC initiators.\") % connector[\u0027host\u0027]"},{"line_number":121,"context_line":"        LOG.error(msg)"},{"line_number":122,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_171ebd5e","line":120,"updated":"2016-12-06 04:12:31.000000000","message":"s/dosen\u0027t/doesn\u0027t","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f73d74af1808300076256ef936c66228e1306b49","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"def extract_fc_uids(connector):"},{"line_number":119,"context_line":"    if \u0027wwnns\u0027 not in connector or \u0027wwpns\u0027 not in connector:"},{"line_number":120,"context_line":"        msg \u003d _(\"Host %s dosen\u0027t have FC initiators.\") % connector[\u0027host\u0027]"},{"line_number":121,"context_line":"        LOG.error(msg)"},{"line_number":122,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_2f5d1d15","line":120,"in_reply_to":"3a71b18c_171ebd5e","updated":"2016-12-06 08:42:25.000000000","message":"Done","commit_id":"667d15b6c6c7b4ba486d69fc1b3e146f697e6ba5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    if consumer not in BACKEND_QOS_CONSUMERS:"},{"line_number":252,"context_line":"        return None"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    max_iops \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None)"},{"line_number":255,"context_line":"    max_bws \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None)"},{"line_number":256,"context_line":"    if max_iops is None and max_bws is None:"},{"line_number":257,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_ddd04dcc","line":254,"updated":"2016-12-08 23:15:23.000000000","message":"None is default, so not necessary to specify None.","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    if consumer not in BACKEND_QOS_CONSUMERS:"},{"line_number":252,"context_line":"        return None"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    max_iops \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None)"},{"line_number":255,"context_line":"    max_bws \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None)"},{"line_number":256,"context_line":"    if max_iops is None and max_bws is None:"},{"line_number":257,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_98f26099","line":254,"in_reply_to":"3a71b18c_ddd04dcc","updated":"2016-12-09 02:45:11.000000000","message":"Done","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"614e1fecd0d4c9bb15e9577c832ab2a232cb36c9","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        return None"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    max_iops \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None)"},{"line_number":255,"context_line":"    max_bws \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None)"},{"line_number":256,"context_line":"    if max_iops is None and max_bws is None:"},{"line_number":257,"context_line":"        return None"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_1ddba5ee","line":255,"updated":"2016-12-08 23:15:23.000000000","message":"Same","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"df1f3caf49d9c5c2b0b0aa7515f9c06dd737dfdb","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        return None"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    max_iops \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None)"},{"line_number":255,"context_line":"    max_bws \u003d qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None)"},{"line_number":256,"context_line":"    if max_iops is None and max_bws is None:"},{"line_number":257,"context_line":"        return None"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_b8ed5cb9","line":255,"in_reply_to":"3a71b18c_1ddba5ee","updated":"2016-12-09 02:45:11.000000000","message":"Done","commit_id":"e1b15bd975481e4339cf649119ee86082ca85b5f"}],"cinder/volume/drivers/emc/unity/adapter.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            \u0027volume_backend_name\u0027: self.volume_backend_name,\r"},{"line_number":184,"context_line":"            \u0027storage_protocol\u0027: self.protocol,\r"},{"line_number":185,"context_line":"            \u0027thin_provisioning_support\u0027: True,\r"},{"line_number":186,"context_line":"            \u0027thick_provisioning_support\u0027: False,\r"},{"line_number":187,"context_line":"            \u0027pools\u0027: self.get_pools_stats(),\r"},{"line_number":188,"context_line":"        }\r"},{"line_number":189,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_eb0d9e8f","line":186,"updated":"2016-11-13 02:39:20.000000000","message":"Does this driver only support thin provisioning?  If so, why is provisioning:type even needed in volume type extra specs?","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            \u0027volume_backend_name\u0027: self.volume_backend_name,\r"},{"line_number":184,"context_line":"            \u0027storage_protocol\u0027: self.protocol,\r"},{"line_number":185,"context_line":"            \u0027thin_provisioning_support\u0027: True,\r"},{"line_number":186,"context_line":"            \u0027thick_provisioning_support\u0027: False,\r"},{"line_number":187,"context_line":"            \u0027pools\u0027: self.get_pools_stats(),\r"},{"line_number":188,"context_line":"        }\r"},{"line_number":189,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_c08d0f2c","line":186,"in_reply_to":"9a629dbe_eb0d9e8f","updated":"2016-11-14 07:57:20.000000000","message":"Hi Xing, this new driver only supports thin provisioning. The provisioning:type is not needed to create the volume.","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\"Returns size of volume to be managed by `manage_existing`.\r"},{"line_number":293,"context_line":"\r"},{"line_number":294,"context_line":"        The driver does some check here:\r"},{"line_number":295,"context_line":"        1. Only `thick` type is supported in `volume.extra_specs`.\r"},{"line_number":296,"context_line":"        2. The LUN `existing_ref` should be managed by the `volume.host`.\r"},{"line_number":297,"context_line":"        \"\"\"\r"},{"line_number":298,"context_line":"        if utils.is_volume_thick(volume):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_0b29f2e5","line":295,"updated":"2016-11-13 02:39:20.000000000","message":"thick-\u003ethin","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\"Returns size of volume to be managed by `manage_existing`.\r"},{"line_number":293,"context_line":"\r"},{"line_number":294,"context_line":"        The driver does some check here:\r"},{"line_number":295,"context_line":"        1. Only `thick` type is supported in `volume.extra_specs`.\r"},{"line_number":296,"context_line":"        2. The LUN `existing_ref` should be managed by the `volume.host`.\r"},{"line_number":297,"context_line":"        \"\"\"\r"},{"line_number":298,"context_line":"        if utils.is_volume_thick(volume):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_60c6034b","line":295,"in_reply_to":"9a629dbe_0b29f2e5","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":405,"context_line":"\r"},{"line_number":406,"context_line":"        1. Take an internal snapshot of source volume, and attach it.\r"},{"line_number":407,"context_line":"        2. Create a new volume, and attach it.\r"},{"line_number":408,"context_line":"        3. Copy from attached snapshot of step 1 to the volume of step 2.\r"},{"line_number":409,"context_line":"        \"\"\"\r"},{"line_number":410,"context_line":"\r"},{"line_number":411,"context_line":"        src_lun_id \u003d self.get_lun_id(src_vref)\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_4fc13180","line":408,"updated":"2016-11-23 01:50:38.000000000","message":"Should there be a step 4 when the internal snapshot be deleted after cloned volume is created?","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":405,"context_line":"\r"},{"line_number":406,"context_line":"        1. Take an internal snapshot of source volume, and attach it.\r"},{"line_number":407,"context_line":"        2. Create a new volume, and attach it.\r"},{"line_number":408,"context_line":"        3. Copy from attached snapshot of step 1 to the volume of step 2.\r"},{"line_number":409,"context_line":"        \"\"\"\r"},{"line_number":410,"context_line":"\r"},{"line_number":411,"context_line":"        src_lun_id \u003d self.get_lun_id(src_vref)\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_37d1abfc","line":408,"in_reply_to":"5a74a57a_4fc13180","updated":"2016-11-23 09:09:49.000000000","message":"Yes, missed in the comment. Updated. Thanks.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/volume/drivers/emc/unity/client.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                                  description\u003ddescription,\r"},{"line_number":70,"context_line":"                                  io_limit_policy\u003dio_limit_policy)\r"},{"line_number":71,"context_line":"        except storops_ex.UnityLunNameInUseError:\r"},{"line_number":72,"context_line":"            LOG.debug(\"LUN %s is already existed. Return the existed one.\",\r"},{"line_number":73,"context_line":"                      name)\r"},{"line_number":74,"context_line":"            lun \u003d self.system.get_lun(name\u003dname)\r"},{"line_number":75,"context_line":"        return lun\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_6bec2ebb","line":72,"updated":"2016-11-13 02:39:20.000000000","message":"LUN %s already exists.  Return the existing one.","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                                  description\u003ddescription,\r"},{"line_number":70,"context_line":"                                  io_limit_policy\u003dio_limit_policy)\r"},{"line_number":71,"context_line":"        except storops_ex.UnityLunNameInUseError:\r"},{"line_number":72,"context_line":"            LOG.debug(\"LUN %s is already existed. Return the existed one.\",\r"},{"line_number":73,"context_line":"                      name)\r"},{"line_number":74,"context_line":"            lun \u003d self.system.get_lun(name\u003dname)\r"},{"line_number":75,"context_line":"        return lun\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_c0db4f20","line":72,"in_reply_to":"9a629dbe_6bec2ebb","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        lun \u003d None\r"},{"line_number":97,"context_line":"        if _id is None and name is None:\r"},{"line_number":98,"context_line":"            LOG.warning(\r"},{"line_number":99,"context_line":"                _LW(\"Both of _id and name are None to get LUN. Return None.\"))\r"},{"line_number":100,"context_line":"        else:\r"},{"line_number":101,"context_line":"            try:\r"},{"line_number":102,"context_line":"                lun \u003d self.system.get_lun(_id\u003d_id, name\u003dname)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_eb367e4f","line":99,"updated":"2016-11-13 02:39:20.000000000","message":"Remove \"of\".","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        lun \u003d None\r"},{"line_number":97,"context_line":"        if _id is None and name is None:\r"},{"line_number":98,"context_line":"            LOG.warning(\r"},{"line_number":99,"context_line":"                _LW(\"Both of _id and name are None to get LUN. Return None.\"))\r"},{"line_number":100,"context_line":"        else:\r"},{"line_number":101,"context_line":"            try:\r"},{"line_number":102,"context_line":"                lun \u003d self.system.get_lun(_id\u003d_id, name\u003dname)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_00e627e8","line":99,"in_reply_to":"9a629dbe_eb367e4f","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            snap \u003d lun.create_snap(name, is_auto_delete\u003dFalse)\r"},{"line_number":135,"context_line":"        except storops_ex.UnitySnapNameInUseError as err:\r"},{"line_number":136,"context_line":"            LOG.debug(\r"},{"line_number":137,"context_line":"                \"Snap %(snap_name)s is already existed on LUN %(lun_id)s. \"\r"},{"line_number":138,"context_line":"                \"Return the existed one. Message: %(err)s\",\r"},{"line_number":139,"context_line":"                {\u0027snap_name\u0027: name,\r"},{"line_number":140,"context_line":"                 \u0027lun_id\u0027: src_lun_id,\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_6b434eaf","line":137,"updated":"2016-11-13 02:39:20.000000000","message":"s/is already existed/already exists","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            snap \u003d lun.create_snap(name, is_auto_delete\u003dFalse)\r"},{"line_number":135,"context_line":"        except storops_ex.UnitySnapNameInUseError as err:\r"},{"line_number":136,"context_line":"            LOG.debug(\r"},{"line_number":137,"context_line":"                \"Snap %(snap_name)s is already existed on LUN %(lun_id)s. \"\r"},{"line_number":138,"context_line":"                \"Return the existed one. Message: %(err)s\",\r"},{"line_number":139,"context_line":"                {\u0027snap_name\u0027: name,\r"},{"line_number":140,"context_line":"                 \u0027lun_id\u0027: src_lun_id,\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_40d01ff8","line":137,"in_reply_to":"9a629dbe_6b434eaf","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        except storops_ex.UnitySnapNameInUseError as err:\r"},{"line_number":136,"context_line":"            LOG.debug(\r"},{"line_number":137,"context_line":"                \"Snap %(snap_name)s is already existed on LUN %(lun_id)s. \"\r"},{"line_number":138,"context_line":"                \"Return the existed one. Message: %(err)s\",\r"},{"line_number":139,"context_line":"                {\u0027snap_name\u0027: name,\r"},{"line_number":140,"context_line":"                 \u0027lun_id\u0027: src_lun_id,\r"},{"line_number":141,"context_line":"                 \u0027err\u0027: err})\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_ab1726a1","line":138,"updated":"2016-11-13 02:39:20.000000000","message":"s/existed/existing","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        except storops_ex.UnitySnapNameInUseError as err:\r"},{"line_number":136,"context_line":"            LOG.debug(\r"},{"line_number":137,"context_line":"                \"Snap %(snap_name)s is already existed on LUN %(lun_id)s. \"\r"},{"line_number":138,"context_line":"                \"Return the existed one. Message: %(err)s\",\r"},{"line_number":139,"context_line":"                {\u0027snap_name\u0027: name,\r"},{"line_number":140,"context_line":"                 \u0027lun_id\u0027: src_lun_id,\r"},{"line_number":141,"context_line":"                 \u0027err\u0027: err})\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_60cd235d","line":138,"in_reply_to":"9a629dbe_ab1726a1","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":218,"context_line":"\r"},{"line_number":219,"context_line":"    @staticmethod\r"},{"line_number":220,"context_line":"    def detach(host, lun_or_snap):\r"},{"line_number":221,"context_line":"        \"\"\"Detaches a `UnityLun` or `UnitySnap` to a `UnityHost`.\r"},{"line_number":222,"context_line":"\r"},{"line_number":223,"context_line":"        :param host: `UnityHost` object\r"},{"line_number":224,"context_line":"        :param lun_or_snap: `UnityLun` object\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_cf862165","line":221,"updated":"2016-11-23 01:50:38.000000000","message":"s/to/from","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":218,"context_line":"\r"},{"line_number":219,"context_line":"    @staticmethod\r"},{"line_number":220,"context_line":"    def detach(host, lun_or_snap):\r"},{"line_number":221,"context_line":"        \"\"\"Detaches a `UnityLun` or `UnitySnap` to a `UnityHost`.\r"},{"line_number":222,"context_line":"\r"},{"line_number":223,"context_line":"        :param host: `UnityHost` object\r"},{"line_number":224,"context_line":"        :param lun_or_snap: `UnityLun` object\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_772083f8","line":221,"in_reply_to":"5a74a57a_cf862165","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/volume/drivers/emc/unity/driver.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@interface.volumedriver"},{"line_number":41,"context_line":"class EMCUnityDriver(driver.TransferVD,"},{"line_number":42,"context_line":"                     driver.ManageableVD,"},{"line_number":43,"context_line":"                     driver.ExtendVD,"},{"line_number":44,"context_line":"                     driver.SnapshotVD,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_3ec18d81","line":41,"updated":"2016-11-23 01:50:38.000000000","message":"Please rename this to UnityDriver.","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@interface.volumedriver"},{"line_number":41,"context_line":"class EMCUnityDriver(driver.TransferVD,"},{"line_number":42,"context_line":"                     driver.ManageableVD,"},{"line_number":43,"context_line":"                     driver.ExtendVD,"},{"line_number":44,"context_line":"                     driver.SnapshotVD,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_a3e7383f","line":41,"in_reply_to":"5a74a57a_3ec18d81","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    VERSION \u003d \u002701.00.00\u0027"},{"line_number":54,"context_line":"    VENDOR \u003d \u0027EMC\u0027"},{"line_number":55,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":56,"context_line":"    CI_WIKI_NAME \u003d \"EMC_UNITY_CI\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_1ec4d190","line":54,"updated":"2016-11-23 01:50:38.000000000","message":"Dell EMC","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    \"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    VERSION \u003d \u002701.00.00\u0027"},{"line_number":54,"context_line":"    VENDOR \u003d \u0027EMC\u0027"},{"line_number":55,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":56,"context_line":"    CI_WIKI_NAME \u003d \"EMC_UNITY_CI\""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_63dd2070","line":54,"in_reply_to":"5a74a57a_1ec4d190","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}],"cinder/volume/drivers/emc/unity/utils.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\r"},{"line_number":44,"context_line":"    :param system: VNX serial number\r"},{"line_number":45,"context_line":"    :param lun_id: LUN ID in VNX\r"},{"line_number":46,"context_line":"    :param lun_type: \u0027lun\u0027\r"},{"line_number":47,"context_line":"    :param version: driver version\r"},{"line_number":48,"context_line":"    \"\"\"\r"},{"line_number":49,"context_line":"    location_dict \u003d {\u0027system\u0027: system,\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_4b1f6ab6","line":46,"updated":"2016-11-13 02:39:20.000000000","message":"What are the valid lun types?  Is \u0027lun\u0027 actually a lun_type?  What does it mean?","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\r"},{"line_number":44,"context_line":"    :param system: VNX serial number\r"},{"line_number":45,"context_line":"    :param lun_id: LUN ID in VNX\r"},{"line_number":46,"context_line":"    :param lun_type: \u0027lun\u0027\r"},{"line_number":47,"context_line":"    :param version: driver version\r"},{"line_number":48,"context_line":"    \"\"\"\r"},{"line_number":49,"context_line":"    location_dict \u003d {\u0027system\u0027: system,\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_60f44387","line":46,"in_reply_to":"9a629dbe_4b1f6ab6","updated":"2016-11-14 07:57:20.000000000","message":"\u0027Lun\u0027 is the only valid lun_types so far. And it might be snap in future as we may use a snap to act as a LUN.","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    existed \u003d conf_pools - (conf_pools - array_pools)\r"},{"line_number":99,"context_line":"\r"},{"line_number":100,"context_line":"    if not existed:\r"},{"line_number":101,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exists. Please check \u0027\r"},{"line_number":102,"context_line":"                \u0027your configuration. The available storage pools on the \u0027\r"},{"line_number":103,"context_line":"                \u0027system are {}.\u0027).format(array_pools)\r"},{"line_number":104,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_cbe53adc","line":101,"updated":"2016-11-13 02:39:20.000000000","message":"nit: s/exists/exist","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    existed \u003d conf_pools - (conf_pools - array_pools)\r"},{"line_number":99,"context_line":"\r"},{"line_number":100,"context_line":"    if not existed:\r"},{"line_number":101,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exists. Please check \u0027\r"},{"line_number":102,"context_line":"                \u0027your configuration. The available storage pools on the \u0027\r"},{"line_number":103,"context_line":"                \u0027system are {}.\u0027).format(array_pools)\r"},{"line_number":104,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_20396b42","line":101,"in_reply_to":"9a629dbe_cbe53adc","updated":"2016-11-14 07:57:20.000000000","message":"Done","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"21f70de1ba2829fbd78080fe3e94fff39bb5e70f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\r"},{"line_number":170,"context_line":"PROVISION_KEY \u003d \u0027provisioning:type\u0027\r"},{"line_number":171,"context_line":"PROVISION_THIN \u003d \u0027thin\u0027\r"},{"line_number":172,"context_line":"PROVISION_THICK \u003d \u0027thick\u0027\r"},{"line_number":173,"context_line":"\r"},{"line_number":174,"context_line":"\r"},{"line_number":175,"context_line":"def get_extra_spec(volume, spec_key):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_6b1a6ec7","line":172,"updated":"2016-11-13 02:39:20.000000000","message":"Why requiring this when you only support thin provisioning?","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"c0b79aa77dd0e1eed9a6e86ae5143bc86fee8ac4","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\r"},{"line_number":170,"context_line":"PROVISION_KEY \u003d \u0027provisioning:type\u0027\r"},{"line_number":171,"context_line":"PROVISION_THIN \u003d \u0027thin\u0027\r"},{"line_number":172,"context_line":"PROVISION_THICK \u003d \u0027thick\u0027\r"},{"line_number":173,"context_line":"\r"},{"line_number":174,"context_line":"\r"},{"line_number":175,"context_line":"def get_extra_spec(volume, spec_key):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_608523ac","line":172,"in_reply_to":"9a629dbe_6b1a6ec7","updated":"2016-11-14 07:57:20.000000000","message":"This was used to determine whether thick is specified by user. If yes, error will be raised. Also, I removed it in new patch as seems it\u0027s not required. Driver will always create thin LUN on the array.","commit_id":"e41ff0558dc57f8ed4d411fa3b4621da3757614c"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    if provider_location:\r"},{"line_number":66,"context_line":"        for kvp in provider_location.split(\u0027|\u0027):\r"},{"line_number":67,"context_line":"            fields \u003d kvp.split(\u0027^\u0027)\r"},{"line_number":68,"context_line":"            if len(fields) \u003d\u003d 2 and fields[0] \u003d\u003d key:\r"},{"line_number":69,"context_line":"                return fields[1]\r"},{"line_number":70,"context_line":"        else:\r"},{"line_number":71,"context_line":"            msg \u003d _LW(\u0027\"%(key)s\" is not found in provider \u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_83feb436","line":68,"range":{"start_line":68,"start_character":30,"end_line":68,"end_character":31},"updated":"2016-11-14 14:04:51.000000000","message":"What does this magic number mean?","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    if provider_location:\r"},{"line_number":66,"context_line":"        for kvp in provider_location.split(\u0027|\u0027):\r"},{"line_number":67,"context_line":"            fields \u003d kvp.split(\u0027^\u0027)\r"},{"line_number":68,"context_line":"            if len(fields) \u003d\u003d 2 and fields[0] \u003d\u003d key:\r"},{"line_number":69,"context_line":"                return fields[1]\r"},{"line_number":70,"context_line":"        else:\r"},{"line_number":71,"context_line":"            msg \u003d _LW(\u0027\"%(key)s\" is not found in provider \u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_bed82b1f","line":68,"range":{"start_line":68,"start_character":30,"end_line":68,"end_character":31},"in_reply_to":"9a629dbe_83feb436","updated":"2016-11-15 08:11:47.000000000","message":"A key value pair(\u0027^\u0027) is joint with \u0027^\u0027. So when split with (\u0027^\u0027), the length should be 2.","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                    provider_location)\r"},{"line_number":77,"context_line":"\r"},{"line_number":78,"context_line":"\r"},{"line_number":79,"context_line":"def byte_to_gib(byte):\r"},{"line_number":80,"context_line":"    return byte / units.Gi\r"},{"line_number":81,"context_line":"\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"def byte_to_mib(byte):\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_c3eeecb3","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":26},"updated":"2016-11-14 14:04:51.000000000","message":"You seem to have had always 0 Gb if byte counts are less than units.Gi value and the rounding problem in other situations.\nMaybe we should use converting to float type?","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                    provider_location)\r"},{"line_number":77,"context_line":"\r"},{"line_number":78,"context_line":"\r"},{"line_number":79,"context_line":"def byte_to_gib(byte):\r"},{"line_number":80,"context_line":"    return byte / units.Gi\r"},{"line_number":81,"context_line":"\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"def byte_to_mib(byte):\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_595e5146","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":26},"in_reply_to":"9a629dbe_c3eeecb3","updated":"2016-11-15 08:11:47.000000000","message":"We have used the from __future__ import division\n\nSo that a single \u0027/\u0027 should be the floating division","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    return byte / units.Gi\r"},{"line_number":81,"context_line":"\r"},{"line_number":82,"context_line":"\r"},{"line_number":83,"context_line":"def byte_to_mib(byte):\r"},{"line_number":84,"context_line":"    return byte / units.Mi\r"},{"line_number":85,"context_line":"\r"},{"line_number":86,"context_line":"\r"},{"line_number":87,"context_line":"def gib_to_mib(gib):\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_833b1438","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":26},"updated":"2016-11-14 14:04:51.000000000","message":"Same","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":96,"context_line":"\r"},{"line_number":97,"context_line":"    conf_pools \u003d set(map(lambda i: i.strip(), conf_pools))\r"},{"line_number":98,"context_line":"    array_pools \u003d set(map(lambda i: i.strip(), array_pools))\r"},{"line_number":99,"context_line":"    existed \u003d conf_pools - (conf_pools - array_pools)\r"},{"line_number":100,"context_line":"\r"},{"line_number":101,"context_line":"    if not existed:\r"},{"line_number":102,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exist. Please check \u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_6ba33250","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":53},"updated":"2016-11-14 14:04:51.000000000","message":"quite weird construction. Did you mean set\u0027s intersection_update? https://docs.python.org/2/library/sets.html#set-objects","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"\r"},{"line_number":97,"context_line":"    conf_pools \u003d set(map(lambda i: i.strip(), conf_pools))\r"},{"line_number":98,"context_line":"    array_pools \u003d set(map(lambda i: i.strip(), array_pools))\r"},{"line_number":99,"context_line":"    existed \u003d conf_pools - (conf_pools - array_pools)\r"},{"line_number":100,"context_line":"\r"},{"line_number":101,"context_line":"    if not existed:\r"},{"line_number":102,"context_line":"        msg \u003d _(\u0027No storage pools to be managed exist. Please check \u0027\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_5913b15c","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":53},"in_reply_to":"9a629dbe_6ba33250","updated":"2016-11-15 08:11:47.000000000","message":"Yes. Thanks. I modified it.","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    wwns \u003d [(node + port).upper() for node, port in zip(wwnns, wwpns)]\r"},{"line_number":127,"context_line":"\r"},{"line_number":128,"context_line":"    def _to_wwn(wwn):\r"},{"line_number":129,"context_line":"        return \u0027:\u0027.join(wwn[i:i + 2] for i in range(0, len(wwn), 2))\r"},{"line_number":130,"context_line":"\r"},{"line_number":131,"context_line":"    return list(map(_to_wwn, wwns))\r"},{"line_number":132,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_b7bda904","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":68},"updated":"2016-11-14 14:04:51.000000000","message":"Maybe there is such a way how to write it with more readable code? Or what is the sense of this part of code?","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    wwns \u003d [(node + port).upper() for node, port in zip(wwnns, wwpns)]\r"},{"line_number":127,"context_line":"\r"},{"line_number":128,"context_line":"    def _to_wwn(wwn):\r"},{"line_number":129,"context_line":"        return \u0027:\u0027.join(wwn[i:i + 2] for i in range(0, len(wwn), 2))\r"},{"line_number":130,"context_line":"\r"},{"line_number":131,"context_line":"    return list(map(_to_wwn, wwns))\r"},{"line_number":132,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_59dd716f","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":68},"in_reply_to":"9a629dbe_b7bda904","updated":"2016-11-15 08:11:47.000000000","message":"This piece of code is formatting the wwn to include the colon. It convert the wwn from 1122200000051E55E100 to 11:22:20:00:00:05:1E:55:A1:00\n\nI have added some comment to the code.","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":256,"context_line":"\r"},{"line_number":257,"context_line":"    return {\r"},{"line_number":258,"context_line":"        \u0027id\u0027: qos_specs[\u0027id\u0027],\r"},{"line_number":259,"context_line":"        QOS_MAX_IOPS: qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None),\r"},{"line_number":260,"context_line":"        QOS_MAX_BWS: qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None),\r"},{"line_number":261,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_4625855a","line":259,"range":{"start_line":259,"start_character":22,"end_line":259,"end_character":65},"updated":"2016-11-14 14:04:51.000000000","message":"Why we can\u0027t reuse local variables max_iops and max_bws?","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":256,"context_line":"\r"},{"line_number":257,"context_line":"    return {\r"},{"line_number":258,"context_line":"        \u0027id\u0027: qos_specs[\u0027id\u0027],\r"},{"line_number":259,"context_line":"        QOS_MAX_IOPS: qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None),\r"},{"line_number":260,"context_line":"        QOS_MAX_BWS: qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None),\r"},{"line_number":261,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_3e17bb52","line":259,"range":{"start_line":259,"start_character":22,"end_line":259,"end_character":65},"in_reply_to":"9a629dbe_4625855a","updated":"2016-11-15 08:11:47.000000000","message":"Thanks for point it out. Updated.","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"ec2544fd4e8f05ff3c94e5f661272514ced6dd11","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    return {\r"},{"line_number":258,"context_line":"        \u0027id\u0027: qos_specs[\u0027id\u0027],\r"},{"line_number":259,"context_line":"        QOS_MAX_IOPS: qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None),\r"},{"line_number":260,"context_line":"        QOS_MAX_BWS: qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None),\r"},{"line_number":261,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_662a892e","line":260,"range":{"start_line":260,"start_character":21,"end_line":260,"end_character":62},"updated":"2016-11-14 14:04:51.000000000","message":"Same","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7635731a540e95d4ad346f815268653af3ae05f","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    return {\r"},{"line_number":258,"context_line":"        \u0027id\u0027: qos_specs[\u0027id\u0027],\r"},{"line_number":259,"context_line":"        QOS_MAX_IOPS: qos_specs[\u0027specs\u0027].get(QOS_MAX_IOPS, None),\r"},{"line_number":260,"context_line":"        QOS_MAX_BWS: qos_specs[\u0027specs\u0027].get(QOS_MAX_BWS, None),\r"},{"line_number":261,"context_line":"    }\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_7e093331","line":260,"range":{"start_line":260,"start_character":21,"end_line":260,"end_character":62},"in_reply_to":"9a629dbe_662a892e","updated":"2016-11-15 08:11:47.000000000","message":"Done","commit_id":"5695e54f1ef0e233be1656b9590e25842389e85e"}],"releasenotes/notes/emc-unity-driver-6c72e856933dabf4.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab42f331e9a52a5e0132690117434320bf3250ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added backend driver for EMC Unity storage."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7a77a97e_e111e25e","line":3,"updated":"2016-11-23 01:50:38.000000000","message":"Dell EMC","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"f4a3c26ad2a79cfd96765687386d7ac93d432082","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added backend driver for EMC Unity storage."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5a74a57a_43cf44b0","line":3,"in_reply_to":"7a77a97e_e111e25e","updated":"2016-11-23 09:09:49.000000000","message":"Done","commit_id":"432360898d7eb523b23f597353b42e62f1c5edc1"}]}
