)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Pure Storage FibreChannel driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    This commit adds a FibreChannel driver for Pure Storage. The driver shares"},{"line_number":10,"context_line":"    the majority of functionality with base driver and only has the code"},{"line_number":11,"context_line":"    necessary to support connection to FibreChannel."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a016987_e7e18a2b","line":9,"updated":"2015-05-28 23:53:52.000000000","message":"might want to un-indent this block, not sure how much it matters but I think most other commits keep the same indentation throughout the message.","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"}],"cinder/tests/unit/test_pure.py":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":1265,"context_line":"        bad_host \u003d {\"name\": \"bad-host\", \"wwn\": [\"wrong-wwn\"]}"},{"line_number":1266,"context_line":"        self.array.list_hosts.return_value \u003d [bad_host]"},{"line_number":1267,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1268,"context_line":"        self.assertIs(real_result, None)"},{"line_number":1269,"context_line":"        self.array.list_hosts.return_value.append(good_host)"},{"line_number":1270,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1271,"context_line":"        self.assertEqual(real_result, good_host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_67111a04","line":1268,"updated":"2015-05-28 23:53:52.000000000","message":"iirc from some previous review feedback i got it should be (expected, actual), i hate to be a pain but we might as well make it consistent with our newly \u0027fixed\u0027 other tests","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"a1538fbd11fca0b01e5131030ce34faa4a41b872","unresolved":false,"context_lines":[{"line_number":1265,"context_line":"        bad_host \u003d {\"name\": \"bad-host\", \"wwn\": [\"wrong-wwn\"]}"},{"line_number":1266,"context_line":"        self.array.list_hosts.return_value \u003d [bad_host]"},{"line_number":1267,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1268,"context_line":"        self.assertIs(real_result, None)"},{"line_number":1269,"context_line":"        self.array.list_hosts.return_value.append(good_host)"},{"line_number":1270,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1271,"context_line":"        self.assertEqual(real_result, good_host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_4d287fe2","line":1268,"in_reply_to":"7a016987_67111a04","updated":"2015-05-29 01:18:39.000000000","message":"Done","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":5149,"name":"Sean Chen","email":"xuchenx@gmail.com","username":"opencompute"},"change_message_id":"f2633902607de4894dfb181d62cd05ee33db45ce","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"        self.assertIs(real_result, None)"},{"line_number":1285,"context_line":"        self.array.list_hosts.return_value.append(good_host)"},{"line_number":1286,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1287,"context_line":"        self.assertEqual(real_result, good_host)"},{"line_number":1288,"context_line":"        self.assert_error_propagates([self.array.list_hosts],"},{"line_number":1289,"context_line":"                                     self.driver._get_host, FC_CONNECTOR)"},{"line_number":1290,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_4a6597df","line":1287,"updated":"2015-06-04 19:53:35.000000000","message":"assertEqual(self, expected, observed, message\u003d\u0027\u0027) so\nassertEqual(good_host, real_result)","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"        self.assertIs(real_result, None)"},{"line_number":1285,"context_line":"        self.array.list_hosts.return_value.append(good_host)"},{"line_number":1286,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1287,"context_line":"        self.assertEqual(real_result, good_host)"},{"line_number":1288,"context_line":"        self.assert_error_propagates([self.array.list_hosts],"},{"line_number":1289,"context_line":"                                     self.driver._get_host, FC_CONNECTOR)"},{"line_number":1290,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_ea87a310","line":1287,"in_reply_to":"3afb71cf_4a6597df","updated":"2015-06-04 20:15:24.000000000","message":"+1. Please, change assert params orders","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"        self.assertIs(real_result, None)"},{"line_number":1285,"context_line":"        self.array.list_hosts.return_value.append(good_host)"},{"line_number":1286,"context_line":"        real_result \u003d self.driver._get_host(FC_CONNECTOR)"},{"line_number":1287,"context_line":"        self.assertEqual(real_result, good_host)"},{"line_number":1288,"context_line":"        self.assert_error_propagates([self.array.list_hosts],"},{"line_number":1289,"context_line":"                                     self.driver._get_host, FC_CONNECTOR)"},{"line_number":1290,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_9ece2db3","line":1287,"in_reply_to":"3afb71cf_ea87a310","updated":"2015-06-04 22:07:03.000000000","message":"Done","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._connect\")"},{"line_number":1292,"context_line":"    def test_initialize_connection(self, mock_connection):"},{"line_number":1293,"context_line":"        lookup_service \u003d self.driver._lookup_service"},{"line_number":1294,"context_line":"        lookup_service.get_device_mapping_from_network.return_value \u003d\\"},{"line_number":1295,"context_line":"            DEVICE_MAPPING"},{"line_number":1296,"context_line":"        mock_connection.return_value \u003d {\"vol\": VOLUME[\"name\"] + \"-cinder\","},{"line_number":1297,"context_line":"                                        \"lun\": 1,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_8ab4afd1","line":1294,"updated":"2015-06-04 20:15:24.000000000","message":"I know that we\u0027ve got code with \u0027\\\u0027 for multiline statements already in sources. But we try to go away from it. Please, use () instead","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._connect\")"},{"line_number":1292,"context_line":"    def test_initialize_connection(self, mock_connection):"},{"line_number":1293,"context_line":"        lookup_service \u003d self.driver._lookup_service"},{"line_number":1294,"context_line":"        lookup_service.get_device_mapping_from_network.return_value \u003d\\"},{"line_number":1295,"context_line":"            DEVICE_MAPPING"},{"line_number":1296,"context_line":"        mock_connection.return_value \u003d {\"vol\": VOLUME[\"name\"] + \"-cinder\","},{"line_number":1297,"context_line":"                                        \"lun\": 1,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_7eca5151","line":1294,"in_reply_to":"3afb71cf_8ab4afd1","updated":"2015-06-04 22:07:03.000000000","message":"Done","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":1297,"context_line":"                                        \"lun\": 1,"},{"line_number":1298,"context_line":"                                        }"},{"line_number":1299,"context_line":"        self.array.list_ports.return_value \u003d FC_PORTS"},{"line_number":1300,"context_line":"        result \u003d FC_CONNECTION_INFO"},{"line_number":1301,"context_line":"        real_result \u003d self.driver.initialize_connection(VOLUME, FC_CONNECTOR)"},{"line_number":1302,"context_line":"        self.assertDictMatch(real_result, result)"},{"line_number":1303,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_cae187d2","line":1300,"updated":"2015-06-04 20:15:24.000000000","message":"Do we really need it?","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":1297,"context_line":"                                        \"lun\": 1,"},{"line_number":1298,"context_line":"                                        }"},{"line_number":1299,"context_line":"        self.array.list_ports.return_value \u003d FC_PORTS"},{"line_number":1300,"context_line":"        result \u003d FC_CONNECTION_INFO"},{"line_number":1301,"context_line":"        real_result \u003d self.driver.initialize_connection(VOLUME, FC_CONNECTOR)"},{"line_number":1302,"context_line":"        self.assertDictMatch(real_result, result)"},{"line_number":1303,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_5ec1d57f","line":1300,"in_reply_to":"3afb71cf_cae187d2","updated":"2015-06-04 22:07:03.000000000","message":"Removed.","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"        self.array.list_ports.return_value \u003d FC_PORTS"},{"line_number":1300,"context_line":"        result \u003d FC_CONNECTION_INFO"},{"line_number":1301,"context_line":"        real_result \u003d self.driver.initialize_connection(VOLUME, FC_CONNECTOR)"},{"line_number":1302,"context_line":"        self.assertDictMatch(real_result, result)"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._get_host\", autospec\u003dTrue)"},{"line_number":1305,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._generate_purity_host_name\", spec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_0ad8bf1c","line":1302,"updated":"2015-06-04 20:15:24.000000000","message":"expected, actual.","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":1299,"context_line":"        self.array.list_ports.return_value \u003d FC_PORTS"},{"line_number":1300,"context_line":"        result \u003d FC_CONNECTION_INFO"},{"line_number":1301,"context_line":"        real_result \u003d self.driver.initialize_connection(VOLUME, FC_CONNECTOR)"},{"line_number":1302,"context_line":"        self.assertDictMatch(real_result, result)"},{"line_number":1303,"context_line":""},{"line_number":1304,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._get_host\", autospec\u003dTrue)"},{"line_number":1305,"context_line":"    @mock.patch(FC_DRIVER_OBJ + \"._generate_purity_host_name\", spec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_3ebe1900","line":1302,"in_reply_to":"3afb71cf_0ad8bf1c","updated":"2015-06-04 22:07:03.000000000","message":"Done","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        self._disconnect(volume, connector, **kwargs)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"},{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            self._array.disconnect_host(host_name, vol_name)"},{"line_number":237,"context_line":"        except purestorage.PureHTTPError as err:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_47b17e46","line":234,"updated":"2015-05-28 23:53:52.000000000","message":"lets add some comments explaining what this is returning now","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"a1538fbd11fca0b01e5131030ce34faa4a41b872","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        self._disconnect(volume, connector, **kwargs)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"},{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            self._array.disconnect_host(host_name, vol_name)"},{"line_number":237,"context_line":"        except purestorage.PureHTTPError as err:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_0d1e07bb","line":234,"in_reply_to":"7a016987_47b17e46","updated":"2015-05-29 01:18:39.000000000","message":"Done. I tried to add a short and sweet comment. If you can think of something better we can change it.","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":764,"context_line":"class PureFCDriver(PureBaseVolumeDriver, driver.FibreChannelDriver):"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":767,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":770,"context_line":"        execute \u003d kwargs.pop(\"execute\", utils.execute)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_2739e2d7","line":767,"updated":"2015-05-28 23:53:52.000000000","message":"i think we can remove one of these","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"a1538fbd11fca0b01e5131030ce34faa4a41b872","unresolved":false,"context_lines":[{"line_number":764,"context_line":"class PureFCDriver(PureBaseVolumeDriver, driver.FibreChannelDriver):"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":767,"context_line":"    VERSION \u003d \"1.0.0\""},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":770,"context_line":"        execute \u003d kwargs.pop(\"execute\", utils.execute)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_ad7ff3de","line":767,"in_reply_to":"7a016987_2739e2d7","updated":"2015-05-29 01:18:39.000000000","message":"Done.  You sure we don\u0027t need two?","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        for host in hosts:"},{"line_number":781,"context_line":"            for wwn in connector[\"wwpns\"]:"},{"line_number":782,"context_line":"                LOG.debug(\"danny wwn: %s\" % wwn)"},{"line_number":783,"context_line":"                LOG.debug(\"danny host[wwn]: %s\" % host[\"wwn\"])"},{"line_number":784,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":785,"context_line":"                    LOG.debug(\"danny host matched\")"},{"line_number":786,"context_line":"                    return host"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_2740c233","line":783,"updated":"2015-05-28 23:53:52.000000000","message":"probably want to remove these debug lines","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"a1538fbd11fca0b01e5131030ce34faa4a41b872","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        for host in hosts:"},{"line_number":781,"context_line":"            for wwn in connector[\"wwpns\"]:"},{"line_number":782,"context_line":"                LOG.debug(\"danny wwn: %s\" % wwn)"},{"line_number":783,"context_line":"                LOG.debug(\"danny host[wwn]: %s\" % host[\"wwn\"])"},{"line_number":784,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":785,"context_line":"                    LOG.debug(\"danny host matched\")"},{"line_number":786,"context_line":"                    return host"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_8d80b7c0","line":783,"in_reply_to":"7a016987_2740c233","updated":"2015-05-29 01:18:39.000000000","message":"Done","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"467150f8f0ad148ee11eb6ff9cddc6d4aef1d1e9","unresolved":false,"context_lines":[{"line_number":782,"context_line":"                LOG.debug(\"danny wwn: %s\" % wwn)"},{"line_number":783,"context_line":"                LOG.debug(\"danny host[wwn]: %s\" % host[\"wwn\"])"},{"line_number":784,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":785,"context_line":"                    LOG.debug(\"danny host matched\")"},{"line_number":786,"context_line":"                    return host"},{"line_number":787,"context_line":"        return None"},{"line_number":788,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_07494660","line":785,"updated":"2015-05-28 23:53:52.000000000","message":"and here","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"a1538fbd11fca0b01e5131030ce34faa4a41b872","unresolved":false,"context_lines":[{"line_number":782,"context_line":"                LOG.debug(\"danny wwn: %s\" % wwn)"},{"line_number":783,"context_line":"                LOG.debug(\"danny host[wwn]: %s\" % host[\"wwn\"])"},{"line_number":784,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":785,"context_line":"                    LOG.debug(\"danny host matched\")"},{"line_number":786,"context_line":"                    return host"},{"line_number":787,"context_line":"        return None"},{"line_number":788,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_6d857bcd","line":785,"in_reply_to":"7a016987_07494660","updated":"2015-05-29 01:18:39.000000000","message":"Done","commit_id":"bda35cbe49d872be5b38de1cb0a9db1089c28bdb"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1211b6b13069b98769a7d272f6df5adb5bc05dae","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                \"target_lun\": connection[\"lun\"],"},{"line_number":804,"context_line":"                \"target_wwn\": target_wwns,"},{"line_number":805,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":806,"context_line":"                \u0027initiator_target_map\u0027: init_targ_map"},{"line_number":807,"context_line":"            }"},{"line_number":808,"context_line":"        }"},{"line_number":809,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_8c6ed5c7","line":806,"updated":"2015-06-02 17:56:16.000000000","message":"you should take a look at integrating the FCZM lookup service.  This ensures that any ports you create a map for here, can actually see each other.\n\nFor example,\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/san/hp/hp_3par_fc.py#L285","commit_id":"f47d1fd42e678aecb3564a6863ab3a007655791d"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"1c20015553f89c89736d122c80cdb2e153915ced","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                \"target_lun\": connection[\"lun\"],"},{"line_number":804,"context_line":"                \"target_wwn\": target_wwns,"},{"line_number":805,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":806,"context_line":"                \u0027initiator_target_map\u0027: init_targ_map"},{"line_number":807,"context_line":"            }"},{"line_number":808,"context_line":"        }"},{"line_number":809,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_4f38bca0","line":806,"in_reply_to":"5afe65bd_8c6ed5c7","updated":"2015-06-03 05:58:19.000000000","message":"Awesome, thanks Walter.","commit_id":"f47d1fd42e678aecb3564a6863ab3a007655791d"},{"author":{"_account_id":8757,"name":"Angela Smith","email":"angela.smith@broadcom.com","username":"asmith_brcd"},"change_message_id":"e69c4438d5b4b1c94748462f9a888f1d5f315c90","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        return init_targ_map"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    @log_debug_trace"},{"line_number":861,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":862,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":863,"context_line":"        \"\"\"Terminate connection.\"\"\""},{"line_number":864,"context_line":"        no_more_connections \u003d self._disconnect(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_db71db77","line":861,"updated":"2015-06-04 08:29:29.000000000","message":"This should be RemoveFCZone","commit_id":"4a35b37a3dcc00a57e7ac6960154276662bcfb43"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4e114493a3620e24e342d6a94b1298616301d3f8","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        return init_targ_map"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    @log_debug_trace"},{"line_number":861,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":862,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":863,"context_line":"        \"\"\"Terminate connection.\"\"\""},{"line_number":864,"context_line":"        no_more_connections \u003d self._disconnect(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_17b05689","line":861,"in_reply_to":"5afe65bd_db71db77","updated":"2015-06-04 15:45:36.000000000","message":"Done.  Thanks for catching that.","commit_id":"4a35b37a3dcc00a57e7ac6960154276662bcfb43"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            for wwn in connector[\"wwpns\"]:"},{"line_number":783,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":784,"context_line":"                    return host"},{"line_number":785,"context_line":"        return None"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"    def _get_array_wwns(self):"},{"line_number":788,"context_line":"        \"\"\"Return list of wwns from the array\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_2a201bf7","line":785,"updated":"2015-06-04 20:15:24.000000000","message":"No need to return None. It\u0027s a default value for functions and methods","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            for wwn in connector[\"wwpns\"]:"},{"line_number":783,"context_line":"                if wwn in str(host[\"wwn\"]).lower():"},{"line_number":784,"context_line":"                    return host"},{"line_number":785,"context_line":"        return None"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"    def _get_array_wwns(self):"},{"line_number":788,"context_line":"        \"\"\"Return list of wwns from the array\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_be40c908","line":785,"in_reply_to":"3afb71cf_2a201bf7","updated":"2015-06-04 22:07:03.000000000","message":"Removed.","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":829,"context_line":"                         \" %(wwn)s.\"), {\"host_name\": host_name, \"wwn\": wwns})"},{"line_number":830,"context_line":"            self._array.create_host(host_name, wwnlist\u003dwwns)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        connection \u003d self._connect_host_to_vol(host_name, vol_name)"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        return connection"},{"line_number":835,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_8a5eef74","line":832,"updated":"2015-06-04 20:15:24.000000000","message":"Could be simplified to:\nreturn self._connect_host_to_vol(host_name, vol_name)","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":829,"context_line":"                         \" %(wwn)s.\"), {\"host_name\": host_name, \"wwn\": wwns})"},{"line_number":830,"context_line":"            self._array.create_host(host_name, wwnlist\u003dwwns)"},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        connection \u003d self._connect_host_to_vol(host_name, vol_name)"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        return connection"},{"line_number":835,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_5e48b52d","line":832,"in_reply_to":"3afb71cf_8a5eef74","updated":"2015-06-04 22:07:03.000000000","message":"Simplified.","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"956f6426cc8efadc83f0a0c1e75aa832e62dd6d1","unresolved":false,"context_lines":[{"line_number":837,"context_line":"        \"\"\"Build the target_wwns and the initiator target map.\"\"\""},{"line_number":838,"context_line":"        init_targ_map \u003d {}"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"        if self._lookup_service is not None:"},{"line_number":841,"context_line":"            # use FC san lookup to determine which NSPs to use"},{"line_number":842,"context_line":"            # for the new VLUN."},{"line_number":843,"context_line":"            dev_map \u003d self._lookup_service.get_device_mapping_from_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_aab52b7f","line":840,"updated":"2015-06-04 20:15:24.000000000","message":"Could be simplified to:\nif self._lookup_service","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":13868,"name":"Danny Wilson","email":"daniel.wilson@purestorage.com","username":"dannywilson"},"change_message_id":"4870c19895d511e1a7dcfcd38319c5e2ba2b4f9d","unresolved":false,"context_lines":[{"line_number":837,"context_line":"        \"\"\"Build the target_wwns and the initiator target map.\"\"\""},{"line_number":838,"context_line":"        init_targ_map \u003d {}"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"        if self._lookup_service is not None:"},{"line_number":841,"context_line":"            # use FC san lookup to determine which NSPs to use"},{"line_number":842,"context_line":"            # for the new VLUN."},{"line_number":843,"context_line":"            dev_map \u003d self._lookup_service.get_device_mapping_from_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_fe5d21ed","line":840,"in_reply_to":"3afb71cf_aab52b7f","updated":"2015-06-04 22:07:03.000000000","message":"Simplified.","commit_id":"5932980ee7e664734b81d568cf86ad1f6c79d71e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"cb32fb37a32ca582c1aa84edd9e609dcc086af4e","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    @log_debug_trace"},{"line_number":229,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":230,"context_line":"        \"\"\"Terminate connection.\"\"\""},{"line_number":231,"context_line":"        self._disconnect(volume, connector, **kwargs)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_b934634a","line":231,"updated":"2015-06-04 22:47:49.000000000","message":"You don\u0027t use the return values from _disconnect (and, indirectly, _disconnect_host) so I\u0027m not sure of the point of setting them up in these methods.","commit_id":"7d7b679dbb4e9fe471edceefff995334c831a44d"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"30a65ee30fbab56c88413edf1ea06fcd31be3085","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    @log_debug_trace"},{"line_number":229,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":230,"context_line":"        \"\"\"Terminate connection.\"\"\""},{"line_number":231,"context_line":"        self._disconnect(volume, connector, **kwargs)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_41be9500","line":231,"in_reply_to":"3afb71cf_414b355a","updated":"2015-06-05 00:32:01.000000000","message":"Thanks for explaining.","commit_id":"7d7b679dbb4e9fe471edceefff995334c831a44d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"a38c4e726336e91827c533f23088ebb2d92afb70","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    @log_debug_trace"},{"line_number":229,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":230,"context_line":"        \"\"\"Terminate connection.\"\"\""},{"line_number":231,"context_line":"        self._disconnect(volume, connector, **kwargs)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_414b355a","line":231,"in_reply_to":"3afb71cf_b934634a","updated":"2015-06-05 00:22:30.000000000","message":"The FC driver overrides terminate_connection and after it calls _disconnect it needs to use the return value to know when to remove the zones. The base version (which the iSCSI driver ends up using) can safely ignore the output.","commit_id":"7d7b679dbb4e9fe471edceefff995334c831a44d"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"cb32fb37a32ca582c1aa84edd9e609dcc086af4e","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"},{"line_number":235,"context_line":"        \"\"\"Return value indicates if host was deleted on array or not\"\"\""},{"line_number":236,"context_line":"        try:"},{"line_number":237,"context_line":"            self._array.disconnect_host(host_name, vol_name)"},{"line_number":238,"context_line":"        except purestorage.PureHTTPError as err:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_d9ba7fc0","line":235,"updated":"2015-06-04 22:47:49.000000000","message":"nit: You should end this message with a period since that is what you are doing elsewhere in this file.","commit_id":"7d7b679dbb4e9fe471edceefff995334c831a44d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"a38c4e726336e91827c533f23088ebb2d92afb70","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_debug_trace"},{"line_number":234,"context_line":"    def _disconnect_host(self, host_name, vol_name):"},{"line_number":235,"context_line":"        \"\"\"Return value indicates if host was deleted on array or not\"\"\""},{"line_number":236,"context_line":"        try:"},{"line_number":237,"context_line":"            self._array.disconnect_host(host_name, vol_name)"},{"line_number":238,"context_line":"        except purestorage.PureHTTPError as err:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_c16de5cd","line":235,"in_reply_to":"3afb71cf_d9ba7fc0","updated":"2015-06-05 00:22:30.000000000","message":"+1, if another patchset goes up we should fix that","commit_id":"7d7b679dbb4e9fe471edceefff995334c831a44d"}]}
