Fix RAID volume name
Use just md<index> as the default volume name if a volume name is not defined. The original change (https://review.opendev.org/c/openstack/ironic-python-agent/+/853182) introduced an error: mdadm: Value "/dev/md0" cannot be set as name. Reason: Not POSIX compatible.\n This change fixes it. Closes-Bug: #2073406 Change-Id: Ic8bd473801fcb92fc814f6ad4e1d6dc316783bf3 (cherry picked from commit6dceb33209
) (cherry picked from commit2ece938671
)
This commit is contained in:
@@ -227,7 +227,7 @@ def create_raid_device(index, logical_disk):
|
||||
volume_name = logical_disk.get('volume_name')
|
||||
try:
|
||||
if volume_name is None:
|
||||
volume_name = md_device
|
||||
volume_name = 'md%d' % index
|
||||
LOG.debug("Creating md device %(dev)s with name %(name)s"
|
||||
"on %(comp)s",
|
||||
{'dev': md_device, 'name': volume_name,
|
||||
|
@@ -3093,10 +3093,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
|
||||
self.assertEqual(raid_config, result)
|
||||
@@ -3198,11 +3198,11 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 3, '/dev/sda1', '/dev/sdb1',
|
||||
'/dev/sdc1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '5', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '5', '--name', 'md1',
|
||||
'--raid-devices', 3, '/dev/sda2', '/dev/sdb2',
|
||||
'/dev/sdc2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
@@ -3316,11 +3316,11 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 4, '/dev/sda1', '/dev/sdb1',
|
||||
'/dev/sdc1', '/dev/sdd1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '6', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '6', '--name', 'md1',
|
||||
'--raid-devices', 4, '/dev/sda2', '/dev/sdb2',
|
||||
'/dev/sdc2', '/dev/sdd2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
@@ -3399,10 +3399,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
||||
@@ -3486,10 +3486,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
||||
@@ -3568,10 +3568,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
||||
@@ -3652,10 +3652,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '0', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '1', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
||||
@@ -3745,10 +3745,10 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/sda1', '/dev/sdb1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/sda2', '/dev/sdb2')])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
||||
@@ -4093,11 +4093,11 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 2, '/dev/nvme0n1p1',
|
||||
'/dev/nvme1n1p1'),
|
||||
mock.call('mdadm', '--create', '/dev/md1', '--force', '--run',
|
||||
'--metadata=1', '--level', '0', '--name', '/dev/md1',
|
||||
'--metadata=1', '--level', '0', '--name', 'md1',
|
||||
'--raid-devices', 2, '/dev/nvme0n1p2', '/dev/nvme1n1p2')
|
||||
])
|
||||
self.assertEqual(raid_config, result)
|
||||
|
@@ -57,7 +57,7 @@ class TestRaidUtils(base.IronicAgentTest):
|
||||
|
||||
mock_execute.assert_called_once_with(
|
||||
'mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 3, '/dev/sda1', '/dev/sdb1', '/dev/sdc1')
|
||||
|
||||
@mock.patch.object(raid_utils, '_get_actual_component_devices',
|
||||
@@ -97,7 +97,7 @@ class TestRaidUtils(base.IronicAgentTest):
|
||||
|
||||
expected_calls = [
|
||||
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
|
||||
'--metadata=1', '--level', '1', '--name', '/dev/md0',
|
||||
'--metadata=1', '--level', '1', '--name', 'md0',
|
||||
'--raid-devices', 3, '/dev/sda1', '/dev/sdb1',
|
||||
'/dev/sdc1'),
|
||||
mock.call('mdadm', '--add', '/dev/md0', '/dev/sdb1',
|
||||
|
@@ -0,0 +1,7 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
The use of md_device as the default volume name if the volume name of a RAID
|
||||
array hasn't been specified caused a 'Not POSIX compatible' error.
|
||||
This has been fixed by using just the last part of the md_device.
|
||||
Fixes https://bugs.launchpad.net/ironic-python-agent/+bug/2073406
|
Reference in New Issue
Block a user