Skip to content

Commit ede0847

Browse files
committed
Re-read the partition table with partx -a, part 2
Use add instead of update to re-read the partition table with partx. See [1] for more details. Co-authored-by: Arne Wiebalck <[email protected]> [1] https: //opendev.org/openstack/ironic-python-agent/commit/dc8c1f16f9a00e2bff21612d1a9cf0ea0f3addf0 Change-Id: I2336e22dadc790cfbde87904612fcaa3b8c501db (cherry picked from commit 23e67b5)
1 parent 8c88a40 commit ede0847

File tree

3 files changed

+50
-43
lines changed

3 files changed

+50
-43
lines changed

ironic_python_agent/hardware.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2166,7 +2166,7 @@ def _do_create_configuration(self, node, ports, raid_config):
21662166
# The real difference between partx and partprobe is
21672167
# unclear, but note that partprobe does not seem to
21682168
# work synchronously for nvme drives...
2169-
utils.execute("partx", "-u", device,
2169+
utils.execute("partx", "-a", device,
21702170
check_exit_code=False)
21712171
except processutils.ProcessExecutionError as e:
21722172
msg = "Failed to create partitions on {}: {}".format(

ironic_python_agent/tests/unit/test_hardware.py

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2567,16 +2567,16 @@ def test_create_configuration(self, mocked_os_path_isdir, mocked_execute,
25672567
mock.call('sgdisk', '-F', '/dev/sdb'),
25682568
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
25692569
'mkpart', 'primary', '42s', '10GiB'),
2570-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2570+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
25712571
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
25722572
'mkpart', 'primary', '42s', '10GiB'),
2573-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2573+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
25742574
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
25752575
'mkpart', 'primary', '10GiB', '-1'),
2576-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2576+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
25772577
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
25782578
'mkpart', 'primary', '10GiB', '-1'),
2579-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2579+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
25802580
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
25812581
'--metadata=1', '--level', '1', '--raid-devices', 2,
25822582
'/dev/sda1', '/dev/sdb1'),
@@ -2656,22 +2656,22 @@ def test_create_configuration_raid_5(self, mocked_execute,
26562656
mock.call('sgdisk', '-F', '/dev/sdc'),
26572657
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
26582658
'mkpart', 'primary', '42s', '10GiB'),
2659-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2659+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
26602660
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
26612661
'mkpart', 'primary', '42s', '10GiB'),
2662-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2662+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
26632663
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
26642664
'mkpart', 'primary', '42s', '10GiB'),
2665-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
2665+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
26662666
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
26672667
'mkpart', 'primary', '10GiB', '-1'),
2668-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2668+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
26692669
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
26702670
'mkpart', 'primary', '10GiB', '-1'),
2671-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2671+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
26722672
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
26732673
'mkpart', 'primary', '10GiB', '-1'),
2674-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
2674+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
26752675
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
26762676
'--metadata=1', '--level', '1', '--raid-devices', 3,
26772677
'/dev/sda1', '/dev/sdb1', '/dev/sdc1'),
@@ -2754,28 +2754,28 @@ def test_create_configuration_raid_6(self, mocked_execute,
27542754
mock.call('sgdisk', '-F', '/dev/sdd'),
27552755
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
27562756
'mkpart', 'primary', '42s', '10GiB'),
2757-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2757+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
27582758
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
27592759
'mkpart', 'primary', '42s', '10GiB'),
2760-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2760+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
27612761
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
27622762
'mkpart', 'primary', '42s', '10GiB'),
2763-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
2763+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
27642764
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
27652765
'mkpart', 'primary', '42s', '10GiB'),
2766-
mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
2766+
mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
27672767
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
27682768
'mkpart', 'primary', '10GiB', '-1'),
2769-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2769+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
27702770
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
27712771
'mkpart', 'primary', '10GiB', '-1'),
2772-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2772+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
27732773
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
27742774
'mkpart', 'primary', '10GiB', '-1'),
2775-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
2775+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
27762776
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
27772777
'mkpart', 'primary', '10GiB', '-1'),
2778-
mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
2778+
mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
27792779
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
27802780
'--metadata=1', '--level', '1', '--raid-devices', 4,
27812781
'/dev/sda1', '/dev/sdb1', '/dev/sdc1', '/dev/sdd1'),
@@ -2839,16 +2839,16 @@ def test_create_configuration_efi(self, mocked_os_path_isdir,
28392839
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
28402840
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
28412841
'mkpart', 'primary', '551MiB', '10GiB'),
2842-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2842+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
28432843
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
28442844
'mkpart', 'primary', '551MiB', '10GiB'),
2845-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2845+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
28462846
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
28472847
'mkpart', 'primary', '10GiB', '-1'),
2848-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2848+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
28492849
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
28502850
'mkpart', 'primary', '10GiB', '-1'),
2851-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2851+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
28522852
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
28532853
'--metadata=1', '--level', '1', '--raid-devices', 2,
28542854
'/dev/sda1', '/dev/sdb1'),
@@ -2918,16 +2918,16 @@ def test_create_configuration_force_gpt_with_disk_label(
29182918
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
29192919
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
29202920
'mkpart', 'primary', '8MiB', '10GiB'),
2921-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2921+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
29222922
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
29232923
'mkpart', 'primary', '8MiB', '10GiB'),
2924-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2924+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
29252925
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
29262926
'mkpart', 'primary', '10GiB', '-1'),
2927-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2927+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
29282928
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
29292929
'mkpart', 'primary', '10GiB', '-1'),
2930-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2930+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
29312931
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
29322932
'--metadata=1', '--level', '1', '--raid-devices', 2,
29332933
'/dev/sda1', '/dev/sdb1'),
@@ -2992,16 +2992,16 @@ def test_create_configuration_no_max(self, _mocked_isdir, mocked_execute,
29922992
mock.call('sgdisk', '-F', '/dev/sdb'),
29932993
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
29942994
'mkpart', 'primary', '42s', '10GiB'),
2995-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
2995+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
29962996
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
29972997
'mkpart', 'primary', '42s', '10GiB'),
2998-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
2998+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
29992999
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
30003000
'mkpart', 'primary', '10GiB', '30GiB'),
3001-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3001+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
30023002
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
30033003
'mkpart', 'primary', '10GiB', '30GiB'),
3004-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3004+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
30053005
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
30063006
'--metadata=1', '--level', '1', '--raid-devices', 2,
30073007
'/dev/sda1', '/dev/sdb1'),
@@ -3068,16 +3068,16 @@ def test_create_configuration_max_is_first_logical(self, _mocked_isdir,
30683068
mock.call('sgdisk', '-F', '/dev/sdb'),
30693069
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
30703070
'mkpart', 'primary', '42s', '20GiB'),
3071-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3071+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
30723072
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
30733073
'mkpart', 'primary', '42s', '20GiB'),
3074-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3074+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
30753075
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
30763076
'mkpart', 'primary', '20GiB', '-1'),
3077-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3077+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
30783078
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
30793079
'mkpart', 'primary', '20GiB', '-1'),
3080-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3080+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
30813081
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
30823082
'--metadata=1', '--level', '0', '--raid-devices', 2,
30833083
'/dev/sda1', '/dev/sdb1'),
@@ -3155,16 +3155,16 @@ def test_create_configuration_with_hints(self, mocked_execute,
31553155
mock.call('sgdisk', '-F', '/dev/sdb'),
31563156
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
31573157
'mkpart', 'primary', '42s', '10GiB'),
3158-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3158+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
31593159
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
31603160
'mkpart', 'primary', '42s', '10GiB'),
3161-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3161+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
31623162
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
31633163
'mkpart', 'primary', '10GiB', '-1'),
3164-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3164+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
31653165
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
31663166
'mkpart', 'primary', '10GiB', '-1'),
3167-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3167+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
31683168
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
31693169
'--metadata=1', '--level', '1', '--raid-devices', 2,
31703170
'/dev/sda1', '/dev/sdb1'),
@@ -3495,16 +3495,16 @@ def test_create_configuration_with_nvme(self, mocked_os_path_isdir,
34953495
'gpt'),
34963496
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
34973497
'mkpart', 'primary', '551MiB', '10GiB'),
3498-
mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
3498+
mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
34993499
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
35003500
'mkpart', 'primary', '551MiB', '10GiB'),
3501-
mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
3501+
mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
35023502
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
35033503
'mkpart', 'primary', '10GiB', '-1'),
3504-
mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
3504+
mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
35053505
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
35063506
'mkpart', 'primary', '10GiB', '-1'),
3507-
mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
3507+
mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
35083508
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
35093509
'--metadata=1', '--level', '1', '--raid-devices', 2,
35103510
'/dev/nvme0n1p1', '/dev/nvme1n1p1'),
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
fixes:
3+
- |
4+
Fixes an issue where partitions are not visible due to an
5+
incorrect call to have the partition table re-read during raid
6+
configuration creation.
7+

0 commit comments

Comments
 (0)