)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"24709b4f4a54afc6fadd7ee428416d8765014e84","unresolved":false,"context_lines":[{"line_number":18,"context_line":"above."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Partially implements: blueprint refactor-storwize-driver-for-mitaka"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I18ddde5c9280a175a4ca296e62ac839389e16c3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da85f559_166f3093","line":21,"updated":"2015-11-10 14:08:04.000000000","message":"This could also use a DocImpact. Thanks!","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6b03e66a47e218206cdd0b840f72f43f955978d8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"above."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Partially implements: blueprint refactor-storwize-driver-for-mitaka"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I18ddde5c9280a175a4ca296e62ac839389e16c3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da85f559_39b105e2","line":21,"in_reply_to":"da85f559_166f3093","updated":"2015-11-10 14:18:57.000000000","message":"Are any of the config options changing or fully qualified path names. I would need to look again closer. As long as they are not, then I don\u0027t think we need DocImpact on here. That would only be if any information would need to change on docs.openstack.org.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"above."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Partially implements: blueprint refactor-storwize-driver-for-mitaka"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I18ddde5c9280a175a4ca296e62ac839389e16c3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da85f559_fbfb5fbf","line":21,"in_reply_to":"da85f559_39b105e2","updated":"2015-11-10 20:09:27.000000000","message":"I think we do need to add a DocImpact here since we are adding config options to storwize_svc_iscsi.py and storwize_svc_fc.py. If that is not the case I will remove it in the next patch set.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1f8333069b68c72e64279c13bf34677bed1291a9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"above."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Partially implements: blueprint refactor-storwize-driver-for-mitaka"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I18ddde5c9280a175a4ca296e62ac839389e16c3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da85f559_d65d1216","line":21,"in_reply_to":"da85f559_fbfb5fbf","updated":"2015-11-10 20:22:19.000000000","message":"Yep, you are right. Missed those new options. Thanks!","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Currently all the iSCSI and FC code are all together in a single"},{"line_number":14,"context_line":"file. This patch goes into the __init__.py and splits it up into"},{"line_number":15,"context_line":"storwize_svc_iscsi.py, storwize_svc_fc.py, and storwize_svc_common.py."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In addition, tests were also updated to reflect the changes listed"},{"line_number":18,"context_line":"above."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba8a016a_9f71c378","line":15,"updated":"2015-11-18 19:25:02.000000000","message":"Might also want to mention here that this structure is used by the other san based drivers and this is an effort to be more consistent with them.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Since the driver has been split into two, we need to update how"},{"line_number":22,"context_line":"to enable each new driver. The user now needs to set different"},{"line_number":23,"context_line":"values for volume_driver, as shown below."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"FC: Volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver"},{"line_number":26,"context_line":"iSCSI: volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_iscsi.StorwizeSVCISCSIDriver"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_4379d3fb","line":24,"updated":"2015-12-03 21:55:08.000000000","message":"s/Volume_driver/volume_driver","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Since the driver has been split into two, we need to update how"},{"line_number":22,"context_line":"to enable each new driver. The user now needs to set different"},{"line_number":23,"context_line":"values for volume_driver, as shown below."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"FC: Volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver"},{"line_number":26,"context_line":"iSCSI: volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_iscsi.StorwizeSVCISCSIDriver"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_99aace6f","line":24,"in_reply_to":"7a740942_4379d3fb","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":22,"context_line":"to enable each new driver. The user now needs to set different"},{"line_number":23,"context_line":"values for volume_driver, as shown below."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"FC: Volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver"},{"line_number":26,"context_line":"iSCSI: volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_iscsi.StorwizeSVCISCSIDriver"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_a37437fd","line":25,"updated":"2015-12-03 21:55:08.000000000","message":"I would remove the space after \"iSCSI: \" so we can fit this on one line and don\u0027t need to truncate mid-word","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":22,"context_line":"to enable each new driver. The user now needs to set different"},{"line_number":23,"context_line":"values for volume_driver, as shown below."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"FC: Volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver"},{"line_number":26,"context_line":"iSCSI: volume_driver\u003dcinder.volume.drivers.ibm.storwize_svc.storwize_svc_iscsi.StorwizeSVCISCSIDriver"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Co-Authored By: Slade Baumann \u003cbaumann@us.ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7a740942_39b63add","line":25,"in_reply_to":"7a740942_a37437fd","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"}],"cinder/opts.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                cinder_db_api.db_opts,"},{"line_number":246,"context_line":"                cinder_scheduler_weights_volumenumber."},{"line_number":247,"context_line":"                volume_number_weight_opts,"},{"line_number":248,"context_line":"                cinder_volume_drivers_xio.XIO_OPTS,"},{"line_number":249,"context_line":"                cinder_volume_drivers_ibm_storwize_svc_storwizesvcfc."},{"line_number":250,"context_line":"                storwize_svc_fc_opts,"},{"line_number":251,"context_line":"                cinder_volume_drivers_zfssa_zfssaiscsi.ZFSSA_OPTS,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_21643eb7","line":248,"updated":"2015-12-02 22:22:41.000000000","message":"How are we deciding where to put these in the file?","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"}],"cinder/tests/unit/test_storwize_svc.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1757,"context_line":"            self.sim \u003d StorwizeSVCManagementSimulator(\u0027openstack\u0027)"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"            self.driver.set_fake_storage(self.sim)"},{"line_number":1760,"context_line":"            self.ctxt \u003d context.get_admin_context()"},{"line_number":1761,"context_line":"        else:"},{"line_number":1762,"context_line":"            self.driver \u003d storwize_svc.StorwizeSVCDriver("},{"line_number":1763,"context_line":"                configuration\u003dconf.Configuration(None))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_71c58f3a","side":"PARENT","line":1760,"updated":"2015-11-04 19:01:48.000000000","message":"Strange that this \"else\" path was never getting hit before - would be good to understand what that path was trying to test...","commit_id":"9ee11fbd8665f13fa915cd49318075430eb40359"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1757,"context_line":"            self.sim \u003d StorwizeSVCManagementSimulator(\u0027openstack\u0027)"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"            self.driver.set_fake_storage(self.sim)"},{"line_number":1760,"context_line":"            self.ctxt \u003d context.get_admin_context()"},{"line_number":1761,"context_line":"        else:"},{"line_number":1762,"context_line":"            self.driver \u003d storwize_svc.StorwizeSVCDriver("},{"line_number":1763,"context_line":"                configuration\u003dconf.Configuration(None))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_7f51a80d","side":"PARENT","line":1760,"in_reply_to":"fa80f949_71c58f3a","updated":"2015-11-10 20:09:27.000000000","message":"Looking back at when this patch was originally uploaded, it seems from the start that this else statement was never getting hit. There was no documentation that I saw that said as to why this was the case or why the else statement was there in the first place. So I think deleting these else statements does not hurt anything.","commit_id":"9ee11fbd8665f13fa915cd49318075430eb40359"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"            msg \u003d _(\"The copy should be primary or secondary\")"},{"line_number":1717,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""},{"line_number":1720,"context_line":"class StorwizeSVCISCSIFakeDriver(storwize_svc_iscsi.StorwizeSVCISCSIDriver):"},{"line_number":1721,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":1722,"context_line":"        super(StorwizeSVCISCSIFakeDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_119d2359","line":1719,"updated":"2015-11-04 19:01:48.000000000","message":"Think you should be able to mock set_fake_storage in base class","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"            msg \u003d _(\"The copy should be primary or secondary\")"},{"line_number":1717,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""},{"line_number":1720,"context_line":"class StorwizeSVCISCSIFakeDriver(storwize_svc_iscsi.StorwizeSVCISCSIDriver):"},{"line_number":1721,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":1722,"context_line":"        super(StorwizeSVCISCSIFakeDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_5f838456","line":1719,"in_reply_to":"fa80f949_119d2359","updated":"2015-11-10 20:09:27.000000000","message":"On my to-do list.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"        self.driver.initialize_connection(volume_iSCSI, connector)"},{"line_number":2067,"context_line":"        self.driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"class StorwizeSVCFcDriverTestCase(test.TestCase):"},{"line_number":2071,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":2072,"context_line":"    def setUp(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_512f2bf6","line":2069,"updated":"2015-11-04 19:01:48.000000000","message":"Would have expected the FC / iSCSI test classes to be testing the initialize/terminate_connection, validate_connector, etc.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"9adccc8ed20ada8c4ea405f9677f5fa62323507b","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"        self.driver.initialize_connection(volume_iSCSI, connector)"},{"line_number":2067,"context_line":"        self.driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"class StorwizeSVCFcDriverTestCase(test.TestCase):"},{"line_number":2071,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":2072,"context_line":"    def setUp(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_ea8b8666","line":2069,"in_reply_to":"da85f559_1f45fc6e","updated":"2015-11-10 20:53:23.000000000","message":"Yea, that wasn\u0027t the best comment :) but what I\u0027m trying to get across is that I think that a lot of the test results should be the same whether we\u0027re testing them in the iSCSI driver or FC driver.  An example would be something like \"test_create_volume\", because this really shouldn\u0027t matter what protocol we\u0027re using for attach/detach, and all of that code should really be in SvcCommonDriver.\n\nThe only place that these should converge and be tested differently is with pieces related to the specific protocols, so we want to make sure we\u0027re not duplicating a bunch of code in order to test the two drivers.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"24709b4f4a54afc6fadd7ee428416d8765014e84","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"        self.driver.initialize_connection(volume_iSCSI, connector)"},{"line_number":2067,"context_line":"        self.driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"class StorwizeSVCFcDriverTestCase(test.TestCase):"},{"line_number":2071,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":2072,"context_line":"    def setUp(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_f6cb8c51","line":2069,"in_reply_to":"fa80f949_512f2bf6","updated":"2015-11-10 14:08:04.000000000","message":"So are you saying that the FC methods should be tested separately from the iSCSI methods? If so. I agree that that makes more sense rather than testing the methods for each protocol together.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":2066,"context_line":"        self.driver.initialize_connection(volume_iSCSI, connector)"},{"line_number":2067,"context_line":"        self.driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2068,"context_line":""},{"line_number":2069,"context_line":""},{"line_number":2070,"context_line":"class StorwizeSVCFcDriverTestCase(test.TestCase):"},{"line_number":2071,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":2072,"context_line":"    def setUp(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_1f45fc6e","line":2069,"in_reply_to":"fa80f949_512f2bf6","updated":"2015-11-10 20:09:27.000000000","message":"validate_connector is in StorwizeSVCCommonDriverTestCase since that testcase had a case within it where it tested both iSCSI and FC connection simultaneously. Thought it would make sense to keep it all in the same location. But if you think it should be split up that can be done. \n\nOtherwise terminate_connection and other similar methods that I looked at are split among ISCSI/FC test classes.\n\nI will double check for the next patch set to make sure there isn\u0027t any other cases that should be split between iSCSI/FC test classes.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":1826,"context_line":"        conn_iscsi \u003d {\u0027host\u0027: \u0027host\u0027, \u0027initiator\u0027: \u0027foo\u0027}"},{"line_number":1827,"context_line":"        conn_fc \u003d {\u0027host\u0027: \u0027host\u0027, \u0027wwpns\u0027: \u0027bar\u0027}"},{"line_number":1828,"context_line":"        conn_both \u003d {\u0027host\u0027: \u0027host\u0027, \u0027initiator\u0027: \u0027foo\u0027, \u0027wwpns\u0027: \u0027bar\u0027}"},{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":"        self.iscsi_driver._state[\u0027enabled_protocols\u0027] \u003d set([\u0027iSCSI\u0027])"},{"line_number":1831,"context_line":"        self.iscsi_driver.validate_connector(conn_iscsi)"},{"line_number":1832,"context_line":"        self.iscsi_driver.validate_connector(conn_both)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_fd073e16","line":1829,"updated":"2015-11-20 18:47:25.000000000","message":"This doesn\u0027t seem accurate to what will happen in the drivers until we update how \u0027enabled_protocols\u0027 actually works","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":1866,"context_line":"        self.iscsi_driver.create_volume(volume2)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        # Create volume types that we created"},{"line_number":1869,"context_line":"        types \u003d {}"},{"line_number":1870,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":1871,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":1872,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_1d7242ae","line":1869,"updated":"2015-11-20 18:47:25.000000000","message":"Not sure we need the \u0027FC\u0027 part here.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":1866,"context_line":"        self.iscsi_driver.create_volume(volume2)"},{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"        # Create volume types that we created"},{"line_number":1869,"context_line":"        types \u003d {}"},{"line_number":1870,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":1871,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":1872,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_98a9607e","line":1869,"in_reply_to":"ba8a016a_1d7242ae","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":1870,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":1871,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":1872,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"},{"line_number":1873,"context_line":""},{"line_number":1874,"context_line":"        expected \u003d {\u0027FC\u0027: {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":1875,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":1876,"context_line":"                                    \u0027target_wwn\u0027: \u0027AABBCCDDEEFF0011\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_dd36fae6","line":1873,"updated":"2015-11-20 18:47:25.000000000","message":"Can get rid of the FC part of this as well as the for loop.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":1870,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":1871,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":1872,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"},{"line_number":1873,"context_line":""},{"line_number":1874,"context_line":"        expected \u003d {\u0027FC\u0027: {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":1875,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":1876,"context_line":"                                    \u0027target_wwn\u0027: \u0027AABBCCDDEEFF0011\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_78acbc8c","line":1873,"in_reply_to":"ba8a016a_dd36fae6","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2040,"context_line":"        volume \u003d self._generate_vol_info(None, None)"},{"line_number":2041,"context_line":"        self.iscsi_driver.create_volume(volume)"},{"line_number":2042,"context_line":""},{"line_number":2043,"context_line":"        # Create volume types for protocols"},{"line_number":2044,"context_line":"        types \u003d {}"},{"line_number":2045,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":2046,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_fd7ade76","line":2043,"updated":"2015-11-20 18:47:25.000000000","message":"Doubt we need FC here.  Also if we\u0027re repeating this loop a lot we should look to making it a helper function","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2040,"context_line":"        volume \u003d self._generate_vol_info(None, None)"},{"line_number":2041,"context_line":"        self.iscsi_driver.create_volume(volume)"},{"line_number":2042,"context_line":""},{"line_number":2043,"context_line":"        # Create volume types for protocols"},{"line_number":2044,"context_line":"        types \u003d {}"},{"line_number":2045,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":2046,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_388e3428","line":2043,"in_reply_to":"ba8a016a_fd7ade76","updated":"2015-11-23 19:55:25.000000000","message":"Done and something I am gonna look into.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"                 \u0027wwpns\u0027: wwpns,"},{"line_number":2056,"context_line":"                 \u0027initiator\u0027: initiator}"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"        # Check protocols for iSCSI"},{"line_number":2059,"context_line":"        for protocol in [\u0027iSCSI\u0027]:"},{"line_number":2060,"context_line":"            volume[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":2061,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_ddd91a85","line":2058,"updated":"2015-11-20 18:47:25.000000000","message":"Don\u0027t loop since it\u0027s just one element now.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"                 \u0027wwpns\u0027: wwpns,"},{"line_number":2056,"context_line":"                 \u0027initiator\u0027: initiator}"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"        # Check protocols for iSCSI"},{"line_number":2059,"context_line":"        for protocol in [\u0027iSCSI\u0027]:"},{"line_number":2060,"context_line":"            volume[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":2061,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_f880acf9","line":2058,"in_reply_to":"ba8a016a_ddd91a85","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"        self.fc_driver.do_setup(None)"},{"line_number":2114,"context_line":"        self.fc_driver.check_for_setup_error()"},{"line_number":2115,"context_line":"        self.fc_driver._helpers.check_fcmapping_interval \u003d 0"},{"line_number":2116,"context_line":""},{"line_number":2117,"context_line":"    def _set_flag(self, flag, value):"},{"line_number":2118,"context_line":"        group \u003d self.fc_driver.configuration.config_group"},{"line_number":2119,"context_line":"        self.fc_driver.configuration.set_override(flag, value, group)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_9dbab209","line":2116,"updated":"2015-11-20 18:47:25.000000000","message":"Another option is to move these common methods into a common SvcTestBaseClass","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"        self.fc_driver.do_setup(None)"},{"line_number":2114,"context_line":"        self.fc_driver.check_for_setup_error()"},{"line_number":2115,"context_line":"        self.fc_driver._helpers.check_fcmapping_interval \u003d 0"},{"line_number":2116,"context_line":""},{"line_number":2117,"context_line":"    def _set_flag(self, flag, value):"},{"line_number":2118,"context_line":"        group \u003d self.fc_driver.configuration.config_group"},{"line_number":2119,"context_line":"        self.fc_driver.configuration.set_override(flag, value, group)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b8d0e4f8","line":2116,"in_reply_to":"ba8a016a_9dbab209","updated":"2015-11-23 19:55:25.000000000","message":"Looking into the possibility.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":2364,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":2365,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"},{"line_number":2366,"context_line":""},{"line_number":2367,"context_line":"        expected \u003d {\u0027FC\u0027: {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":2368,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":2369,"context_line":"                                    \u0027target_wwn\u0027: \u0027AABBCCDDEEFF0011\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_9d5152db","line":2366,"updated":"2015-11-20 18:47:25.000000000","message":"Same comments as for iSCSI stuff...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"        for protocol in [\u0027FC\u0027, \u0027iSCSI\u0027]:"},{"line_number":2364,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":2365,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"},{"line_number":2366,"context_line":""},{"line_number":2367,"context_line":"        expected \u003d {\u0027FC\u0027: {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":2368,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":2369,"context_line":"                                    \u0027target_wwn\u0027: \u0027AABBCCDDEEFF0011\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d83b6837","line":2366,"in_reply_to":"ba8a016a_9d5152db","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2538,"context_line":"                 \u0027initiator\u0027: initiator}"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"        # Check protocols for FC"},{"line_number":2541,"context_line":""},{"line_number":2542,"context_line":"        for protocol in [\u0027FC\u0027]:"},{"line_number":2543,"context_line":"            volume[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":2544,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_bd71b679","line":2541,"updated":"2015-11-20 18:47:25.000000000","message":"Don\u0027t loop over 1 item","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2538,"context_line":"                 \u0027initiator\u0027: initiator}"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"        # Check protocols for FC"},{"line_number":2541,"context_line":""},{"line_number":2542,"context_line":"        for protocol in [\u0027FC\u0027]:"},{"line_number":2543,"context_line":"            volume[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":2544,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_583bf89c","line":2541,"in_reply_to":"ba8a016a_bd71b679","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":2564,"context_line":"    def setUp(self, mock_sleep):"},{"line_number":2565,"context_line":"        super(StorwizeSVCCommonDriverTestCase, self).setUp()"},{"line_number":2566,"context_line":"        self.USESIM \u003d True"},{"line_number":2567,"context_line":"        if self.USESIM:"},{"line_number":2568,"context_line":"            self.driver \u003d StorwizeSVCISCSIFakeDriver("},{"line_number":2569,"context_line":"                configuration\u003dconf.Configuration(None))"},{"line_number":2570,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_5d30ca9e","line":2567,"updated":"2015-11-20 18:47:25.000000000","message":"Another option here worth considering is we could probably instantiate StorwizeSVCCommonDriver instead of the iSCSI one since we haven\u0027t /actually/ made that an abstract class at this point.  This would ensure that this is actually only hitting the common methods and any others would have to go in the specific test cases...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":2564,"context_line":"    def setUp(self, mock_sleep):"},{"line_number":2565,"context_line":"        super(StorwizeSVCCommonDriverTestCase, self).setUp()"},{"line_number":2566,"context_line":"        self.USESIM \u003d True"},{"line_number":2567,"context_line":"        if self.USESIM:"},{"line_number":2568,"context_line":"            self.driver \u003d StorwizeSVCISCSIFakeDriver("},{"line_number":2569,"context_line":"                configuration\u003dconf.Configuration(None))"},{"line_number":2570,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_8ea6fa51","line":2567,"in_reply_to":"ba8a016a_5d30ca9e","updated":"2015-11-23 19:55:25.000000000","message":"WIP","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":"        return ret"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":""},{"line_number":1758,"context_line":"class StorwizeSVCISCSIDriverTestCase(test.TestCase):"},{"line_number":1759,"context_line":"    @mock.patch.object(time, \u0027sleep\u0027)"},{"line_number":1760,"context_line":"    def setUp(self, mock_sleep):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_21f43e59","line":1757,"updated":"2015-12-02 22:22:41.000000000","message":"Think we should have a \"class StorwizeSVCCommonTestCase\" which then would contain the setup, _set_flag, etc. all the way to test_storwize_svc_iscsi_validate_connector.  That way we\u0027re not defining those twice.  Then we have call StorwizeSVCISCSIDriverTestCase which extends StorwizeSVCCommonTestCase and defines self.driver.  Also, don\u0027t think we need to have different variables for self.iscsi_driver and self.fc_driver, we can just call them self.driver.","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":1887,"context_line":"                                       \u0027target_lun\u0027: 0,"},{"line_number":1888,"context_line":"                                       \u0027auth_method\u0027: \u0027CHAP\u0027,"},{"line_number":1889,"context_line":"                                       \u0027discovery_auth_method\u0027: \u0027CHAP\u0027}}}"},{"line_number":1890,"context_line":""},{"line_number":1891,"context_line":"        for protocol in [\u0027iSCSI\u0027]:"},{"line_number":1892,"context_line":"            volume1[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":1893,"context_line":"            volume2[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_c4b77b83","line":1890,"updated":"2015-12-02 22:22:41.000000000","message":"Don\u0027t need this loop","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2296,"context_line":"        for protocol in [\u0027FC\u0027]:"},{"line_number":2297,"context_line":"            opts \u003d {\u0027storage_protocol\u0027: \u0027\u003cin\u003e \u0027 + protocol}"},{"line_number":2298,"context_line":"            types[protocol] \u003d volume_types.create(ctxt, protocol, opts)"},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"        expected \u003d {\u0027FC\u0027: {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":2301,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":2302,"context_line":"                                    \u0027target_wwn\u0027: [\u0027AABBCCDDEEFF0011\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_0437c3ff","line":2299,"updated":"2015-12-02 22:22:41.000000000","message":"can remove outer dict mapping I think now that we only have one protocol here...","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2301,"context_line":"                           \u0027data\u0027: {\u0027target_lun\u0027: 0,"},{"line_number":2302,"context_line":"                                    \u0027target_wwn\u0027: [\u0027AABBCCDDEEFF0011\u0027],"},{"line_number":2303,"context_line":"                                    \u0027target_discovered\u0027: False}}}"},{"line_number":2304,"context_line":""},{"line_number":2305,"context_line":"        for protocol in [\u0027FC\u0027]:"},{"line_number":2306,"context_line":"            volume1[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"},{"line_number":2307,"context_line":"            volume2[\u0027volume_type_id\u0027] \u003d types[protocol][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_04502331","line":2304,"updated":"2015-12-02 22:22:41.000000000","message":"Don\u0027t need this loop","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2488,"context_line":"    def setUp(self, mock_sleep):"},{"line_number":2489,"context_line":"        super(StorwizeSVCCommonDriverTestCase, self).setUp()"},{"line_number":2490,"context_line":"        self.USESIM \u003d True"},{"line_number":2491,"context_line":"        if self.USESIM:"},{"line_number":2492,"context_line":"            self.driver \u003d StorwizeSVCISCSIFakeDriver("},{"line_number":2493,"context_line":"                configuration\u003dconf.Configuration(None))"},{"line_number":2494,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_67149143","line":2491,"updated":"2015-12-02 22:22:41.000000000","message":"May want to try using an StorwizeSVCCommonFake driver to make sure we\u0027re not hitting any iSCSI/FC specific methods (but probably not a deal breaker)","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2647,"context_line":""},{"line_number":2648,"context_line":"        for volume in volumes:"},{"line_number":2649,"context_line":"            testutils.create_snapshot(self.ctxt,"},{"line_number":2650,"context_line":"                                      volume[\u0027id\u0027],"},{"line_number":2651,"context_line":"                                      cg_snapshot[\u0027id\u0027],"},{"line_number":2652,"context_line":"                                      cg_snapshot[\u0027name\u0027],"},{"line_number":2653,"context_line":"                                      cg_snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_c413fb63","line":2650,"updated":"2015-12-02 22:22:41.000000000","message":"Why are we changing the way these are accessed?","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2893,"context_line":"        self.driver.create_export(None, volume, {})"},{"line_number":2894,"context_line":"        self.driver.remove_export(None, volume)"},{"line_number":2895,"context_line":""},{"line_number":2896,"context_line":"        # Make sure volume attributes are as they should be"},{"line_number":2897,"context_line":"        attributes \u003d ("},{"line_number":2898,"context_line":"            self.driver._helpers.get_vdisk_attributes(volume[\u0027name\u0027]))"},{"line_number":2899,"context_line":"        attr_size \u003d float(attributes[\u0027capacity\u0027]) / units.Gi  # bytes to GB"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_e72641b9","line":2896,"updated":"2015-12-02 22:22:41.000000000","message":"Why did we change this?","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":3022,"context_line":"        self.driver.delete_volume(volume1)"},{"line_number":3023,"context_line":""},{"line_number":3024,"context_line":"        # Clean up temporary hosts"},{"line_number":3025,"context_line":"        for tmpconn in [tmpconn1, tmpconn2]:"},{"line_number":3026,"context_line":"            host_name \u003d ("},{"line_number":3027,"context_line":"                self.driver._helpers.get_host_from_connector(tmpconn))"},{"line_number":3028,"context_line":"            self.assertIsNotNone(host_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_472e2d8d","line":3025,"updated":"2015-12-02 22:22:41.000000000","message":"Why did we change this?","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":3171,"context_line":"        # The parameters retured should be the same to the default options,"},{"line_number":3172,"context_line":"        # if the QoS is empty."},{"line_number":3173,"context_line":"        vol_type_empty_qos \u003d self._create_volume_type_qos(True, None)"},{"line_number":3174,"context_line":"        type_id \u003d vol_type_empty_qos[\u0027id\u0027]"},{"line_number":3175,"context_line":"        params \u003d self.driver._get_vdisk_params("},{"line_number":3176,"context_line":"            type_id, volume_type\u003dvol_type_empty_qos, volume_metadata\u003dNone)"},{"line_number":3177,"context_line":"        self.assertEqual(fake_opts, params)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_c758dd33","line":3174,"updated":"2015-12-02 22:22:41.000000000","message":"Why are we changing all of these if we don\u0027t actually change any of the behavior with them?","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"        # Make sure volume attributes are as they should be"},{"line_number":2892,"context_line":"        attributes \u003d self.driver._helpers.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":2893,"context_line":"        attr_size \u003d float(attributes[\u0027capacity\u0027]) / units.Gi  # bytes to GB"},{"line_number":2894,"context_line":"        self.assertEqual(attr_size, float(volume[\u0027size\u0027]))"},{"line_number":2895,"context_line":"        local_conf \u003d self.driver.configuration.local_conf"},{"line_number":2896,"context_line":"        pool \u003d local_conf.storwize_svc_volpool_name"},{"line_number":2897,"context_line":"        self.assertEqual(attributes[\u0027mdisk_grp_name\u0027], pool)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_03e8ab7b","line":2894,"updated":"2015-12-03 21:55:08.000000000","message":"Why\u0027d we split this into two?","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":2891,"context_line":"        # Make sure volume attributes are as they should be"},{"line_number":2892,"context_line":"        attributes \u003d self.driver._helpers.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":2893,"context_line":"        attr_size \u003d float(attributes[\u0027capacity\u0027]) / units.Gi  # bytes to GB"},{"line_number":2894,"context_line":"        self.assertEqual(attr_size, float(volume[\u0027size\u0027]))"},{"line_number":2895,"context_line":"        local_conf \u003d self.driver.configuration.local_conf"},{"line_number":2896,"context_line":"        pool \u003d local_conf.storwize_svc_volpool_name"},{"line_number":2897,"context_line":"        self.assertEqual(attributes[\u0027mdisk_grp_name\u0027], pool)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_99ee4eeb","line":2894,"in_reply_to":"7a740942_03e8ab7b","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3016,"context_line":"        self.driver.delete_volume(volume1)"},{"line_number":3017,"context_line":""},{"line_number":3018,"context_line":"        # Clean up temporary hosts"},{"line_number":3019,"context_line":"        for tmpconn in [tmpconn1, tmpconn2]:"},{"line_number":3020,"context_line":"            host_name \u003d (self.driver._helpers.get_host_from_connector(tmpconn))"},{"line_number":3021,"context_line":"            self.assertIsNotNone(host_name)"},{"line_number":3022,"context_line":"            self.driver._helpers.delete_host(host_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_83e57ba9","line":3019,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t need to be adding ()","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3016,"context_line":"        self.driver.delete_volume(volume1)"},{"line_number":3017,"context_line":""},{"line_number":3018,"context_line":"        # Clean up temporary hosts"},{"line_number":3019,"context_line":"        for tmpconn in [tmpconn1, tmpconn2]:"},{"line_number":3020,"context_line":"            host_name \u003d (self.driver._helpers.get_host_from_connector(tmpconn))"},{"line_number":3021,"context_line":"            self.assertIsNotNone(host_name)"},{"line_number":3022,"context_line":"            self.driver._helpers.delete_host(host_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_f9b3d208","line":3019,"in_reply_to":"7a740942_83e57ba9","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3100,"context_line":"        stats \u003d self.driver.get_volume_stats()"},{"line_number":3101,"context_line":"        self.assertLessEqual(stats[\u0027free_capacity_gb\u0027],"},{"line_number":3102,"context_line":"                             stats[\u0027total_capacity_gb\u0027])"},{"line_number":3103,"context_line":"        self.assertEqual(25, stats[\u0027reserved_percentage\u0027])"},{"line_number":3104,"context_line":"        iscsi_local_conf \u003d self.driver.configuration.local_conf"},{"line_number":3105,"context_line":"        pool \u003d iscsi_local_conf.storwize_svc_volpool_name"},{"line_number":3106,"context_line":"        if self.USESIM:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_a3f9974f","line":3103,"updated":"2015-12-03 21:55:08.000000000","message":"Same here - don\u0027t appear to be changing anything?","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3100,"context_line":"        stats \u003d self.driver.get_volume_stats()"},{"line_number":3101,"context_line":"        self.assertLessEqual(stats[\u0027free_capacity_gb\u0027],"},{"line_number":3102,"context_line":"                             stats[\u0027total_capacity_gb\u0027])"},{"line_number":3103,"context_line":"        self.assertEqual(25, stats[\u0027reserved_percentage\u0027])"},{"line_number":3104,"context_line":"        iscsi_local_conf \u003d self.driver.configuration.local_conf"},{"line_number":3105,"context_line":"        pool \u003d iscsi_local_conf.storwize_svc_volpool_name"},{"line_number":3106,"context_line":"        if self.USESIM:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_0612f962","line":3103,"in_reply_to":"7a740942_a3f9974f","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3193,"context_line":"        # in the parameter."},{"line_number":3194,"context_line":"        params \u003d self.driver._get_vdisk_params(None, volume_type\u003dNone,"},{"line_number":3195,"context_line":"                                               volume_metadata\u003dNone)"},{"line_number":3196,"context_line":"        self.assertIsNone(params[\u0027qos\u0027])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        qos_spec \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":3199,"context_line":"        volume_types.destroy(self.ctxt, type_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_23a4c755","line":3196,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t change this line if we\u0027re not making real changes","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3193,"context_line":"        # in the parameter."},{"line_number":3194,"context_line":"        params \u003d self.driver._get_vdisk_params(None, volume_type\u003dNone,"},{"line_number":3195,"context_line":"                                               volume_metadata\u003dNone)"},{"line_number":3196,"context_line":"        self.assertIsNone(params[\u0027qos\u0027])"},{"line_number":3197,"context_line":""},{"line_number":3198,"context_line":"        qos_spec \u003d volume_types.get_volume_type_qos_specs(type_id)"},{"line_number":3199,"context_line":"        volume_types.destroy(self.ctxt, type_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_c60cf144","line":3196,"in_reply_to":"7a740942_23a4c755","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3203,"context_line":"        # qos value should be set in the retured parameters."},{"line_number":3204,"context_line":"        vol_type_qos \u003d self._create_volume_type_qos(True, fake_qos)"},{"line_number":3205,"context_line":"        type_id \u003d vol_type_qos[\u0027id\u0027]"},{"line_number":3206,"context_line":"        # If type_id is not none and volume_type is none, it should work fine."},{"line_number":3207,"context_line":"        params \u003d self.driver._get_vdisk_params("},{"line_number":3208,"context_line":"            type_id, volume_type\u003dNone, volume_metadata\u003dNone)"},{"line_number":3209,"context_line":"        self.assertEqual(expected_qos, params[\u0027qos\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_039f4b04","line":3206,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t change this line if we\u0027re not making real changes","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3203,"context_line":"        # qos value should be set in the retured parameters."},{"line_number":3204,"context_line":"        vol_type_qos \u003d self._create_volume_type_qos(True, fake_qos)"},{"line_number":3205,"context_line":"        type_id \u003d vol_type_qos[\u0027id\u0027]"},{"line_number":3206,"context_line":"        # If type_id is not none and volume_type is none, it should work fine."},{"line_number":3207,"context_line":"        params \u003d self.driver._get_vdisk_params("},{"line_number":3208,"context_line":"            type_id, volume_type\u003dNone, volume_metadata\u003dNone)"},{"line_number":3209,"context_line":"        self.assertEqual(expected_qos, params[\u0027qos\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_e609ed32","line":3206,"in_reply_to":"7a740942_039f4b04","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3673,"context_line":"        vol2 \u003d self._generate_vol_info(None, None)"},{"line_number":3674,"context_line":"        volume_type \u003d self._create_replication_volume_type(True)"},{"line_number":3675,"context_line":"        vol2[\u0027volume_type_id\u0027] \u003d volume_type[\u0027id\u0027]"},{"line_number":3676,"context_line":""},{"line_number":3677,"context_line":"        model_update \u003d self.driver.create_volume_from_snapshot("},{"line_number":3678,"context_line":"            vol2, snap)"},{"line_number":3679,"context_line":"        self._assert_vol_exists(vol2[\u0027name\u0027], True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_a390b7ed","line":3676,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t change this line if we\u0027re not making real changes","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3673,"context_line":"        vol2 \u003d self._generate_vol_info(None, None)"},{"line_number":3674,"context_line":"        volume_type \u003d self._create_replication_volume_type(True)"},{"line_number":3675,"context_line":"        vol2[\u0027volume_type_id\u0027] \u003d volume_type[\u0027id\u0027]"},{"line_number":3676,"context_line":""},{"line_number":3677,"context_line":"        model_update \u003d self.driver.create_volume_from_snapshot("},{"line_number":3678,"context_line":"            vol2, snap)"},{"line_number":3679,"context_line":"        self._assert_vol_exists(vol2[\u0027name\u0027], True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_a603e50e","line":3676,"in_reply_to":"7a740942_a390b7ed","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3749,"context_line":"        # Enable replica"},{"line_number":3750,"context_line":"        self.driver.retype(ctxt, volume, enable_type, diff, host)"},{"line_number":3751,"context_line":"        # In DB replication_status will be updated"},{"line_number":3752,"context_line":"        volume[\u0027replication_status\u0027] \u003d None"},{"line_number":3753,"context_line":"        model_update \u003d self.driver.get_replication_status("},{"line_number":3754,"context_line":"            self.ctxt, volume)"},{"line_number":3755,"context_line":"        self.assertIs(\u0027copying\u0027, model_update[\u0027replication_status\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_43bc736c","line":3752,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t change this line if we\u0027re not making real changes","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3749,"context_line":"        # Enable replica"},{"line_number":3750,"context_line":"        self.driver.retype(ctxt, volume, enable_type, diff, host)"},{"line_number":3751,"context_line":"        # In DB replication_status will be updated"},{"line_number":3752,"context_line":"        volume[\u0027replication_status\u0027] \u003d None"},{"line_number":3753,"context_line":"        model_update \u003d self.driver.get_replication_status("},{"line_number":3754,"context_line":"            self.ctxt, volume)"},{"line_number":3755,"context_line":"        self.assertIs(\u0027copying\u0027, model_update[\u0027replication_status\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_f908b22a","line":3752,"in_reply_to":"7a740942_43bc736c","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"2301ab51d8ab1c514761c987b543bc42b742b406","unresolved":false,"context_lines":[{"line_number":3774,"context_line":"        self._create_volume(volume_type_id\u003dcg_type[\u0027id\u0027],"},{"line_number":3775,"context_line":"                            consistencygroup_id\u003dcg[\u0027id\u0027])"},{"line_number":3776,"context_line":"        cg_snapshot \u003d self._create_cgsnapshot_in_db(cg[\u0027id\u0027])"},{"line_number":3777,"context_line":""},{"line_number":3778,"context_line":"        model_update \u003d self.driver.create_cgsnapshot(self.ctxt,"},{"line_number":3779,"context_line":"                                                     cg_snapshot, [])"},{"line_number":3780,"context_line":"        self.assertEqual(\u0027available\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_63c16fe4","line":3777,"updated":"2015-12-03 21:55:08.000000000","message":"Don\u0027t change this line if we\u0027re not making real changes","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"08ad4c63559ecf2c2bdc5074bd7a2c0baeaddb27","unresolved":false,"context_lines":[{"line_number":3774,"context_line":"        self._create_volume(volume_type_id\u003dcg_type[\u0027id\u0027],"},{"line_number":3775,"context_line":"                            consistencygroup_id\u003dcg[\u0027id\u0027])"},{"line_number":3776,"context_line":"        cg_snapshot \u003d self._create_cgsnapshot_in_db(cg[\u0027id\u0027])"},{"line_number":3777,"context_line":""},{"line_number":3778,"context_line":"        model_update \u003d self.driver.create_cgsnapshot(self.ctxt,"},{"line_number":3779,"context_line":"                                                     cg_snapshot, [])"},{"line_number":3780,"context_line":"        self.assertEqual(\u0027available\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_99b64e3c","line":3777,"in_reply_to":"7a740942_63c16fe4","updated":"2015-12-03 22:41:59.000000000","message":"Done","commit_id":"67ce1d6b045769deede1144ba1454d9774d5df74"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f8a5a3987269049389c57861a870a9951aeea30","unresolved":false,"context_lines":[{"line_number":1810,"context_line":"        self.db.volume_destroy(self.ctxt, volume[\u0027id\u0027])"},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"    def _generate_vol_info(self, vol_name, vol_id):"},{"line_number":1813,"context_line":"        rand_id \u003d str(random.randint(10000, 99999))"},{"line_number":1814,"context_line":"        if vol_name:"},{"line_number":1815,"context_line":"            return {\u0027name\u0027: \u0027snap_volume%s\u0027 % rand_id,"},{"line_number":1816,"context_line":"                    \u0027volume_name\u0027: vol_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_ab3ec525","line":1813,"updated":"2015-12-07 23:07:45.000000000","message":"Use six.text_type() instead of str(). Here and other instances.","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"dd0f55628b136e6711885ea1460c0c9c5f044ece","unresolved":false,"context_lines":[{"line_number":1810,"context_line":"        self.db.volume_destroy(self.ctxt, volume[\u0027id\u0027])"},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"    def _generate_vol_info(self, vol_name, vol_id):"},{"line_number":1813,"context_line":"        rand_id \u003d str(random.randint(10000, 99999))"},{"line_number":1814,"context_line":"        if vol_name:"},{"line_number":1815,"context_line":"            return {\u0027name\u0027: \u0027snap_volume%s\u0027 % rand_id,"},{"line_number":1816,"context_line":"                    \u0027volume_name\u0027: vol_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_e0526a66","line":1813,"in_reply_to":"7a740942_ab3ec525","updated":"2015-12-08 21:52:16.000000000","message":"Done","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4f8a5a3987269049389c57861a870a9951aeea30","unresolved":false,"context_lines":[{"line_number":1821,"context_line":"        else:"},{"line_number":1822,"context_line":"            return {\u0027name\u0027: \u0027test_volume%s\u0027 % rand_id,"},{"line_number":1823,"context_line":"                    \u0027size\u0027: 10,"},{"line_number":1824,"context_line":"                    \u0027id\u0027: \u0027%s\u0027 % rand_id,"},{"line_number":1825,"context_line":"                    \u0027volume_type_id\u0027: None,"},{"line_number":1826,"context_line":"                    \u0027mdisk_grp_name\u0027: \u0027openstack\u0027}"},{"line_number":1827,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_cbfb117a","line":1824,"updated":"2015-12-07 23:07:45.000000000","message":"rand_id is already defined as a string above, so no need to do the string formatting here into a string value.","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"dd0f55628b136e6711885ea1460c0c9c5f044ece","unresolved":false,"context_lines":[{"line_number":1821,"context_line":"        else:"},{"line_number":1822,"context_line":"            return {\u0027name\u0027: \u0027test_volume%s\u0027 % rand_id,"},{"line_number":1823,"context_line":"                    \u0027size\u0027: 10,"},{"line_number":1824,"context_line":"                    \u0027id\u0027: \u0027%s\u0027 % rand_id,"},{"line_number":1825,"context_line":"                    \u0027volume_type_id\u0027: None,"},{"line_number":1826,"context_line":"                    \u0027mdisk_grp_name\u0027: \u0027openstack\u0027}"},{"line_number":1827,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_60cd1a30","line":1824,"in_reply_to":"7a740942_cbfb117a","updated":"2015-12-08 21:52:16.000000000","message":"Done","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"}],"cinder/volume/drivers/ibm/storwize_svc/__init__.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa80f949_1338ce9f","side":"PARENT","updated":"2015-11-04 19:01:48.000000000","message":"This file should be removed entirely as opposed to all the lines deleted from it.","commit_id":"9ee11fbd8665f13fa915cd49318075430eb40359"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"a9ac7f223ef108f91206abdf4ccebda536994ffb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa80f949_2a830c58","side":"PARENT","in_reply_to":"fa80f949_1338ce9f","updated":"2015-11-04 20:21:24.000000000","message":"Was wrong about this - ignore me :)","commit_id":"9ee11fbd8665f13fa915cd49318075430eb40359"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bd04cee742cf542d27ccd2654a9e3a989da4dd08","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                default\u003dTrue,"},{"line_number":90,"context_line":"                help\u003d\u0027Allows vdisk to multi host mapping\u0027),"},{"line_number":91,"context_line":"    # TODO(xqli): storwize_svc_npiv_compatibility_mode should always be set"},{"line_number":92,"context_line":"    # to True. It will be deprecated and removed in M release."},{"line_number":93,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_npiv_compatibility_mode\u0027,"},{"line_number":94,"context_line":"                default\u003dTrue,"},{"line_number":95,"context_line":"                help\u003d\u0027Indicate whether svc driver is compatible for NPIV \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_40e64db5","line":92,"updated":"2015-10-29 22:12:44.000000000","message":"Should this be just removed now?","commit_id":"fc3ee0da119705bd3e270a87e50e12b1f3e8c52f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":36,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":37,"context_line":"from cinder.volume import driver"},{"line_number":38,"context_line":"from cinder.volume import qos_specs"},{"line_number":39,"context_line":"from cinder.volume import utils as n_utils"},{"line_number":40,"context_line":"from cinder.volume import volume_types"},{"line_number":41,"context_line":"INTERVAL_1_SEC \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_f35d0a7a","line":38,"updated":"2015-11-04 19:01:48.000000000","message":"Why are we renaming this n_utils?","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":36,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":37,"context_line":"from cinder.volume import driver"},{"line_number":38,"context_line":"from cinder.volume import qos_specs"},{"line_number":39,"context_line":"from cinder.volume import utils as n_utils"},{"line_number":40,"context_line":"from cinder.volume import volume_types"},{"line_number":41,"context_line":"INTERVAL_1_SEC \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_91f3219e","line":38,"in_reply_to":"fa80f949_f35d0a7a","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":77,"context_line":"               default\u003d120,"},{"line_number":78,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":79,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":80,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_73d7daed","line":80,"updated":"2015-11-04 19:01:48.000000000","message":"Do we need this now that we have split out the iSCSI and FC driver?  In cinder.conf I think someone would just specify cinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSvcFc","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5ca86726641718b1c84752e1de81ab3e5a51d69a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"               default\u003d120,"},{"line_number":78,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":79,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":80,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_3697be3b","line":80,"in_reply_to":"da85f559_f5d93984","updated":"2015-11-10 20:36:00.000000000","message":"Yea, I\u0027m pretty sure we can get rid of this.  Doesn\u0027t make sense for the iSCSI driver to be using FC as the protocol or vice-a-versa.  Just have the iSCSI driver know it\u0027s procol is \u0027iSCSI\u0027","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"               default\u003d120,"},{"line_number":78,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":79,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":80,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_f5d93984","line":80,"in_reply_to":"fa80f949_73d7daed","updated":"2015-11-10 20:09:27.000000000","message":"I am wondering this myself. Something I am going to look into for the next patch set.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"},{"line_number":84,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":85,"context_line":"                default\u003dTrue,"},{"line_number":86,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_731cbac1","line":83,"updated":"2015-11-04 19:01:48.000000000","message":"iSCSI config should be moved to iSCSI driver","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":83,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"},{"line_number":84,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":85,"context_line":"                default\u003dTrue,"},{"line_number":86,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_317115e1","line":83,"in_reply_to":"fa80f949_731cbac1","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":85,"context_line":"                default\u003dTrue,"},{"line_number":86,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":87,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":88,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_multipath_enabled\u0027,"},{"line_number":89,"context_line":"                default\u003dFalse,"},{"line_number":90,"context_line":"                help\u003d\u0027Connect with multipath (FC only; iSCSI multipath is \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_337dd2e7","line":87,"updated":"2015-11-04 19:01:48.000000000","message":"FC config should be moved to FC driver","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":85,"context_line":"                default\u003dTrue,"},{"line_number":86,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":87,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":88,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_multipath_enabled\u0027,"},{"line_number":89,"context_line":"                default\u003dFalse,"},{"line_number":90,"context_line":"                help\u003d\u0027Connect with multipath (FC only; iSCSI multipath is \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_51329911","line":87,"in_reply_to":"fa80f949_337dd2e7","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"                              driver.MigrateVD, driver.ReplicaVD,"},{"line_number":1624,"context_line":"                              driver.ConsistencyGroupVD,"},{"line_number":1625,"context_line":"                              driver.CloneableImageVD,"},{"line_number":1626,"context_line":"                              driver.TransferVD):"},{"line_number":1627,"context_line":"    \"\"\"IBM Storwize V7000 and SVC iSCSI/FC volume driver."},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"    Version history:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_734a7aae","line":1626,"updated":"2015-11-04 19:01:48.000000000","message":"Update this comment","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"                              driver.MigrateVD, driver.ReplicaVD,"},{"line_number":1624,"context_line":"                              driver.ConsistencyGroupVD,"},{"line_number":1625,"context_line":"                              driver.CloneableImageVD,"},{"line_number":1626,"context_line":"                              driver.TransferVD):"},{"line_number":1627,"context_line":"    \"\"\"IBM Storwize V7000 and SVC iSCSI/FC volume driver."},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"    Version history:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_140abf21","line":1626,"in_reply_to":"fa80f949_734a7aae","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"    1.2.6 - Added QoS support in terms of I/O throttling rate"},{"line_number":1642,"context_line":"    1.3.1 - Added support for volume replication"},{"line_number":1643,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":1644,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1645,"context_line":"    2.0 - Split init file into separate files"},{"line_number":1646,"context_line":"    \"\"\""},{"line_number":1647,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_b3d782be","line":1644,"updated":"2015-11-04 19:01:48.000000000","message":"Could add some more detail to this comment","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"    1.2.6 - Added QoS support in terms of I/O throttling rate"},{"line_number":1642,"context_line":"    1.3.1 - Added support for volume replication"},{"line_number":1643,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":1644,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1645,"context_line":"    2.0 - Split init file into separate files"},{"line_number":1646,"context_line":"    \"\"\""},{"line_number":1647,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_944c6f71","line":1644,"in_reply_to":"fa80f949_b3d782be","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1644,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1645,"context_line":"    2.0 - Split init file into separate files"},{"line_number":1646,"context_line":"    \"\"\""},{"line_number":1647,"context_line":""},{"line_number":1648,"context_line":"    VERSION \u003d \"1.3.3\""},{"line_number":1649,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":1650,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_7fe31b34","line":1647,"updated":"2015-11-04 19:01:48.000000000","message":"Probably should bump this VERSION\u003d\"1.3.3\" but subclasses are \"2.0\"","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1644,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1645,"context_line":"    2.0 - Split init file into separate files"},{"line_number":1646,"context_line":"    \"\"\""},{"line_number":1647,"context_line":""},{"line_number":1648,"context_line":"    VERSION \u003d \"1.3.3\""},{"line_number":1649,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":1650,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_94630fdc","line":1647,"in_reply_to":"fa80f949_7fe31b34","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1708,"context_line":"        if not volume_defined:"},{"line_number":1709,"context_line":"            LOG.error(_LE(\u0027ensure_export: Volume %s not found on storage.\u0027),"},{"line_number":1710,"context_line":"                      volume[\u0027name\u0027])"},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"    def create_export(self, ctxt, volume, connector):"},{"line_number":1713,"context_line":"        model_update \u003d None"},{"line_number":1714,"context_line":"        return model_update"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_5e1e5d64","line":1711,"updated":"2015-11-04 19:01:48.000000000","message":"Not sure this method does anything currently - we should look into using these methods how they\u0027re supposed to be defined in https://griffithscorner.wordpress.com/","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1708,"context_line":"        if not volume_defined:"},{"line_number":1709,"context_line":"            LOG.error(_LE(\u0027ensure_export: Volume %s not found on storage.\u0027),"},{"line_number":1710,"context_line":"                      volume[\u0027name\u0027])"},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"    def create_export(self, ctxt, volume, connector):"},{"line_number":1713,"context_line":"        model_update \u003d None"},{"line_number":1714,"context_line":"        return model_update"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_669f0fb5","line":1711,"in_reply_to":"fa80f949_5e1e5d64","updated":"2015-11-10 20:09:27.000000000","message":"This issue will be addressed in the near future. These methods are part of the base driver. Portions of initialize_connection should be split out here.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"    def create_export(self, ctxt, volume, connector):"},{"line_number":1713,"context_line":"        model_update \u003d None"},{"line_number":1714,"context_line":"        return model_update"},{"line_number":1715,"context_line":""},{"line_number":1716,"context_line":"    def remove_export(self, ctxt, volume):"},{"line_number":1717,"context_line":"        pass"},{"line_number":1718,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_3e2a797f","line":1715,"updated":"2015-11-04 19:01:48.000000000","message":"This method doesn\u0027t appear to do anything","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"    def create_export(self, ctxt, volume, connector):"},{"line_number":1713,"context_line":"        model_update \u003d None"},{"line_number":1714,"context_line":"        return model_update"},{"line_number":1715,"context_line":""},{"line_number":1716,"context_line":"    def remove_export(self, ctxt, volume):"},{"line_number":1717,"context_line":"        pass"},{"line_number":1718,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_66862f67","line":1715,"in_reply_to":"fa80f949_3e2a797f","updated":"2015-11-10 20:09:27.000000000","message":"Same idea as above.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1732,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":1733,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027])"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"        model_update \u003d None"},{"line_number":1736,"context_line":"        if \u0027replication\u0027 in opts and opts[\u0027replication\u0027]:"},{"line_number":1737,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":1738,"context_line":"            model_update \u003d self.replication.create_replica(ctxt, volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_bed98985","line":1735,"updated":"2015-11-04 19:01:48.000000000","message":"Could use \"if opts.get(\u0027replication\u0027)\" instead","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1732,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":1733,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027])"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"        model_update \u003d None"},{"line_number":1736,"context_line":"        if \u0027replication\u0027 in opts and opts[\u0027replication\u0027]:"},{"line_number":1737,"context_line":"            ctxt \u003d context.get_admin_context()"},{"line_number":1738,"context_line":"            model_update \u003d self.replication.create_replica(ctxt, volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_b4ff33a9","line":1735,"in_reply_to":"fa80f949_bed98985","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"            if replica_status:"},{"line_number":1787,"context_line":"                return replica_status"},{"line_number":1788,"context_line":""},{"line_number":1789,"context_line":"    def create_cloned_volume(self, tgt_volume, src_volume):"},{"line_number":1790,"context_line":"        if src_volume[\u0027size\u0027] !\u003d tgt_volume[\u0027size\u0027]:"},{"line_number":1791,"context_line":"            msg \u003d (_(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1792,"context_line":"                     \u0027size differ.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_d920279e","line":1789,"updated":"2015-11-04 19:01:48.000000000","message":"Since 1790-1797 is identical between create_volume_from_snapshot and create_cloned_volume could be nice to put in function (actually both methods super similar)","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"            if replica_status:"},{"line_number":1787,"context_line":"                return replica_status"},{"line_number":1788,"context_line":""},{"line_number":1789,"context_line":"    def create_cloned_volume(self, tgt_volume, src_volume):"},{"line_number":1790,"context_line":"        if src_volume[\u0027size\u0027] !\u003d tgt_volume[\u0027size\u0027]:"},{"line_number":1791,"context_line":"            msg \u003d (_(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1792,"context_line":"                     \u0027size differ.\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_66d4ef46","line":1789,"in_reply_to":"fa80f949_d920279e","updated":"2015-11-10 20:09:27.000000000","message":"Talked to Jay, and we will leave it as a TODO item for a future patch.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":1975,"context_line":"        if dest_pool is None:"},{"line_number":1976,"context_line":"            return false_ret"},{"line_number":1977,"context_line":""},{"line_number":1978,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":1979,"context_line":"        if volume[\u0027volume_type_id\u0027] is not None:"},{"line_number":1980,"context_line":"            volume_type_id \u003d volume[\u0027volume_type_id\u0027]"},{"line_number":1981,"context_line":"            vol_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_594af7c6","line":1978,"updated":"2015-11-04 19:01:48.000000000","message":"Could save value of volume[\u0027volume_type_id\u0027] so we don\u0027t grab it twice","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":1975,"context_line":"        if dest_pool is None:"},{"line_number":1976,"context_line":"            return false_ret"},{"line_number":1977,"context_line":""},{"line_number":1978,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":1979,"context_line":"        if volume[\u0027volume_type_id\u0027] is not None:"},{"line_number":1980,"context_line":"            volume_type_id \u003d volume[\u0027volume_type_id\u0027]"},{"line_number":1981,"context_line":"            vol_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_f4cdbb5d","line":1978,"in_reply_to":"fa80f949_594af7c6","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":2276,"context_line":"        data \u003d {}"},{"line_number":2277,"context_line":""},{"line_number":2278,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027IBM\u0027"},{"line_number":2279,"context_line":"        data[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":2280,"context_line":"        data[\u0027storage_protocol\u0027] \u003d list(self._state[\u0027enabled_protocols\u0027])"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d 0  # To be overwritten"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_444e8a97","line":2279,"updated":"2015-11-04 19:01:48.000000000","message":"Little odd to have \"enabled_protocols\" list when each driver will only support one protocol now... need to think this through.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5ca86726641718b1c84752e1de81ab3e5a51d69a","unresolved":false,"context_lines":[{"line_number":2276,"context_line":"        data \u003d {}"},{"line_number":2277,"context_line":""},{"line_number":2278,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027IBM\u0027"},{"line_number":2279,"context_line":"        data[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":2280,"context_line":"        data[\u0027storage_protocol\u0027] \u003d list(self._state[\u0027enabled_protocols\u0027])"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d 0  # To be overwritten"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_56ae0299","line":2279,"in_reply_to":"da85f559_95aead83","updated":"2015-11-10 20:36:00.000000000","message":"Yea, my understanding was that previously the \"enabled_protocols\" were used to decide if we were able to support the protocol that was selected.  Now that each driver only supports one protocol I think we can refactor that we just ensure that there\u0027s a node supporting the protocol of interest during the initialization and then don\u0027t use enabled_protocols afterwards.\n\nUnderstandable if you want to ensure that the rest of this is working first but I think that change makes sense as part of this patch.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":2276,"context_line":"        data \u003d {}"},{"line_number":2277,"context_line":""},{"line_number":2278,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027IBM\u0027"},{"line_number":2279,"context_line":"        data[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":2280,"context_line":"        data[\u0027storage_protocol\u0027] \u003d list(self._state[\u0027enabled_protocols\u0027])"},{"line_number":2281,"context_line":""},{"line_number":2282,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d 0  # To be overwritten"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_95aead83","line":2279,"in_reply_to":"fa80f949_444e8a97","updated":"2015-11-10 20:09:27.000000000","message":"So \u0027enabled_protocols\u0027 might be needed in this common file since the Helpers class uses it to set a few things. But for the other files (iSCSI/FC), I am thinking we can probably update them. I am waiting to see if any extra work needs to be done in regards to getting this patch to pass the CI before I go to far into it though.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    replication as storwize_rep)"},{"line_number":39,"context_line":"from cinder.volume import driver"},{"line_number":40,"context_line":"from cinder.volume import qos_specs"},{"line_number":41,"context_line":"from cinder.volume import utils as n_utils"},{"line_number":42,"context_line":"from cinder.volume import volume_types"},{"line_number":43,"context_line":"INTERVAL_1_SEC \u003d 1"},{"line_number":44,"context_line":"DEFAULT_TIMEOUT \u003d 15"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_bfda8749","line":41,"updated":"2015-11-18 19:25:02.000000000","message":"Might want to change this again to just be utils since there aren\u0027t multiple utils you are importing.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":79,"context_line":"               default\u003d120,"},{"line_number":80,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":81,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":82,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":84,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":85,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_7eb77d86","line":82,"updated":"2015-11-17 21:57:03.000000000","message":"Think this should be either removed or deprecated?  I would expect that a user in the future would change cinder.conf to be:\n\nvolume_driver \u003d cinder.volume.drivers.ibm.storwize_svc.storwize_svc_fc.StorwizeSVCFCDriver\n\nas opposed to using this config","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"               default\u003d120,"},{"line_number":80,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":81,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":82,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":84,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":85,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_6a14264c","line":82,"in_reply_to":"ba8a016a_7eb77d86","updated":"2015-11-19 17:57:20.000000000","message":"Looking into this. I am gonna see how simple it would be to remove this.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":84,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":85,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"},{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_3e79f5c8","line":85,"updated":"2015-11-17 21:57:03.000000000","message":"This config is iSCSI specific and should be moved into the iSCSI driver","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":84,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":85,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"},{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_0174d165","line":85,"in_reply_to":"ba8a016a_3e79f5c8","updated":"2015-11-19 17:57:20.000000000","message":"Oops. Must have snuck back in after being moved to iSCSI driver.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":89,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_multipath_enabled\u0027,"},{"line_number":91,"context_line":"                default\u003dFalse,"},{"line_number":92,"context_line":"                help\u003d\u0027Connect with multipath (FC only; iSCSI multipath is \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_d93003a1","line":89,"updated":"2015-11-17 21:57:03.000000000","message":"Remove this (you moved it into the FC driver which I agree with)","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_iscsi_chap_enabled\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":89,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_multipath_enabled\u0027,"},{"line_number":91,"context_line":"                default\u003dFalse,"},{"line_number":92,"context_line":"                help\u003d\u0027Connect with multipath (FC only; iSCSI multipath is \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_ce4a78c5","line":89,"in_reply_to":"ba8a016a_d93003a1","updated":"2015-11-19 17:57:20.000000000","message":"Another one snuck back in.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":81,"context_line":"               default\u003d120,"},{"line_number":82,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":83,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":84,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":86,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_c27b7928","line":84,"updated":"2015-11-20 18:47:25.000000000","message":"We gotta get rid of this setting - it doesn\u0027t make sense to use the iSCSI driver with protocol\u003dFC...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"               default\u003d120,"},{"line_number":82,"context_line":"               min\u003d1, max\u003d600,"},{"line_number":83,"context_line":"               help\u003d\u0027Maximum number of seconds to wait for FlashCopy to be \u0027"},{"line_number":84,"context_line":"                    \u0027prepared.\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_connection_protocol\u0027,"},{"line_number":86,"context_line":"               default\u003d\u0027iSCSI\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027Connection protocol (iSCSI/FC)\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_ae9e14b6","line":84,"in_reply_to":"ba8a016a_c27b7928","updated":"2015-11-23 19:55:25.000000000","message":"WIP","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":1610,"context_line":"                              driver.MigrateVD, driver.ReplicaVD,"},{"line_number":1611,"context_line":"                              driver.ConsistencyGroupVD,"},{"line_number":1612,"context_line":"                              driver.CloneableImageVD,"},{"line_number":1613,"context_line":"                              driver.TransferVD):"},{"line_number":1614,"context_line":"    \"\"\"IBM Storwize V7000 and SVC iSCSI/FC volume driver."},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    Version history:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_22028570","line":1613,"updated":"2015-11-20 18:47:25.000000000","message":"Probably update the description to say it\u0027s the abstract base class or something along the lines indicating this is not the real driver you want to instantiate","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                         \u0027authentication: set either san_password or \u0027"},{"line_number":1732,"context_line":"                         \u0027san_private_key option.\u0027))"},{"line_number":1733,"context_line":""},{"line_number":1734,"context_line":"        opts \u003d self._helpers.build_default_opts(self.configuration)"},{"line_number":1735,"context_line":"        self._helpers.check_vdisk_opts(self._state, opts)"},{"line_number":1736,"context_line":""},{"line_number":1737,"context_line":"        LOG.debug(\u0027leave: check_for_setup_error\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_a2a9957d","line":1734,"updated":"2015-11-20 18:47:25.000000000","message":"Part of this checks that the protocol we selected can be carried out by one of the nodes, but now that we\u0027re splitting into two drivers we want to look into how this is carried out and make sure we\u0027re giving right results as well as good error message...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"                         \u0027authentication: set either san_password or \u0027"},{"line_number":1732,"context_line":"                         \u0027san_private_key option.\u0027))"},{"line_number":1733,"context_line":""},{"line_number":1734,"context_line":"        opts \u003d self._helpers.build_default_opts(self.configuration)"},{"line_number":1735,"context_line":"        self._helpers.check_vdisk_opts(self._state, opts)"},{"line_number":1736,"context_line":""},{"line_number":1737,"context_line":"        LOG.debug(\u0027leave: check_for_setup_error\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_6e710ca8","line":1734,"in_reply_to":"ba8a016a_a2a9957d","updated":"2015-11-23 19:55:25.000000000","message":"WIP","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"60b27b38f6abad106984af0e107f216bb649b97d","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                         \u0027by %(driv)s driver: valid values are \u0027"},{"line_number":832,"context_line":"                         \u0027%(enabled)s.\u0027)"},{"line_number":833,"context_line":"                % {\u0027prot\u0027: opts[\u0027protocol\u0027],"},{"line_number":834,"context_line":"                   \u0027driv\u0027: \u0027,\u0027.join(state[\u0027enabled_protocols\u0027]),"},{"line_number":835,"context_line":"                   \u0027enabled\u0027: \u0027,\u0027.join(state[\u0027enabled_protocols\u0027])})"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        if opts[\u0027iogrp\u0027] not in state[\u0027available_iogrps\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_2d7c7fb4","line":834,"updated":"2015-12-01 17:27:42.000000000","message":"Wouldn\u0027t driv and enabled be the same variable(s)? I\u0027m just curious why driv is used in the exception message.","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"8ecaba62245a41d1ea7fd2279a854468098ac1bb","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                         \u0027by %(driv)s driver: valid values are \u0027"},{"line_number":832,"context_line":"                         \u0027%(enabled)s.\u0027)"},{"line_number":833,"context_line":"                % {\u0027prot\u0027: opts[\u0027protocol\u0027],"},{"line_number":834,"context_line":"                   \u0027driv\u0027: \u0027,\u0027.join(state[\u0027enabled_protocols\u0027]),"},{"line_number":835,"context_line":"                   \u0027enabled\u0027: \u0027,\u0027.join(state[\u0027enabled_protocols\u0027])})"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        if opts[\u0027iogrp\u0027] not in state[\u0027available_iogrps\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_f33976a4","line":834,"in_reply_to":"9a8ffd7b_2d7c7fb4","updated":"2015-12-01 17:53:53.000000000","message":"Good catch, went through this part a bit too fast.","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":841,"context_line":"                         \u0027also be set (not equal to -1).\u0027))"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        # Check that the requested protocol is enabled"},{"line_number":844,"context_line":"        if opts[\u0027protocol\u0027] not in state[\u0027enabled_protocols\u0027]:"},{"line_number":845,"context_line":"            raise exception.InvalidInput("},{"line_number":846,"context_line":"                reason\u003d_(\u0027Illegal protocol value %(prot)s specified \u0027"},{"line_number":847,"context_line":"                         \u0027by %(enabled)s driver: valid values are \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_87e5f509","line":844,"updated":"2015-12-02 22:22:41.000000000","message":"Think we should improve this error message.","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            dict_[key] \u003d [obj, value]"},{"line_number":1613,"context_line":"        return dict_"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"class StorwizeSVCCommonDriver(san.SanDriver,"},{"line_number":1617,"context_line":"                              driver.ManageableVD,"},{"line_number":1618,"context_line":"                              driver.ExtendVD, driver.SnapshotVD,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_c7421d0f","line":1615,"updated":"2015-12-02 22:22:41.000000000","message":"Sorry I didn\u0027t mention it earlier but I\u0027m not a big fan of us now having the common driver, as well as all the helper functions in the same class.  Seems like it\u0027d be better to have them in separate classes (i.e. moving the helper stuff into storwize_svc_helpers.py.\n\nBut I know there\u0027s a lot happening in this patch so could be a follow up","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"8e38f3be13ac32b5879a64295396df0e53ddc2bd","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"        data \u003d {}"},{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027IBM\u0027"},{"line_number":2330,"context_line":"        data[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":2331,"context_line":"        data[\u0027storage_protocol\u0027] \u003d list(self._state[\u0027enabled_protocols\u0027])"},{"line_number":2332,"context_line":""},{"line_number":2333,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d 0  # To be overwritten"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_c7ac5da1","line":2330,"updated":"2015-12-02 22:22:41.000000000","message":"Think this should be changed as well - we\u0027re only using one protocol now, self.protocol","commit_id":"cd2a431e8cbdb88c727ba3a2fc4f2d3a34953617"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5edf7663b73058ef119d413bc10f6f5d28b2ba55","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_inner)"},{"line_number":981,"context_line":"        timer.start(interval\u003dinterval).wait()"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def get_vdisk_params(self, config, state, type_id, protocol \u003d \u0027iSCSI\u0027,"},{"line_number":984,"context_line":"                         volume_type\u003dNone, volume_metadata\u003dNone):"},{"line_number":985,"context_line":"        \"\"\"Return the parameters for creating the vdisk."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_39c71a14","line":982,"updated":"2015-12-03 22:49:52.000000000","message":"Does this need to be a default arguement?  Would\u0027vbe thought we\u0027d always pass this in....","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"f903564c30b6879922e4ea9d9ff772922c7b7161","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_inner)"},{"line_number":981,"context_line":"        timer.start(interval\u003dinterval).wait()"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def get_vdisk_params(self, config, state, type_id, protocol \u003d \u0027iSCSI\u0027,"},{"line_number":984,"context_line":"                         volume_type\u003dNone, volume_metadata\u003dNone):"},{"line_number":985,"context_line":"        \"\"\"Return the parameters for creating the vdisk."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_ccb06be0","line":982,"in_reply_to":"7a740942_39c71a14","updated":"2015-12-04 15:48:14.000000000","message":"Currently it does, since before we removed storwize_svc_connection_protocol whenever we tried to make an instance of build_default_opts, it was expected for protocol to be defined. So for the instances of opts that do not actively use or check protocol we set the value to \u0027iSCSI\u0027 so that the code will be able to access the parts of opts it actually wants. Otherwise if protocol is being checked, we always pass in self.protocol that is being defined in StorwizeSVCCommonDriver. \n\nI can look into seeing if I can pass in self.protocol every time we try to create an instance of build_default_opts, but currently some instances do not have access to self.protocol. Which is fine since those instances do not do anything with protocol anyway from what I found.","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5f7c80ab21376172eddc3de64394a2c116a6dee2","unresolved":false,"context_lines":[{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_inner)"},{"line_number":981,"context_line":"        timer.start(interval\u003dinterval).wait()"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def get_vdisk_params(self, config, state, type_id, protocol \u003d \u0027iSCSI\u0027,"},{"line_number":984,"context_line":"                         volume_type\u003dNone, volume_metadata\u003dNone):"},{"line_number":985,"context_line":"        \"\"\"Return the parameters for creating the vdisk."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a740942_d8a8cc8f","line":982,"in_reply_to":"7a740942_ccb06be0","updated":"2015-12-07 21:13:10.000000000","message":"Alright, I think I get what you\u0027re saying.  I\u0027m not a fan of using a real protocol in this case when we\u0027re not actually using protocol.  We should probably use something like None as default, but I\u0027m fine with that being handled in a follow up patch","commit_id":"1f8500e30758de90dd7ea5f62034f6e4e0ce1b75"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":853,"context_line":"            raise exception.InvalidInput("},{"line_number":854,"context_line":"                reason\u003d_(\u0027The storage device does not support %(prot)s. \u0027"},{"line_number":855,"context_line":"                         \u0027Please configure the device to support %(prot)s or \u0027"},{"line_number":856,"context_line":"                         \u0027switch to a driver using a different protocol.\u0027)"},{"line_number":857,"context_line":"                % {\u0027prot\u0027: opts[\u0027protocol\u0027]})"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"        if opts[\u0027iogrp\u0027] not in state[\u0027available_iogrps\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_f7560029","line":856,"updated":"2015-12-20 02:17:19.000000000","message":"Not a huge fan of this change.  I think it would be good to still listed the enabled_protocols and note that they need to switch to the driver for one of the enabled protocols.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":853,"context_line":"            raise exception.InvalidInput("},{"line_number":854,"context_line":"                reason\u003d_(\u0027The storage device does not support %(prot)s. \u0027"},{"line_number":855,"context_line":"                         \u0027Please configure the device to support %(prot)s or \u0027"},{"line_number":856,"context_line":"                         \u0027switch to a driver using a different protocol.\u0027)"},{"line_number":857,"context_line":"                % {\u0027prot\u0027: opts[\u0027protocol\u0027]})"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"        if opts[\u0027iogrp\u0027] not in state[\u0027available_iogrps\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_f0b3234b","line":856,"in_reply_to":"3a7e1126_f7560029","updated":"2015-12-21 17:19:44.000000000","message":"As discussed, we will leave this as it is for now.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":1651,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":1652,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1653,"context_line":"    2.0 - Code refactor, split init file and placed shared methods between"},{"line_number":1654,"context_line":"          FC and iSCSI within this common class"},{"line_number":1655,"context_line":"    \"\"\""},{"line_number":1656,"context_line":""},{"line_number":1657,"context_line":"    VERSION \u003d \"2.0\""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_621ed060","line":1654,"updated":"2015-12-20 02:17:19.000000000","message":"Kind-of a nit but can we word this so that we can have the same comment here in all the files.  I think that is better.  I.E.\n\nCode refactor, split init file and placed shared methods for FC and iSCSI within the StorwizeSVCCommonDriver class.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":1651,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":1652,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1653,"context_line":"    2.0 - Code refactor, split init file and placed shared methods between"},{"line_number":1654,"context_line":"          FC and iSCSI within this common class"},{"line_number":1655,"context_line":"    \"\"\""},{"line_number":1656,"context_line":""},{"line_number":1657,"context_line":"    VERSION \u003d \"2.0\""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_b0883b72","line":1654,"in_reply_to":"3a7e1126_621ed060","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bd04cee742cf542d27ccd2654a9e3a989da4dd08","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # storwize_svc_npiv_compatibility_mode should always be set to True."},{"line_number":118,"context_line":"        # It will be deprecated and removed in M release. If the options is"},{"line_number":119,"context_line":"        # set to False, we\u0027ll warn the operator."},{"line_number":120,"context_line":"        msg \u003d _LW(\"The option storwize_svc_npiv_compatibility_mode will be \""},{"line_number":121,"context_line":"                  \"deprecated and not used. It will be removed in the \""},{"line_number":122,"context_line":"                  \"M release.\")"},{"line_number":123,"context_line":"        if not self.configuration.storwize_svc_npiv_compatibility_mode:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_a0fe4136","line":120,"updated":"2015-10-29 22:12:44.000000000","message":"Remove?","commit_id":"fc3ee0da119705bd3e270a87e50e12b1f3e8c52f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bd04cee742cf542d27ccd2654a9e3a989da4dd08","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            # ports, depending on the value of the"},{"line_number":360,"context_line":"            # storwize_svc_npiv_compatibity_mode flag."},{"line_number":361,"context_line":"            if len(conn_wwpns) \u003d\u003d 0:"},{"line_number":362,"context_line":"                # TODO(xqli): Remove storwize_svc_npiv_compatibility_mode"},{"line_number":363,"context_line":"                # in M release."},{"line_number":364,"context_line":"                npiv_compat \u003d (self.configuration."},{"line_number":365,"context_line":"                               storwize_svc_npiv_compatibility_mode)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_009615f0","line":362,"updated":"2015-10-29 22:12:44.000000000","message":"Remove?","commit_id":"fc3ee0da119705bd3e270a87e50e12b1f3e8c52f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":80,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_3f86f365","line":79,"updated":"2015-11-04 19:01:48.000000000","message":"Should be able to grab this from parent","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":80,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_9478eff3","line":79,"in_reply_to":"fa80f949_3f86f365","updated":"2015-11-10 20:09:27.000000000","message":"We decided that because each file could be changed in the future, therefore have different version numbers, we would leave it independent of the other files version.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5ca86726641718b1c84752e1de81ab3e5a51d69a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":77,"context_line":"    \"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":80,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_56b362e9","line":79,"in_reply_to":"fa80f949_9478eff3","updated":"2015-11-10 20:36:00.000000000","message":"Sorry for the confusion - I\u0027m not talking about the VERSION, but the VDISKCOPYOPS_INTERVAL","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":83,"context_line":"        super(StorwizeSVCFCDriver, self).__init__(*args, **kwargs)"},{"line_number":84,"context_line":"        self.configuration.append_config_values("},{"line_number":85,"context_line":"            storwize_common.storwize_svc_opts)"},{"line_number":86,"context_line":"        self._helpers \u003d storwize_common.StorwizeHelpers(self._run_ssh)"},{"line_number":87,"context_line":"        self._vdiskcopyops \u003d {}"},{"line_number":88,"context_line":"        self._vdiskcopyops_loop \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_3f30339e","line":85,"updated":"2015-11-04 19:01:48.000000000","message":"Shouldn\u0027t need any of this since it\u0027s getting run in the parent class...","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":83,"context_line":"        super(StorwizeSVCFCDriver, self).__init__(*args, **kwargs)"},{"line_number":84,"context_line":"        self.configuration.append_config_values("},{"line_number":85,"context_line":"            storwize_common.storwize_svc_opts)"},{"line_number":86,"context_line":"        self._helpers \u003d storwize_common.StorwizeHelpers(self._run_ssh)"},{"line_number":87,"context_line":"        self._vdiskcopyops \u003d {}"},{"line_number":88,"context_line":"        self._vdiskcopyops_loop \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_d4b19790","line":85,"in_reply_to":"fa80f949_3f30339e","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        time.sleep(1)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def do_setup(self, ctxt):"},{"line_number":103,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""},{"line_number":104,"context_line":"        LOG.debug(\u0027enter: do_setup\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # storwize_svc_npiv_compatibility_mode should always be set to True."}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_bfc66347","line":103,"updated":"2015-11-04 19:01:48.000000000","message":"Should be able to move most of this stuff into the common base driver, and then in this method call super() and just do the iSCSI/FC specfic stuff, which should only be something like:\n\nself.replication \u003d storwize_rep.StorwizeSVCReplication.factory(self)\n\n# Iterate through nodes checking protocol stuff","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        time.sleep(1)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def do_setup(self, ctxt):"},{"line_number":103,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""},{"line_number":104,"context_line":"        LOG.debug(\u0027enter: do_setup\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # storwize_svc_npiv_compatibility_mode should always be set to True."}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_010dcd8f","line":103,"in_reply_to":"fa80f949_bfc66347","updated":"2015-11-10 20:09:27.000000000","message":"WIP","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        to_delete \u003d []"},{"line_number":147,"context_line":"        for k, node in self._state[\u0027storage_nodes\u0027].items():"},{"line_number":148,"context_line":"            if ((len(node[\u0027ipv4\u0027]) or len(node[\u0027ipv6\u0027]))"},{"line_number":149,"context_line":"                    and len(node[\u0027iscsi_name\u0027])):"},{"line_number":150,"context_line":"                node[\u0027enabled_protocols\u0027].append(\u0027iSCSI\u0027)"},{"line_number":151,"context_line":"                self._state[\u0027enabled_protocols\u0027].add(\u0027iSCSI\u0027)"},{"line_number":152,"context_line":"            if len(node[\u0027WWPN\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_7f4a3bae","line":149,"updated":"2015-11-04 19:01:48.000000000","message":"Not sure we want to add anything about enabled protocol here.  Just check if the FC part is supported and if not we should probably throw some error.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def validate_connector(self, connector):"},{"line_number":190,"context_line":"        \"\"\"Check connector for at least one enabled protocol (iSCSI/FC).\"\"\""},{"line_number":191,"context_line":"        valid \u003d False"},{"line_number":192,"context_line":"        if \u0027FC\u0027 in self._state[\u0027enabled_protocols\u0027] and \u0027wwpns\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_1f4bef88","line":189,"updated":"2015-11-04 19:01:48.000000000","message":"Remove iSCSI from here, plus I don\u0027t think we should be dealing with \u0027enabled_protocols\u0027 anymore","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                missing\u003d\u0027wwpns\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":201,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"},{"line_number":202,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":203,"context_line":"        \"\"\"Perform necessary work to make an iSCSI/FC connection."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_915113db","line":201,"updated":"2015-11-04 19:01:48.000000000","message":"Would be nice to combine the common behavior for FC and iSCSI\u0027s initialize/terminate_connection into the base method if possible","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                missing\u003d\u0027wwpns\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":201,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"},{"line_number":202,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":203,"context_line":"        \"\"\"Perform necessary work to make an iSCSI/FC connection."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_954f8dbc","line":201,"in_reply_to":"fa80f949_915113db","updated":"2015-11-10 20:09:27.000000000","message":"Looking into this.","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        vol_opts \u003d self._get_vdisk_params(volume[\u0027volume_type_id\u0027])"},{"line_number":219,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        # Delete irrelevant connection information that later could result"},{"line_number":222,"context_line":"        # in unwanted behaviour. For example, if FC is used yet the hosts"},{"line_number":223,"context_line":"        # return iSCSI data, the driver will try to create the iSCSI connection"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_df448775","line":220,"updated":"2015-11-04 19:01:48.000000000","message":"Should double check but I\u0027m not sure we need this \u0027pop\u0027ing behavior anymore","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        vol_opts \u003d self._get_vdisk_params(volume[\u0027volume_type_id\u0027])"},{"line_number":219,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        # Delete irrelevant connection information that later could result"},{"line_number":222,"context_line":"        # in unwanted behaviour. For example, if FC is used yet the hosts"},{"line_number":223,"context_line":"        # return iSCSI data, the driver will try to create the iSCSI connection"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_39530ce4","line":220,"in_reply_to":"fa80f949_df448775","updated":"2015-11-10 20:09:27.000000000","message":"In progress","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            # Get preferred node and other nodes in I/O group"},{"line_number":259,"context_line":"            preferred_node_entry \u003d None"},{"line_number":260,"context_line":"            io_group_nodes \u003d []"},{"line_number":261,"context_line":"            for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":262,"context_line":"                if vol_opts[\u0027protocol\u0027] not in node[\u0027enabled_protocols\u0027]:"},{"line_number":263,"context_line":"                    continue"},{"line_number":264,"context_line":"                if node[\u0027id\u0027] \u003d\u003d preferred_node:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_117203ae","line":261,"updated":"2015-11-04 19:01:48.000000000","message":"Again, think we\u0027ll want to have changed the \"enabled_protocols\" flow","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":364,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"},{"line_number":365,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":366,"context_line":"        \"\"\"Cleanup after an iSCSI connection has been terminated."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        When we clean up a terminated connection between a given connector"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_91ba7309","line":365,"updated":"2015-11-04 19:01:48.000000000","message":"FC connection, not iSCSI","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":364,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"},{"line_number":365,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":366,"context_line":"        \"\"\"Cleanup after an iSCSI connection has been terminated."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        When we clean up a terminated connection between a given connector"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_54192787","line":365,"in_reply_to":"fa80f949_91ba7309","updated":"2015-11-10 20:09:27.000000000","message":"Done","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_log import log as logging"},{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_7fb17f46","line":39,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_log import log as logging"},{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_7f8e292f","line":39,"in_reply_to":"ba8a016a_7fb17f46","updated":"2015-11-19 17:57:20.000000000","message":"Ugh. Looks like I need to start double checking that my changes actually save.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"},{"line_number":43,"context_line":"from cinder import exception"},{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_df7e6b69","line":42,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"},{"line_number":43,"context_line":"from cinder import exception"},{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_3fb661f9","line":42,"in_reply_to":"ba8a016a_df7e6b69","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"},{"line_number":46,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":47,"context_line":"    replication as storwize_rep)"},{"line_number":48,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":49,"context_line":"    storwize_svc_common as storwize_common)"},{"line_number":50,"context_line":"from cinder.zonemanager import utils as fczm_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_9faea3e4","line":47,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"},{"line_number":46,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":47,"context_line":"    replication as storwize_rep)"},{"line_number":48,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":49,"context_line":"    storwize_svc_common as storwize_common)"},{"line_number":50,"context_line":"from cinder.zonemanager import utils as fczm_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_7fc06950","line":47,"in_reply_to":"ba8a016a_9faea3e4","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        # Setup common functionality between FC and iSCSI"},{"line_number":97,"context_line":"        super(StorwizeSVCFCDriver, self).do_setup(ctxt)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Add the iSCSI IP addresses and WWPNs to the storage node info"},{"line_number":100,"context_line":"        self._helpers.add_iscsi_ip_addrs(self._state[\u0027storage_nodes\u0027])"},{"line_number":101,"context_line":"        self._helpers.add_fc_wwpns(self._state[\u0027storage_nodes\u0027])"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_f959475b","line":99,"updated":"2015-11-17 21:57:03.000000000","message":"Don\u0027t expect we\u0027d need to add iscsi stuff for FC driver.  This seems to be the same as the do_setup in the iSCSI driver.  I would expect we should remove lines 100 and 107-110 from this driver, and only focus on FC config for this driver.\n\nOther option would be to move this common code to the common driver, which would allow us to tell the user if they should be using the iSCSI driver instead of FC or something like that...","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        # Setup common functionality between FC and iSCSI"},{"line_number":97,"context_line":"        super(StorwizeSVCFCDriver, self).do_setup(ctxt)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Add the iSCSI IP addresses and WWPNs to the storage node info"},{"line_number":100,"context_line":"        self._helpers.add_iscsi_ip_addrs(self._state[\u0027storage_nodes\u0027])"},{"line_number":101,"context_line":"        self._helpers.add_fc_wwpns(self._state[\u0027storage_nodes\u0027])"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_6eba6c70","line":99,"in_reply_to":"ba8a016a_f959475b","updated":"2015-11-19 17:57:20.000000000","message":"Done.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def validate_connector(self, connector):"},{"line_number":128,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":129,"context_line":"        valid \u003d False"},{"line_number":130,"context_line":"        if \u0027wwpns\u0027 in connector:"},{"line_number":131,"context_line":"            valid \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_ebbace09","line":128,"updated":"2015-11-17 21:57:03.000000000","message":"With the new flow lines 129-132 can just become:\n\n if \u0027wwpns\u0027 in connector:","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def validate_connector(self, connector):"},{"line_number":128,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":129,"context_line":"        valid \u003d False"},{"line_number":130,"context_line":"        if \u0027wwpns\u0027 in connector:"},{"line_number":131,"context_line":"            valid \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_213d2ac4","line":128,"in_reply_to":"ba8a016a_ebbace09","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        if \u0027host\u0027 in connector:"},{"line_number":293,"context_line":"            # get host according to FC protocol"},{"line_number":294,"context_line":"            vol_opts \u003d self._get_vdisk_params(volume[\u0027volume_type_id\u0027])"},{"line_number":295,"context_line":"            connector \u003d connector.copy()"},{"line_number":296,"context_line":"            if vol_opts[\u0027protocol\u0027] \u003d\u003d \u0027FC\u0027:"},{"line_number":297,"context_line":"                connector.pop(\u0027initiator\u0027, None)"},{"line_number":298,"context_line":"                info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_cb1b4a1a","line":295,"updated":"2015-11-17 21:57:03.000000000","message":"Shouldn\u0027t this always be FC?","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        if \u0027host\u0027 in connector:"},{"line_number":293,"context_line":"            # get host according to FC protocol"},{"line_number":294,"context_line":"            vol_opts \u003d self._get_vdisk_params(volume[\u0027volume_type_id\u0027])"},{"line_number":295,"context_line":"            connector \u003d connector.copy()"},{"line_number":296,"context_line":"            if vol_opts[\u0027protocol\u0027] \u003d\u003d \u0027FC\u0027:"},{"line_number":297,"context_line":"                connector.pop(\u0027initiator\u0027, None)"},{"line_number":298,"context_line":"                info \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_61f1f200","line":295,"in_reply_to":"ba8a016a_cb1b4a1a","updated":"2015-11-19 17:57:20.000000000","message":"Good catch.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":"Volume driver for IBM Storwize family and SVC storage systems."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Notes:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_429469e7","line":17,"updated":"2015-11-20 18:47:25.000000000","message":"Update this to be clear this is the FC storwize driver..","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def validate_connector(self, connector):"},{"line_number":118,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            LOG.error(_LE(\u0027The connector does not contain the required \u0027"},{"line_number":123,"context_line":"                          \u0027information.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_62164da9","line":120,"updated":"2015-11-20 18:47:25.000000000","message":"Get rid of this blank line","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def validate_connector(self, connector):"},{"line_number":118,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            LOG.error(_LE(\u0027The connector does not contain the required \u0027"},{"line_number":123,"context_line":"                          \u0027information.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_2cc917ad","line":120,"in_reply_to":"ba8a016a_62164da9","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        4. Return the connection information for relevant nodes (in the"},{"line_number":138,"context_line":"           proper I/O group)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        \"\"\""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        LOG.debug(\u0027enter: initialize_connection: volume %(vol)s with connector\u0027"},{"line_number":143,"context_line":"                  \u0027 %(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_a21c35c2","line":140,"updated":"2015-11-20 18:47:25.000000000","message":"Get rid of these blank lines","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        4. Return the connection information for relevant nodes (in the"},{"line_number":138,"context_line":"           proper I/O group)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        \"\"\""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        LOG.debug(\u0027enter: initialize_connection: volume %(vol)s with connector\u0027"},{"line_number":143,"context_line":"                  \u0027 %(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_cce3ab32","line":140,"in_reply_to":"ba8a016a_a21c35c2","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":199,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":200,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"            type_str \u003d \u0027fibre_channel\u0027"},{"line_number":203,"context_line":"            conn_wwpns \u003d self._helpers.get_conn_fc_wwpns(host_name)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_e250fd60","line":201,"updated":"2015-11-20 18:47:25.000000000","message":"always will be \u003d \u0027fibre_channel\u0027...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":199,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":200,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"            type_str \u003d \u0027fibre_channel\u0027"},{"line_number":203,"context_line":"            conn_wwpns \u003d self._helpers.get_conn_fc_wwpns(host_name)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_8cd4c347","line":201,"in_reply_to":"ba8a016a_e250fd60","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"60b27b38f6abad106984af0e107f216bb649b97d","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, ctxt):"},{"line_number":91,"context_line":"        # Set protocol"},{"line_number":92,"context_line":"        self.protocol \u003d \u0027FC\u0027"},{"line_number":93,"context_line":"        # Setup common functionality between FC"},{"line_number":94,"context_line":"        super(StorwizeSVCFCDriver, self).do_setup(ctxt)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_2de0ff95","line":92,"updated":"2015-12-01 17:27:42.000000000","message":"See comment in iSCSI file","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"8ecaba62245a41d1ea7fd2279a854468098ac1bb","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, ctxt):"},{"line_number":91,"context_line":"        # Set protocol"},{"line_number":92,"context_line":"        self.protocol \u003d \u0027FC\u0027"},{"line_number":93,"context_line":"        # Setup common functionality between FC"},{"line_number":94,"context_line":"        super(StorwizeSVCFCDriver, self).do_setup(ctxt)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_33505ed4","line":92,"in_reply_to":"9a8ffd7b_2de0ff95","updated":"2015-12-01 17:53:53.000000000","message":"Done","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":79,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":80,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_9de468e0","line":81,"updated":"2015-12-20 02:17:19.000000000","message":"As noted in the other file, we should use the same text in all the files here.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":79,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":80,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_757ac889","line":81,"in_reply_to":"3a7e1126_9de468e0","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                node[\u0027enabled_protocols\u0027].append(\u0027FC\u0027)"},{"line_number":106,"context_line":"                self._state[\u0027enabled_protocols\u0027].add(\u0027FC\u0027)"},{"line_number":107,"context_line":"            if not len(node[\u0027enabled_protocols\u0027]):"},{"line_number":108,"context_line":"                to_delete.append(k)"},{"line_number":109,"context_line":"        for delkey in to_delete:"},{"line_number":110,"context_line":"            del self._state[\u0027storage_nodes\u0027][delkey]"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_5dd36004","line":108,"updated":"2015-12-20 02:17:19.000000000","message":"It would be good to have an info message here while we are doing a refactor indicating the nodes to be removed.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                node[\u0027enabled_protocols\u0027].append(\u0027FC\u0027)"},{"line_number":106,"context_line":"                self._state[\u0027enabled_protocols\u0027].add(\u0027FC\u0027)"},{"line_number":107,"context_line":"            if not len(node[\u0027enabled_protocols\u0027]):"},{"line_number":108,"context_line":"                to_delete.append(k)"},{"line_number":109,"context_line":"        for delkey in to_delete:"},{"line_number":110,"context_line":"            del self._state[\u0027storage_nodes\u0027][delkey]"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_106cafcc","line":108,"in_reply_to":"3a7e1126_5dd36004","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def validate_connector(self, connector):"},{"line_number":121,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":124,"context_line":"            LOG.error(_LE(\u0027The connector does not contain the required \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_7dd09cf6","line":121,"range":{"start_line":121,"start_character":31,"end_line":121,"end_character":33},"updated":"2015-12-20 02:17:19.000000000","message":"at -\u003e a FC adapter ?","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def validate_connector(self, connector):"},{"line_number":121,"context_line":"        \"\"\"Check connector for at FC to be enabled.\"\"\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if \u0027wwpns\u0027 not in connector:"},{"line_number":124,"context_line":"            LOG.error(_LE(\u0027The connector does not contain the required \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_b5459043","line":121,"range":{"start_line":121,"start_character":31,"end_line":121,"end_character":33},"in_reply_to":"3a7e1126_7dd09cf6","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"5611aedc2c8c0a94ce89230734f7ebbbf14279ef","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":79,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_9f97df8f","line":78,"updated":"2015-11-04 19:01:48.000000000","message":"Should be able to grab from parent","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"76c5fcfb3118bd49df19c84bb501cbdfd3ba086b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":79,"context_line":"    VDISKCOPYOPS_INTERVAL \u003d 600"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_741c6b77","line":78,"in_reply_to":"fa80f949_9f97df8f","updated":"2015-11-10 20:09:27.000000000","message":"See FC comment on the same line/topic","commit_id":"b94f356c82c08286f87fae133e24b378959a7362"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_log import log as logging"},{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_1ff073fd","line":39,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_log import log as logging"},{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_5f92454d","line":39,"in_reply_to":"ba8a016a_1ff073fd","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"},{"line_number":43,"context_line":"from cinder import exception"},{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_dff50bed","line":42,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from oslo_service import loopingcall"},{"line_number":40,"context_line":"from oslo_utils import excutils"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"from cinder import context"},{"line_number":43,"context_line":"from cinder import exception"},{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_bf701141","line":42,"in_reply_to":"ba8a016a_dff50bed","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1efb79ea479291de7898574a4f751e9a965384d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"},{"line_number":46,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":47,"context_line":"    replication as storwize_rep)"},{"line_number":48,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":49,"context_line":"    storwize_svc_common as storwize_common)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_7fdf3f69","line":47,"updated":"2015-11-18 19:25:02.000000000","message":"Imported, but unused.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":45,"context_line":"from cinder import utils"},{"line_number":46,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":47,"context_line":"    replication as storwize_rep)"},{"line_number":48,"context_line":"from cinder.volume.drivers.ibm.storwize_svc import ("},{"line_number":49,"context_line":"    storwize_svc_common as storwize_common)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_9f750d33","line":47,"in_reply_to":"ba8a016a_7fdf3f69","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def validate_connector(self, connector):"},{"line_number":125,"context_line":"        \"\"\"Check connector for at least one enabled iSCSI protocol.\"\"\""},{"line_number":126,"context_line":"        valid \u003d False"},{"line_number":127,"context_line":"        if \u0027initiator\u0027 in connector:"},{"line_number":128,"context_line":"            valid \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_2bcbf673","line":125,"updated":"2015-11-17 21:57:03.000000000","message":"Same comment as for FC","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        LOG.debug(\u0027leave: do_setup\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def validate_connector(self, connector):"},{"line_number":125,"context_line":"        \"\"\"Check connector for at least one enabled iSCSI protocol.\"\"\""},{"line_number":126,"context_line":"        valid \u003d False"},{"line_number":127,"context_line":"        if \u0027initiator\u0027 in connector:"},{"line_number":128,"context_line":"            valid \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_5fb9e5ca","line":125,"in_reply_to":"ba8a016a_2bcbf673","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        return {\u0027driver_volume_type\u0027: type_str, \u0027data\u0027: properties, }"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def _make_initiator_target_map(self, initiator_wwpns, target_wwpns):"},{"line_number":250,"context_line":"        \"\"\"Build a simplistic all-to-all mapping.\"\"\""},{"line_number":251,"context_line":"        i_t_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_8b89c228","line":248,"updated":"2015-11-17 21:57:03.000000000","message":"Not used in this class","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        return {\u0027driver_volume_type\u0027: type_str, \u0027data\u0027: properties, }"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def _make_initiator_target_map(self, initiator_wwpns, target_wwpns):"},{"line_number":250,"context_line":"        \"\"\"Build a simplistic all-to-all mapping.\"\"\""},{"line_number":251,"context_line":"        i_t_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_61f7ddf5","line":248,"in_reply_to":"ba8a016a_8b89c228","updated":"2015-11-19 17:57:20.000000000","message":"Good catch.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"cca05ad1dd7c6c6d850ee77e4f4ac89d7e8dda08","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        if host_name:"},{"line_number":294,"context_line":"            resp \u003d self._helpers.check_host_mapped_vols(host_name)"},{"line_number":295,"context_line":"            if not len(resp):"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"                LOG.info(_LI(\"Need to remove FC Zone, building initiator \""},{"line_number":298,"context_line":"                             \"target map.\"))"},{"line_number":299,"context_line":"                # Build info data structure for zone removing"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_6b86de14","line":296,"updated":"2015-11-17 21:57:03.000000000","message":"Shouldn\u0027t be talking about FC Zoning here.","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"792142ff369c0ca6cd3bec184f92c7c95ca2fdb2","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        if host_name:"},{"line_number":294,"context_line":"            resp \u003d self._helpers.check_host_mapped_vols(host_name)"},{"line_number":295,"context_line":"            if not len(resp):"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"                LOG.info(_LI(\"Need to remove FC Zone, building initiator \""},{"line_number":298,"context_line":"                             \"target map.\"))"},{"line_number":299,"context_line":"                # Build info data structure for zone removing"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_8ccd2db9","line":296,"in_reply_to":"ba8a016a_6b86de14","updated":"2015-11-19 17:57:20.000000000","message":"Done","commit_id":"e8e9a355033771eddd5410b09cdf264dea802cc0"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":"Volume driver for IBM Storwize family and SVC storage systems."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Notes:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_029e6107","line":17,"updated":"2015-11-20 18:47:25.000000000","message":"Update this.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # For each node, check what connection modes it supports.  Delete any"},{"line_number":101,"context_line":"        # nodes that do not support any types (may be partially configured)."},{"line_number":102,"context_line":"        to_delete \u003d []"},{"line_number":103,"context_line":"        for k, node in self._state[\u0027storage_nodes\u0027].items():"},{"line_number":104,"context_line":"            if ((len(node[\u0027ipv4\u0027]) or len(node[\u0027ipv6\u0027]))"},{"line_number":105,"context_line":"                    and len(node[\u0027iscsi_name\u0027])):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_bf252e0b","line":102,"updated":"2015-11-20 18:47:25.000000000","message":"Here I think we want to be deleting any nodes that don\u0027t support iSCSI as opposed to checking that they support some protocol.  Basically we should probably be doing some validation that we have at least some node with an iSCSI connection present during setup or else at least log some warning / error....","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # For each node, check what connection modes it supports.  Delete any"},{"line_number":101,"context_line":"        # nodes that do not support any types (may be partially configured)."},{"line_number":102,"context_line":"        to_delete \u003d []"},{"line_number":103,"context_line":"        for k, node in self._state[\u0027storage_nodes\u0027].items():"},{"line_number":104,"context_line":"            if ((len(node[\u0027ipv4\u0027]) or len(node[\u0027ipv6\u0027]))"},{"line_number":105,"context_line":"                    and len(node[\u0027iscsi_name\u0027])):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_ee8bbc66","line":102,"in_reply_to":"ba8a016a_bf252e0b","updated":"2015-11-23 19:55:25.000000000","message":"WIP","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            # Get preferred node and other nodes in I/O group"},{"line_number":183,"context_line":"            preferred_node_entry \u003d None"},{"line_number":184,"context_line":"            io_group_nodes \u003d []"},{"line_number":185,"context_line":"            for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":186,"context_line":"                if vol_opts[\u0027protocol\u0027] not in node[\u0027enabled_protocols\u0027]:"},{"line_number":187,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_df78322e","line":184,"updated":"2015-11-20 18:47:25.000000000","message":"For efficiency sake I think we probably will want to just get rid of the nodes which don\u0027t support iSCSI here so we\u0027re not always iterating over them as well... Again could possibly be a follow up","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            # Get preferred node and other nodes in I/O group"},{"line_number":183,"context_line":"            preferred_node_entry \u003d None"},{"line_number":184,"context_line":"            io_group_nodes \u003d []"},{"line_number":185,"context_line":"            for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":186,"context_line":"                if vol_opts[\u0027protocol\u0027] not in node[\u0027enabled_protocols\u0027]:"},{"line_number":187,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_73bdbd01","line":184,"in_reply_to":"ba8a016a_df78322e","updated":"2015-11-23 19:55:25.000000000","message":"Something to consider. Will look into it if its something we want to work with now or in a follow up.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                       {\u0027gid\u0027: IO_group, \u0027vol\u0027: volume_name})"},{"line_number":197,"context_line":"                LOG.error(msg)"},{"line_number":198,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            if not preferred_node_entry and not vol_opts[\u0027multipath\u0027]:"},{"line_number":201,"context_line":"                # Get 1st node in I/O group"},{"line_number":202,"context_line":"                preferred_node_entry \u003d io_group_nodes[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_1f2a3a2d","line":199,"updated":"2015-11-20 18:47:25.000000000","message":"I\u0027m removing multipath flag in https://review.openstack.org/#/c/244749/, but looking at this part of the code we\u0027ll probably want to circle back (after both patches land) and look to add preferred_node support when \u0027mulipath\u0027 \u003d False is passed in the connector because although it\u0027s not supposed to, it looks like storwize_svc_multipath_enabled may have been having effect on iSCSI (though it\u0027s not supposed to).\n\nJust something we should take note of and circle back on.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                  \u0027connector %(conn)s\\n properties: %(prop)s\u0027,"},{"line_number":238,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":239,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        return {\u0027driver_volume_type\u0027: type_str, \u0027data\u0027: properties, }"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_ec08f62f","line":240,"updated":"2015-11-20 18:47:25.000000000","message":"Think it makes sense to just hard code \u0027iscsi\u0027 now since that will always be the value of type_str for this driver...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                  \u0027connector %(conn)s\\n properties: %(prop)s\u0027,"},{"line_number":238,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":239,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        return {\u0027driver_volume_type\u0027: type_str, \u0027data\u0027: properties, }"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @utils.synchronized(\u0027storwize-host\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_13a9d1df","line":240,"in_reply_to":"ba8a016a_ec08f62f","updated":"2015-11-23 19:55:25.000000000","message":"Done","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                msg \u003d (_(\u0027terminate_connection: Failed to get host name from\u0027"},{"line_number":266,"context_line":"                         \u0027 connector.\u0027))"},{"line_number":267,"context_line":"                LOG.error(msg)"},{"line_number":268,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":269,"context_line":"        else:"},{"line_number":270,"context_line":"            # See bug #1244257"},{"line_number":271,"context_line":"            host_name \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_2c711ee1","line":268,"updated":"2015-11-20 18:47:25.000000000","message":"Don\u0027t think this else statement actually does anything since we\u0027re overwriting the valiue on line 273.... I guess we don\u0027t need to fix that in this patch if it was already there but seems pretty easy to remove.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                msg \u003d (_(\u0027terminate_connection: Failed to get host name from\u0027"},{"line_number":266,"context_line":"                         \u0027 connector.\u0027))"},{"line_number":267,"context_line":"                LOG.error(msg)"},{"line_number":268,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":269,"context_line":"        else:"},{"line_number":270,"context_line":"            # See bug #1244257"},{"line_number":271,"context_line":"            host_name \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d392699f","line":268,"in_reply_to":"ba8a016a_2c711ee1","updated":"2015-11-23 19:55:25.000000000","message":"Yea I was thinking the same thing, but thought I should keep it in while working on the bigger tasks.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"57b1ebecc630ae3e3a706140cdfbe2dfa4ba9447","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        # Host_name could be none"},{"line_number":277,"context_line":"        if host_name:"},{"line_number":278,"context_line":"            resp \u003d self._helpers.check_host_mapped_vols(host_name)"},{"line_number":279,"context_line":"            if not len(resp):"},{"line_number":280,"context_line":"                # Build info data structure for zone removing"},{"line_number":281,"context_line":"                self._helpers.delete_host(host_name)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_cc7bb228","line":279,"updated":"2015-11-20 18:47:25.000000000","message":"Is this comment still valid? Don\u0027t think there\u0027s zoning in iSCSI...","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d05fceca4e40499cd643472d6c3293424d79d9c3","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        # Host_name could be none"},{"line_number":277,"context_line":"        if host_name:"},{"line_number":278,"context_line":"            resp \u003d self._helpers.check_host_mapped_vols(host_name)"},{"line_number":279,"context_line":"            if not len(resp):"},{"line_number":280,"context_line":"                # Build info data structure for zone removing"},{"line_number":281,"context_line":"                self._helpers.delete_host(host_name)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_938ce180","line":279,"in_reply_to":"ba8a016a_cc7bb228","updated":"2015-11-23 19:55:25.000000000","message":"Missed this. Done.","commit_id":"918944e0191b54f87f87cd1677d45e31c777961f"},{"author":{"_account_id":18479,"name":"Slade Baumann","email":"baumann@us.ibm.com","username":"baumann"},"change_message_id":"60b27b38f6abad106984af0e107f216bb649b97d","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, ctxt):"},{"line_number":91,"context_line":"        # Set protocol"},{"line_number":92,"context_line":"        self.protocol \u003d \u0027iSCSI\u0027"},{"line_number":93,"context_line":"        # Setup common functionality between FC and iSCSI"},{"line_number":94,"context_line":"        super(StorwizeSVCISCSIDriver, self).do_setup(ctxt)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_edc99726","line":92,"updated":"2015-12-01 17:27:42.000000000","message":"For consistency sake, there should probably be a white line below the protocol setter. (same in FC)","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"8ecaba62245a41d1ea7fd2279a854468098ac1bb","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, ctxt):"},{"line_number":91,"context_line":"        # Set protocol"},{"line_number":92,"context_line":"        self.protocol \u003d \u0027iSCSI\u0027"},{"line_number":93,"context_line":"        # Setup common functionality between FC and iSCSI"},{"line_number":94,"context_line":"        super(StorwizeSVCISCSIDriver, self).do_setup(ctxt)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_d35d52ed","line":92,"in_reply_to":"9a8ffd7b_edc99726","updated":"2015-12-01 17:53:53.000000000","message":"Done","commit_id":"cf8950d86664363bca326edcc7e3d47bd0736dce"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":79,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":80,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_9d09c886","line":81,"updated":"2015-12-20 02:17:19.000000000","message":"Same comment here.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    1.3.2 - Added support for consistency group"},{"line_number":79,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":80,"context_line":"    2.0 - Split init file into separate FC and iSCSI files"},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    VERSION \u003d \"2.0\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_d06147d4","line":81,"in_reply_to":"3a7e1126_9d09c886","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"54f6a65363e8588c23c6480f7254fe27a7f594d8","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                node[\u0027enabled_protocols\u0027].append(\u0027iSCSI\u0027)"},{"line_number":110,"context_line":"                self._state[\u0027enabled_protocols\u0027].add(\u0027iSCSI\u0027)"},{"line_number":111,"context_line":"            if not len(node[\u0027enabled_protocols\u0027]):"},{"line_number":112,"context_line":"                to_delete.append(k)"},{"line_number":113,"context_line":"        for delkey in to_delete:"},{"line_number":114,"context_line":"            del self._state[\u0027storage_nodes\u0027][delkey]"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_1d1e38bb","line":112,"updated":"2015-12-20 02:17:19.000000000","message":"Same note here as in the FC driver.","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"710dd1323f50cbd6b2d472cd08c5e11150f69cf3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                node[\u0027enabled_protocols\u0027].append(\u0027iSCSI\u0027)"},{"line_number":110,"context_line":"                self._state[\u0027enabled_protocols\u0027].add(\u0027iSCSI\u0027)"},{"line_number":111,"context_line":"            if not len(node[\u0027enabled_protocols\u0027]):"},{"line_number":112,"context_line":"                to_delete.append(k)"},{"line_number":113,"context_line":"        for delkey in to_delete:"},{"line_number":114,"context_line":"            del self._state[\u0027storage_nodes\u0027][delkey]"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_f05c831a","line":112,"in_reply_to":"3a7e1126_1d1e38bb","updated":"2015-12-21 17:19:44.000000000","message":"Done","commit_id":"c1f6cb1de6b317df00520c03c32a3bf215f204ea"}]}
