From 2110c919df4ad1fc9c47e5d7db7d396c11d201bf Mon Sep 17 00:00:00 2001 From: Shunei Shiono Date: Thu, 5 Oct 2017 17:39:13 +0900 Subject: [PATCH] NEC driver: Fix exception in terminate_connection with no connector NEC driver required the connector object not be None. This patch allows for the connector to be None by force detach. Change-Id: Ib83edf85d086305341f94f6810fcdecb21fc7937 Closes-Bug: #1721461 --- .../tests/unit/volume/drivers/nec/test_volume.py | 3 +++ cinder/volume/drivers/nec/volume_helper.py | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cinder/tests/unit/volume/drivers/nec/test_volume.py b/cinder/tests/unit/volume/drivers/nec/test_volume.py index 003cdf2901f..a53ab6e3dc1 100644 --- a/cinder/tests/unit/volume/drivers/nec/test_volume.py +++ b/cinder/tests/unit/volume/drivers/nec/test_volume.py @@ -992,6 +992,9 @@ class ExportTest(volume_helper.MStorageDSVDriver, unittest.TestCase): self.assertEqual( '2A00000991020012', info['data']['initiator_target_map']['10000090FAA0786B'][3]) + info = self._fc_terminate_connection(self.vol, None) + self.assertEqual('fibre_channel', info['driver_volume_type']) + self.assertEqual({}, info['data']) class DeleteDSVVolume_test(volume_helper.MStorageDSVDriver, diff --git a/cinder/volume/drivers/nec/volume_helper.py b/cinder/volume/drivers/nec/volume_helper.py index f61c363f195..0aeaf042888 100644 --- a/cinder/volume/drivers/nec/volume_helper.py +++ b/cinder/volume/drivers/nec/volume_helper.py @@ -1396,12 +1396,15 @@ class MStorageDriver(volume_common.MStorageVolumeCommon): for port in hostport: if port['protocol'].lower() == 'fc': fc_ports.append(port) - target_wwns, init_targ_map = ( - self._build_initiator_target_map(connector, fc_ports)) info = {'driver_volume_type': 'fibre_channel', - 'data': {'target_wwn': target_wwns, - 'initiator_target_map': init_targ_map}} + 'data': {}} + if connector is not None: + target_wwns, init_targ_map = ( + self._build_initiator_target_map(connector, fc_ports)) + info['data'] = {'target_wwn': target_wwns, + 'initiator_target_map': init_targ_map} + LOG.debug('_fc_terminate_connection' '(Volume ID = %(id)s, connector = %(connector)s, ' 'info = %(info)s) End.', @@ -1429,7 +1432,9 @@ class MStorageDriver(volume_common.MStorageVolumeCommon): for port in fc_ports: target_wwns.append(port['wwpn']) - initiator_wwns = connector['wwpns'] + initiator_wwns = [] + if connector is not None: + initiator_wwns = connector['wwpns'] init_targ_map = {} for initiator in initiator_wwns: