nvmeof connector utilize replica_count
nvmeof connector methods handling volumes with volume_replicas should utilize replica_count parameter in connection_information to determine method of device exposure to host Closes-Bug: #1938870 Change-Id: I629b80b208295c0e6bc9f18ad8e6905759e6593e
This commit is contained in:
parent
5614196e53
commit
49114867f9
|
@ -65,11 +65,12 @@ class NVMeOFConnector(base.BaseLinuxConnector):
|
|||
volume_replicas = connection_properties.get('volume_replicas')
|
||||
if not volume_replicas: # compatibility
|
||||
return []
|
||||
replica_count = connection_properties.get('replica_count')
|
||||
|
||||
try:
|
||||
if volume_replicas and len(volume_replicas) > 1:
|
||||
if volume_replicas and replica_count > 1:
|
||||
return ['/dev/md/' + connection_properties.get('alias')]
|
||||
if volume_replicas and len(volume_replicas) == 1:
|
||||
if volume_replicas and replica_count == 1:
|
||||
return [NVMeOFConnector.get_nvme_device_path(
|
||||
self, volume_replicas[0]['target_nqn'],
|
||||
volume_replicas[0]['vol_uuid'])]
|
||||
|
@ -445,6 +446,7 @@ class NVMeOFConnector(base.BaseLinuxConnector):
|
|||
"""
|
||||
|
||||
volume_replicas = connection_properties.get('volume_replicas')
|
||||
replica_count = connection_properties.get('replica_count')
|
||||
volume_alias = connection_properties.get('alias')
|
||||
|
||||
if volume_replicas:
|
||||
|
@ -463,9 +465,9 @@ class NVMeOFConnector(base.BaseLinuxConnector):
|
|||
raise exception.VolumeDeviceNotFound(
|
||||
device=volume_replicas)
|
||||
|
||||
if len(volume_replicas) > 1:
|
||||
if replica_count > 1:
|
||||
device_path = self._handle_replicated_volume(
|
||||
host_device_paths, volume_alias, len(volume_replicas))
|
||||
host_device_paths, volume_alias, replica_count)
|
||||
else:
|
||||
device_path = self._handle_single_replica(
|
||||
host_device_paths, volume_alias)
|
||||
|
@ -485,14 +487,15 @@ class NVMeOFConnector(base.BaseLinuxConnector):
|
|||
force=False, ignore_errors=False):
|
||||
device_path = None
|
||||
volume_replicas = connection_properties.get('volume_replicas')
|
||||
replica_count = connection_properties.get('replica_count')
|
||||
if device_info and device_info.get('path'):
|
||||
device_path = device_info['path']
|
||||
elif connection_properties.get('device_path'):
|
||||
device_path = connection_properties['device_path']
|
||||
elif volume_replicas and len(volume_replicas) > 1:
|
||||
elif volume_replicas and replica_count > 1:
|
||||
device_path = '/dev/md/' + connection_properties['alias']
|
||||
|
||||
if volume_replicas and len(volume_replicas) > 1:
|
||||
if volume_replicas and replica_count > 1:
|
||||
NVMeOFConnector.end_raid(self, device_path)
|
||||
else:
|
||||
if self._get_fs_type(device_path) == 'linux_raid_member':
|
||||
|
@ -500,8 +503,9 @@ class NVMeOFConnector(base.BaseLinuxConnector):
|
|||
|
||||
def _extend_volume_replicated(self, connection_properties):
|
||||
volume_replicas = connection_properties.get('volume_replicas')
|
||||
replica_count = connection_properties.get('replica_count')
|
||||
|
||||
if volume_replicas and len(volume_replicas) > 1:
|
||||
if volume_replicas and replica_count > 1:
|
||||
device_path = '/dev/md/' + connection_properties['alias']
|
||||
NVMeOFConnector.run_mdadm(
|
||||
self, ['mdadm', '--grow', '--size', 'max', device_path])
|
||||
|
|
|
@ -45,7 +45,8 @@ volume_replicas = [{'target_nqn': 'fakenqn1', 'vol_uuid': 'fakeuuid1',
|
|||
connection_properties = {
|
||||
'alias': 'fakealias',
|
||||
'vol_uuid': 'fakevoluuid',
|
||||
'volume_replicas': volume_replicas
|
||||
'volume_replicas': volume_replicas,
|
||||
'replica_count': 3
|
||||
}
|
||||
fake_portal = ('fake', 'portal', 'tcp')
|
||||
|
||||
|
@ -177,7 +178,8 @@ class NVMeOFConnectorTestCase(test_connector.ConnectorTestCase):
|
|||
mock_get_device_path.return_value = '/dev/nvme1n1'
|
||||
connection_properties = {
|
||||
'alias': 'fakealias',
|
||||
'volume_replicas': [volume_replicas[0]]
|
||||
'volume_replicas': [volume_replicas[0]],
|
||||
'replica_count': 1
|
||||
}
|
||||
self.assertEqual(self.connector.get_volume_paths(
|
||||
connection_properties),
|
||||
|
@ -257,7 +259,8 @@ class NVMeOFConnectorTestCase(test_connector.ConnectorTestCase):
|
|||
connection_properties1 = {
|
||||
'target_nqn': 'fakenqn',
|
||||
'vol_uuid': 'fakeuuid',
|
||||
'volume_replicas': [volume_replicas[0]]
|
||||
'volume_replicas': [volume_replicas[0]],
|
||||
'replica_count': 1
|
||||
}
|
||||
mock_connect_target_volume.return_value = '/dev/nvme0n1'
|
||||
self.assertEqual(
|
||||
|
@ -401,6 +404,7 @@ class NVMeOFConnectorTestCase(test_connector.ConnectorTestCase):
|
|||
connection_properties = {
|
||||
'vol_uuid': 'fakeuuid',
|
||||
'volume_replicas': volume_replicas,
|
||||
'replica_count': 3,
|
||||
'device_path': '/dev/md/md1'
|
||||
}
|
||||
self.connector.disconnect_volume(connection_properties, None)
|
||||
|
@ -431,7 +435,8 @@ class NVMeOFConnectorTestCase(test_connector.ConnectorTestCase):
|
|||
connection_properties = {
|
||||
'target_nqn': 'fakenqn',
|
||||
'vol_uuid': 'fakeuuid',
|
||||
'volume_replicas': [volume_replicas[0]]
|
||||
'volume_replicas': [volume_replicas[0]],
|
||||
'replica_count': 1
|
||||
}
|
||||
mock_device_path.return_value = '/dev/nvme0n1'
|
||||
mock_device_size.return_value = 100
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
`Bug #1938870 <https://bugs.launchpad.net/cinder/+bug/1938870>`_: Fixed
|
||||
KumoScale Driver replicated volume missing portals attaches without raid.
|
Loading…
Reference in New Issue