Skip to content

Commit 0b292a1

Browse files
elfosardosteveb
authored andcommitted
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 <arne.wiebalck@cern.ch> [1] https: //opendev.org/openstack/ironic-python-agent/commit/dc8c1f16f9a00e2bff21612d1a9cf0ea0f3addf0 Change-Id: I2336e22dadc790cfbde87904612fcaa3b8c501db (cherry picked from commit 23e67b5) (cherry picked from commit 56e63ce)
1 parent 06cf7f3 commit 0b292a1

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
@@ -1880,7 +1880,7 @@ def _do_create_configuration(self, node, ports, raid_config):
18801880
# The real difference between partx and partprobe is
18811881
# unclear, but note that partprobe does not seem to
18821882
# work synchronously for nvme drives...
1883-
utils.execute("partx", "-u", device,
1883+
utils.execute("partx", "-a", device,
18841884
check_exit_code=False)
18851885
except processutils.ProcessExecutionError as e:
18861886
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
@@ -3421,16 +3421,16 @@ def test_create_configuration(self, mocked_os_path_isdir, mocked_execute,
34213421
mock.call('sgdisk', '-F', '/dev/sdb'),
34223422
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
34233423
'mkpart', 'primary', '42s', '10GiB'),
3424-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3424+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
34253425
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
34263426
'mkpart', 'primary', '42s', '10GiB'),
3427-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3427+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
34283428
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
34293429
'mkpart', 'primary', '10GiB', '-1'),
3430-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3430+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
34313431
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
34323432
'mkpart', 'primary', '10GiB', '-1'),
3433-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3433+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
34343434
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
34353435
'--metadata=1', '--level', '1', '--raid-devices', 2,
34363436
'/dev/sda1', '/dev/sdb1'),
@@ -3503,22 +3503,22 @@ def test_create_configuration_raid_5(self, mocked_execute,
35033503
mock.call('sgdisk', '-F', '/dev/sdc'),
35043504
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
35053505
'mkpart', 'primary', '42s', '10GiB'),
3506-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3506+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
35073507
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
35083508
'mkpart', 'primary', '42s', '10GiB'),
3509-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3509+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
35103510
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
35113511
'mkpart', 'primary', '42s', '10GiB'),
3512-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
3512+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
35133513
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
35143514
'mkpart', 'primary', '10GiB', '-1'),
3515-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3515+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
35163516
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
35173517
'mkpart', 'primary', '10GiB', '-1'),
3518-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3518+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
35193519
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
35203520
'mkpart', 'primary', '10GiB', '-1'),
3521-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
3521+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
35223522
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
35233523
'--metadata=1', '--level', '1', '--raid-devices', 3,
35243524
'/dev/sda1', '/dev/sdb1', '/dev/sdc1'),
@@ -3594,28 +3594,28 @@ def test_create_configuration_raid_6(self, mocked_execute,
35943594
mock.call('sgdisk', '-F', '/dev/sdd'),
35953595
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
35963596
'mkpart', 'primary', '42s', '10GiB'),
3597-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3597+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
35983598
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
35993599
'mkpart', 'primary', '42s', '10GiB'),
3600-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3600+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
36013601
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
36023602
'mkpart', 'primary', '42s', '10GiB'),
3603-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
3603+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
36043604
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
36053605
'mkpart', 'primary', '42s', '10GiB'),
3606-
mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
3606+
mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
36073607
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
36083608
'mkpart', 'primary', '10GiB', '-1'),
3609-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3609+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
36103610
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
36113611
'mkpart', 'primary', '10GiB', '-1'),
3612-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3612+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
36133613
mock.call('parted', '/dev/sdc', '-s', '-a', 'optimal', '--',
36143614
'mkpart', 'primary', '10GiB', '-1'),
3615-
mock.call('partx', '-u', '/dev/sdc', check_exit_code=False),
3615+
mock.call('partx', '-a', '/dev/sdc', check_exit_code=False),
36163616
mock.call('parted', '/dev/sdd', '-s', '-a', 'optimal', '--',
36173617
'mkpart', 'primary', '10GiB', '-1'),
3618-
mock.call('partx', '-u', '/dev/sdd', check_exit_code=False),
3618+
mock.call('partx', '-a', '/dev/sdd', check_exit_code=False),
36193619
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
36203620
'--metadata=1', '--level', '1', '--raid-devices', 4,
36213621
'/dev/sda1', '/dev/sdb1', '/dev/sdc1', '/dev/sdd1'),
@@ -3671,16 +3671,16 @@ def test_create_configuration_efi(self, mocked_os_path_isdir,
36713671
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
36723672
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
36733673
'mkpart', 'primary', '551MiB', '10GiB'),
3674-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3674+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
36753675
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
36763676
'mkpart', 'primary', '551MiB', '10GiB'),
3677-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3677+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
36783678
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
36793679
'mkpart', 'primary', '10GiB', '-1'),
3680-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3680+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
36813681
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
36823682
'mkpart', 'primary', '10GiB', '-1'),
3683-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3683+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
36843684
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
36853685
'--metadata=1', '--level', '1', '--raid-devices', 2,
36863686
'/dev/sda1', '/dev/sdb1'),
@@ -3742,16 +3742,16 @@ def test_create_configuration_force_gpt_with_disk_label(
37423742
mock.call('parted', '/dev/sdb', '-s', '--', 'mklabel', 'gpt'),
37433743
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
37443744
'mkpart', 'primary', '8MiB', '10GiB'),
3745-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3745+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
37463746
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
37473747
'mkpart', 'primary', '8MiB', '10GiB'),
3748-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3748+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
37493749
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
37503750
'mkpart', 'primary', '10GiB', '-1'),
3751-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3751+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
37523752
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
37533753
'mkpart', 'primary', '10GiB', '-1'),
3754-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3754+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
37553755
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
37563756
'--metadata=1', '--level', '1', '--raid-devices', 2,
37573757
'/dev/sda1', '/dev/sdb1'),
@@ -3809,16 +3809,16 @@ def test_create_configuration_no_max(self, _mocked_isdir, mocked_execute,
38093809
mock.call('sgdisk', '-F', '/dev/sdb'),
38103810
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
38113811
'mkpart', 'primary', '42s', '10GiB'),
3812-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3812+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
38133813
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
38143814
'mkpart', 'primary', '42s', '10GiB'),
3815-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3815+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
38163816
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
38173817
'mkpart', 'primary', '10GiB', '30GiB'),
3818-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3818+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
38193819
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
38203820
'mkpart', 'primary', '10GiB', '30GiB'),
3821-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3821+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
38223822
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
38233823
'--metadata=1', '--level', '1', '--raid-devices', 2,
38243824
'/dev/sda1', '/dev/sdb1'),
@@ -3877,16 +3877,16 @@ def test_create_configuration_max_is_first_logical(self, _mocked_isdir,
38773877
mock.call('sgdisk', '-F', '/dev/sdb'),
38783878
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
38793879
'mkpart', 'primary', '42s', '20GiB'),
3880-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3880+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
38813881
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
38823882
'mkpart', 'primary', '42s', '20GiB'),
3883-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3883+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
38843884
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
38853885
'mkpart', 'primary', '20GiB', '-1'),
3886-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3886+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
38873887
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
38883888
'mkpart', 'primary', '20GiB', '-1'),
3889-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3889+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
38903890
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
38913891
'--metadata=1', '--level', '0', '--raid-devices', 2,
38923892
'/dev/sda1', '/dev/sdb1'),
@@ -3956,16 +3956,16 @@ def test_create_configuration_with_hints(self, mocked_execute,
39563956
mock.call('sgdisk', '-F', '/dev/sdb'),
39573957
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
39583958
'mkpart', 'primary', '42s', '10GiB'),
3959-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3959+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
39603960
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
39613961
'mkpart', 'primary', '42s', '10GiB'),
3962-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3962+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
39633963
mock.call('parted', '/dev/sda', '-s', '-a', 'optimal', '--',
39643964
'mkpart', 'primary', '10GiB', '-1'),
3965-
mock.call('partx', '-u', '/dev/sda', check_exit_code=False),
3965+
mock.call('partx', '-a', '/dev/sda', check_exit_code=False),
39663966
mock.call('parted', '/dev/sdb', '-s', '-a', 'optimal', '--',
39673967
'mkpart', 'primary', '10GiB', '-1'),
3968-
mock.call('partx', '-u', '/dev/sdb', check_exit_code=False),
3968+
mock.call('partx', '-a', '/dev/sdb', check_exit_code=False),
39693969
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
39703970
'--metadata=1', '--level', '1', '--raid-devices', 2,
39713971
'/dev/sda1', '/dev/sdb1'),
@@ -4286,16 +4286,16 @@ def test_create_configuration_with_nvme(self, mocked_os_path_isdir,
42864286
'gpt'),
42874287
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
42884288
'mkpart', 'primary', '551MiB', '10GiB'),
4289-
mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
4289+
mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
42904290
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
42914291
'mkpart', 'primary', '551MiB', '10GiB'),
4292-
mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
4292+
mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
42934293
mock.call('parted', '/dev/nvme0n1', '-s', '-a', 'optimal', '--',
42944294
'mkpart', 'primary', '10GiB', '-1'),
4295-
mock.call('partx', '-u', '/dev/nvme0n1', check_exit_code=False),
4295+
mock.call('partx', '-a', '/dev/nvme0n1', check_exit_code=False),
42964296
mock.call('parted', '/dev/nvme1n1', '-s', '-a', 'optimal', '--',
42974297
'mkpart', 'primary', '10GiB', '-1'),
4298-
mock.call('partx', '-u', '/dev/nvme1n1', check_exit_code=False),
4298+
mock.call('partx', '-a', '/dev/nvme1n1', check_exit_code=False),
42994299
mock.call('mdadm', '--create', '/dev/md0', '--force', '--run',
43004300
'--metadata=1', '--level', '1', '--raid-devices', 2,
43014301
'/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)