diff options
author | Zuul <zuul@review.opendev.org> | 2022-03-12 04:06:47 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-03-12 04:06:47 +0000 |
commit | c7295e2b2395f8e776aa42d5a9e5d3ba7ffdd3ee (patch) | |
tree | 2bfcac782f338597312ff2b734ea8ac766ba3c38 | |
parent | c69ea032fe8ab81e459fb44f846f440e7a2c8922 (diff) | |
parent | 7217c6d1d1f1671072d9b83080b732be47e257e6 (diff) | |
download | ironic-python-agent-c7295e2b2395f8e776aa42d5a9e5d3ba7ffdd3ee.tar.gz |
Merge "Rescan device after filesystem creation" into stable/xena
-rw-r--r-- | ironic_python_agent/partition_utils.py | 3 | ||||
-rw-r--r-- | ironic_python_agent/tests/unit/test_partition_utils.py | 17 | ||||
-rw-r--r-- | releasenotes/notes/rescan-device-after-mkfs-3f9d52a2e3b6fff3.yaml | 5 |
3 files changed, 21 insertions, 4 deletions
diff --git a/ironic_python_agent/partition_utils.py b/ironic_python_agent/partition_utils.py index 498fb284..8e03919b 100644 --- a/ironic_python_agent/partition_utils.py +++ b/ironic_python_agent/partition_utils.py @@ -312,6 +312,9 @@ def work_on_disk(dev, root_mb, swap_mb, ephemeral_mb, ephemeral_format, "formatted for node %(node)s", {'ephemeral': ephemeral_part, 'node': node_uuid}) + # Rescan device to get current status (e.g. reflect modification of mkfs) + disk_utils.trigger_device_rescan(dev) + uuids_to_return = { 'root uuid': root_part, 'efi system partition uuid': part_dict.get('efi system partition'), diff --git a/ironic_python_agent/tests/unit/test_partition_utils.py b/ironic_python_agent/tests/unit/test_partition_utils.py index 64316dc0..0064acde 100644 --- a/ironic_python_agent/tests/unit/test_partition_utils.py +++ b/ironic_python_agent/tests/unit/test_partition_utils.py @@ -406,6 +406,8 @@ class WorkOnDiskTestCase(base.IronicAgentTest): cpu_arch="") mock_unlink.assert_called_once_with('fake-path') + @mock.patch.object(disk_utils, 'trigger_device_rescan', + lambda d: None) @mock.patch.object(utils, 'mkfs', lambda fs, path, label=None: None) @mock.patch.object(disk_utils, 'block_uuid', lambda p: 'uuid') @mock.patch.object(disk_utils, 'populate_image', autospec=True) @@ -440,6 +442,8 @@ class WorkOnDiskTestCase(base.IronicAgentTest): self.assertEqual('uuid', res['root uuid']) self.assertFalse(mock_populate.called) + @mock.patch.object(disk_utils, 'trigger_device_rescan', + lambda d: None) @mock.patch.object(utils, 'mkfs', lambda fs, path, label=None: None) @mock.patch.object(disk_utils, 'block_uuid', lambda p: 'uuid') @mock.patch.object(disk_utils, 'populate_image', lambda image_path, @@ -473,11 +477,12 @@ class WorkOnDiskTestCase(base.IronicAgentTest): disk_label='gpt', cpu_arch="") + @mock.patch.object(disk_utils, 'trigger_device_rescan', autospec=True) @mock.patch.object(disk_utils, 'block_uuid', autospec=True) @mock.patch.object(disk_utils, 'populate_image', autospec=True) @mock.patch.object(utils, 'mkfs', autospec=True) def test_uefi_localboot(self, mock_mkfs, mock_populate_image, - mock_block_uuid): + mock_block_uuid, mock_trigger_device_rescan): """Test that we create a fat filesystem with UEFI localboot.""" root_part = '/dev/fake-part1' efi_part = '/dev/fake-part2' @@ -508,12 +513,14 @@ class WorkOnDiskTestCase(base.IronicAgentTest): root_part, conv_flags=None) mock_block_uuid.assert_any_call(root_part) mock_block_uuid.assert_any_call(efi_part) + mock_trigger_device_rescan.assert_called_once_with(self.dev) + @mock.patch.object(disk_utils, 'trigger_device_rescan', autospec=True) @mock.patch.object(disk_utils, 'block_uuid', autospec=True) @mock.patch.object(disk_utils, 'populate_image', autospec=True) @mock.patch.object(utils, 'mkfs', autospec=True) def test_preserve_ephemeral(self, mock_mkfs, mock_populate_image, - mock_block_uuid): + mock_block_uuid, mock_trigger_device_rescan): """Test that ephemeral partition doesn't get overwritten.""" ephemeral_part = '/dev/fake-part1' root_part = '/dev/fake-part2' @@ -541,11 +548,12 @@ class WorkOnDiskTestCase(base.IronicAgentTest): cpu_arch="") self.assertFalse(mock_mkfs.called) + @mock.patch.object(disk_utils, 'trigger_device_rescan', autospec=True) @mock.patch.object(disk_utils, 'block_uuid', autospec=True) @mock.patch.object(disk_utils, 'populate_image', autospec=True) @mock.patch.object(utils, 'mkfs', autospec=True) def test_ppc64le_prep_part(self, mock_mkfs, mock_populate_image, - mock_block_uuid): + mock_block_uuid, mock_trigger_device_rescan): """Test that PReP partition uuid is returned.""" prep_part = '/dev/fake-part1' root_part = '/dev/fake-part2' @@ -571,11 +579,12 @@ class WorkOnDiskTestCase(base.IronicAgentTest): cpu_arch="ppc64le") self.assertFalse(mock_mkfs.called) + @mock.patch.object(disk_utils, 'trigger_device_rescan', autospec=True) @mock.patch.object(disk_utils, 'block_uuid', autospec=True) @mock.patch.object(disk_utils, 'populate_image', autospec=True) @mock.patch.object(utils, 'mkfs', autospec=True) def test_convert_to_sparse(self, mock_mkfs, mock_populate_image, - mock_block_uuid): + mock_block_uuid, mock_trigger_device_rescan): ephemeral_part = '/dev/fake-part1' swap_part = '/dev/fake-part2' root_part = '/dev/fake-part3' diff --git a/releasenotes/notes/rescan-device-after-mkfs-3f9d52a2e3b6fff3.yaml b/releasenotes/notes/rescan-device-after-mkfs-3f9d52a2e3b6fff3.yaml new file mode 100644 index 00000000..3a8d9e08 --- /dev/null +++ b/releasenotes/notes/rescan-device-after-mkfs-3f9d52a2e3b6fff3.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Adds device rescan operation after partitioning the root device to ensure + that updated UUIDs are reflected correctly |