Incorporate the connection_properties input for PPC64
Removing the LinuxFibreChannelPPC64 class override, as the rescan host functionality is now in sync with the base class. Change-Id: I2b4a8a210c68280bed55cadbc7e4e3137fa5765d Closes-Bug: 1754303
This commit is contained in:
parent
c6f804b063
commit
80e50f6833
@ -16,7 +16,6 @@ from oslo_log import log as logging
|
||||
|
||||
from os_brick import initiator
|
||||
from os_brick.initiator.connectors import fibre_channel
|
||||
from os_brick.initiator import linuxfc
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -36,7 +35,6 @@ class FibreChannelConnectorPPC64(fibre_channel.FibreChannelConnector):
|
||||
execute=execute,
|
||||
device_scan_attempts=device_scan_attempts,
|
||||
*args, **kwargs)
|
||||
self._linuxfc = linuxfc.LinuxFibreChannelPPC64(root_helper, execute)
|
||||
self.use_multipath = use_multipath
|
||||
|
||||
def set_execute(self, execute):
|
||||
@ -52,14 +50,3 @@ class FibreChannelConnectorPPC64(fibre_channel.FibreChannelConnector):
|
||||
self._linuxscsi.process_lun_id(lun))
|
||||
host_devices.add(host_device)
|
||||
return list(host_devices)
|
||||
|
||||
def _get_possible_volume_paths(self, connection_properties, hbas):
|
||||
ports = connection_properties['target_wwn']
|
||||
it_map = connection_properties['initiator_target_map']
|
||||
for hba in hbas:
|
||||
if hba['node_name'] in it_map.keys():
|
||||
hba['target_wwn'] = it_map.get(hba['node_name'])
|
||||
possible_devs = self._get_possible_devices(hbas, ports)
|
||||
lun = connection_properties.get('target_lun', 0)
|
||||
host_paths = self._get_host_devices(possible_devs, lun)
|
||||
return host_paths
|
||||
|
@ -281,54 +281,3 @@ class LinuxFibreChannelS390X(LinuxFibreChannel):
|
||||
LOG.warning("unit_remove call for s390 failed exit %(code)s, "
|
||||
"stderr %(stderr)s",
|
||||
{'code': exc.exit_code, 'stderr': exc.stderr})
|
||||
|
||||
|
||||
class LinuxFibreChannelPPC64(LinuxFibreChannel):
|
||||
|
||||
def _get_hba_channel_scsi_target(self, hba, wwpn):
|
||||
"""Try to get the HBA channel and SCSI target for an HBA.
|
||||
|
||||
This method works for Fibre Channel targets iterating over all the
|
||||
target wwpn port and finding the c, t, l. so caller should expect us to
|
||||
return either None or an empty list.
|
||||
"""
|
||||
# Leave only the number from the host_device field (ie: host6)
|
||||
host_device = hba['host_device']
|
||||
if host_device and len(host_device) > 4:
|
||||
host_device = host_device[4:]
|
||||
path = '/sys/class/fc_transport/target%s:' % host_device
|
||||
cmd = 'grep -il %(wwpn)s %(path)s*/port_name' % {'wwpn': wwpn,
|
||||
'path': path}
|
||||
try:
|
||||
out, _err = self._execute(cmd, shell=True)
|
||||
return [line.split('/')[4].split(':')[1:]
|
||||
for line in out.split('\n') if line.startswith(path)]
|
||||
except Exception as exc:
|
||||
LOG.error("Could not get HBA channel and SCSI target ID, "
|
||||
"reason: %s", exc)
|
||||
return None
|
||||
|
||||
def rescan_hosts(self, hbas, target_lun):
|
||||
for hba in hbas:
|
||||
# Try to get HBA channel and SCSI target to use as filters
|
||||
# Ignore HBA which does not have target wwn
|
||||
if 'target_wwn' not in hba.keys():
|
||||
continue
|
||||
for wwpn in hba['target_wwn']:
|
||||
cts = self._get_hba_channel_scsi_target(hba, wwpn)
|
||||
# If we couldn't get the channel and target use wildcards
|
||||
if not cts:
|
||||
cts = [('-', '-')]
|
||||
for hba_channel, target_id in cts:
|
||||
LOG.debug('Scanning host %(host)s (wwpn: %(wwpn)s, c: '
|
||||
'%(channel)s, t: %(target)s, l: %(lun)s)',
|
||||
{'host': hba['host_device'],
|
||||
'wwpn': hba['target_wwn'],
|
||||
'channel': hba_channel,
|
||||
'target': target_id,
|
||||
'lun': target_lun})
|
||||
self.echo_scsi_command(
|
||||
"/sys/class/scsi_host/%s/scan" % hba['host_device'],
|
||||
"%(c)s %(t)s %(l)s" % {'c': hba_channel,
|
||||
't': target_id,
|
||||
'l': target_lun})
|
||||
|
@ -27,7 +27,7 @@ class FibreChannelConnectorPPC64TestCase(test_connector.ConnectorTestCase):
|
||||
self.assertIsNotNone(self.connector)
|
||||
self.assertIsNotNone(self.connector._linuxfc)
|
||||
self.assertEqual(self.connector._linuxfc.__class__.__name__,
|
||||
"LinuxFibreChannelPPC64")
|
||||
"LinuxFibreChannel")
|
||||
self.assertIsNotNone(self.connector._linuxscsi)
|
||||
|
||||
@mock.patch.object(linuxscsi.LinuxSCSI, 'process_lun_id', return_value='2')
|
||||
|
Loading…
Reference in New Issue
Block a user