summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-11-23 11:57:28 +0000
committerGerrit Code Review <review@openstack.org>2021-11-23 11:57:28 +0000
commit1edc4dca0cac47c6a648f86247e23aee21853397 (patch)
tree375338d577a80680faa3b9fd3b578fe8d7567bc0
parentdea1074713578452d845b3a14795260cd1149ca7 (diff)
parent313e05ef212a9550619e84bd61e81a0512a9b3d8 (diff)
downloadironic-python-agent-1edc4dca0cac47c6a648f86247e23aee21853397.tar.gz
Merge "Re-read the partition table with partx -a, part 2" into bugfix/8.1
-rw-r--r--ironic_python_agent/hardware.py2
-rw-r--r--ironic_python_agent/tests/unit/test_hardware.py84
-rw-r--r--releasenotes/notes/fix-rescan-device-raid-29aa1558b036b496.yaml7
3 files changed, 50 insertions, 43 deletions
diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py
index d789863f..5619f7e0 100644
--- a/ironic_python_agent/hardware.py
+++ b/ironic_python_agent/hardware.py
@@ -2104,7 +2104,7 @@ class GenericHardwareManager(HardwareManager):
# The real difference between partx and partprobe is
# unclear, but note that partprobe does not seem to
# work synchronously for nvme drives...
- utils.execute("partx", "-u", device,
+ utils.execute("partx", "-a", device,
check_exit_code=False)
except processutils.ProcessExecutionError as e:
msg = "Failed to create partitions on {}: {}".format(
diff --git a/ironic_python_agent/tests/unit/test_hardware.py b/ironic_python_agent/tests/unit/test_hardware.py
index 61001260..5cdd00d2 100644
--- a/ironic_python_agent/tests/unit/test_hardware.py
+++ b/ironic_python_agent/tests/unit/test_hardware.py
@@ -2526,16 +2526,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdb'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -2615,22 +2615,22 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdc'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 3,
'/dev/sda1', '/dev/sdb1', '/dev/sdc1'),
@@ -2713,28 +2713,28 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdd'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 4,
'/dev/sda1', '/dev/sdb1', '/dev/sdc1', '/dev/sdd1'),
@@ -2798,16 +2798,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '551MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '551MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -2877,16 +2877,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '8MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '8MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -2951,16 +2951,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdb'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '30GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '30GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -3027,16 +3027,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdb'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '20GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '20GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '20GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '20GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '0', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -3114,16 +3114,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
mock.call('sgdisk', '-F', '/dev/sdb'),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '42s', '10GiB'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/sda1', '/dev/sdb1'),
@@ -3454,16 +3454,16 @@ class TestGenericHardwareManager(base.IronicAgentTest):
'gpt'),
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '551MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '551MiB', '10GiB'),
- mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
'mkpart', 'primary', '10GiB', '-1'),
- mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
+ mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
'--metadata=1', '--level', '1', '--raid-devices', 2,
'/dev/nvme0n1p1', '/dev/nvme1n1p1'),
diff --git a/releasenotes/notes/fix-rescan-device-raid-29aa1558b036b496.yaml b/releasenotes/notes/fix-rescan-device-raid-29aa1558b036b496.yaml
new file mode 100644
index 00000000..7083b118
--- /dev/null
+++ b/releasenotes/notes/fix-rescan-device-raid-29aa1558b036b496.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Fixes an issue where partitions are not visible due to an
+ incorrect call to have the partition table re-read during raid
+ configuration creation.
+