Merge "Fix software raid output poisoning"
This commit is contained in:
commit
ef5d9da134
@ -382,9 +382,10 @@ def get_holder_disks(raid_device):
|
|||||||
|
|
||||||
holder_parts = []
|
holder_parts = []
|
||||||
for line in lines[1:]:
|
for line in lines[1:]:
|
||||||
|
if 'Events' in line or 'Name' in line:
|
||||||
|
continue
|
||||||
device = re.findall(r'/dev/\w+', line)
|
device = re.findall(r'/dev/\w+', line)
|
||||||
holder_parts += device
|
holder_parts += device
|
||||||
|
|
||||||
for part in holder_parts:
|
for part in holder_parts:
|
||||||
# NOTE(mnaser): If the last character is not a digit and it is a valid
|
# NOTE(mnaser): If the last character is not a digit and it is a valid
|
||||||
# device, this means that instead of a partition, it's a
|
# device, this means that instead of a partition, it's a
|
||||||
|
@ -1049,6 +1049,34 @@ MDADM_DETAIL_OUTPUT_BROKEN_RAID0 = ("""/dev/md126:
|
|||||||
- 8 2 - /dev/sda2
|
- 8 2 - /dev/sda2
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
# NOTE(TheJulia): The name and events field, in some cases can
|
||||||
|
# match the regex causing parsing of the text to fail.
|
||||||
|
MDADM_DETAIL_POISONED = ("""/dev/md0:
|
||||||
|
Version : 1.2
|
||||||
|
Creation Time : Wed Aug 17 16:09:19 2022
|
||||||
|
Raid Level : raid1
|
||||||
|
Array Size : 4673536 (4.46 GiB 4.79 GB)
|
||||||
|
Used Dev Size : 4673536 (4.46 GiB 4.79 GB)
|
||||||
|
Raid Devices : 2
|
||||||
|
Total Devices : 2
|
||||||
|
Persistence : Superblock is persistent
|
||||||
|
|
||||||
|
Update Time : Wed Aug 17 16:10:03 2022
|
||||||
|
State : clean
|
||||||
|
Active Devices : 2
|
||||||
|
Working Devices : 2
|
||||||
|
Failed Devices : 0
|
||||||
|
Spare Devices : 0
|
||||||
|
|
||||||
|
Name : box:/dev/md0 (local to host box)
|
||||||
|
UUID : e50fb152:aa80db1d:3c901b03:dd280e35
|
||||||
|
Events : 21/dev/md/dev/md
|
||||||
|
|
||||||
|
Number Major Minor RaidDevice State
|
||||||
|
0 251 1 0 active sync /dev/vda1
|
||||||
|
1 251 17 1 active sync /dev/vdb1
|
||||||
|
""")
|
||||||
|
|
||||||
MDADM_EXAMINE_OUTPUT_MEMBER = ("""/dev/sda1:
|
MDADM_EXAMINE_OUTPUT_MEMBER = ("""/dev/sda1:
|
||||||
Magic : a92b4efc
|
Magic : a92b4efc
|
||||||
Version : 1.2
|
Version : 1.2
|
||||||
|
@ -4450,6 +4450,12 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
|||||||
holder_disks = hardware.get_holder_disks('/dev/md126')
|
holder_disks = hardware.get_holder_disks('/dev/md126')
|
||||||
self.assertEqual(['/dev/sda'], holder_disks)
|
self.assertEqual(['/dev/sda'], holder_disks)
|
||||||
|
|
||||||
|
@mock.patch.object(il_utils, 'execute', autospec=True)
|
||||||
|
def test_get_holder_disks_poisoned_output(self, mocked_execute):
|
||||||
|
mocked_execute.side_effect = [(hws.MDADM_DETAIL_POISONED, '')]
|
||||||
|
holder_disks = hardware.get_holder_disks('/dev/md0')
|
||||||
|
self.assertEqual(['/dev/vda', '/dev/vdb'], holder_disks)
|
||||||
|
|
||||||
@mock.patch.object(hardware, 'get_holder_disks', autospec=True)
|
@mock.patch.object(hardware, 'get_holder_disks', autospec=True)
|
||||||
@mock.patch.object(hardware, 'get_component_devices', autospec=True)
|
@mock.patch.object(hardware, 'get_component_devices', autospec=True)
|
||||||
@mock.patch.object(hardware, 'list_all_block_devices', autospec=True)
|
@mock.patch.object(hardware, 'list_all_block_devices', autospec=True)
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fixes handling of Software RAID device discovery so RAID device ``Names``
|
||||||
|
and ``Events`` field values do not inadvertently cause the command to
|
||||||
|
return unexpected output. Previously this could cause a deployment to
|
||||||
|
when handling UEFI partitions.
|
Loading…
Reference in New Issue
Block a user