diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-07-27 10:43:40 +0200 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-07-27 10:43:41 +0200 |
commit | 171474d69a8b21cac578a38b5153b3f563285e62 (patch) | |
tree | 1dbc95dc50308e160763cf451d2a7c53a5266bfe /ironic/tests/unit/drivers/modules/test_image_utils.py | |
parent | 8d9bf692ec67893201a098a88c71e82ca23e49bb (diff) | |
download | ironic-171474d69a8b21cac578a38b5153b3f563285e62.tar.gz |
Fix regression in ramdisk deploy kernel parameters
After commit d7a5b3469cfb5c16e122451e9cd8594d7a7671a1 the custom kernel
parameters are not used in cleaning/inspection. This patch fixes it.
Change-Id: Ic017cc0f3aebd4858a1a6e3326e5cf0fc0888d24
Diffstat (limited to 'ironic/tests/unit/drivers/modules/test_image_utils.py')
-rw-r--r-- | ironic/tests/unit/drivers/modules/test_image_utils.py | 77 |
1 files changed, 76 insertions, 1 deletions
diff --git a/ironic/tests/unit/drivers/modules/test_image_utils.py b/ironic/tests/unit/drivers/modules/test_image_utils.py index f45822771..edfb7b29b 100644 --- a/ironic/tests/unit/drivers/modules/test_image_utils.py +++ b/ironic/tests/unit/drivers/modules/test_image_utils.py @@ -22,6 +22,7 @@ from oslo_utils import importutils from oslo_utils import uuidutils from ironic.common import images +from ironic.common import states from ironic.common import utils from ironic.conductor import task_manager from ironic.drivers.modules import deploy_utils @@ -241,7 +242,8 @@ class RedfishImageUtilsTestCase(db_base.DbTestCase): enabled_inspect_interfaces=['redfish'], enabled_bios_interfaces=['redfish']) self.node = obj_utils.create_test_node( - self.context, driver='redfish', driver_info=INFO_DICT) + self.context, driver='redfish', driver_info=INFO_DICT, + provision_state=states.DEPLOYING) @mock.patch.object(image_utils.ImageHandler, 'unpublish_image', autospec=True) @@ -579,6 +581,79 @@ class RedfishImageUtilsTestCase(db_base.DbTestCase): root_uuid='1be26c0b-03f2-4d2e-ae87-c02d7f33c123', base_iso='/path/to/baseiso', inject_files=None) + @mock.patch.object(deploy_utils, 'get_boot_option', lambda node: 'ramdisk') + @mock.patch.object(image_utils.ImageHandler, 'publish_image', + autospec=True) + @mock.patch.object(images, 'create_boot_iso', autospec=True) + def test__prepare_iso_image_kernel_params_for_ramdisk( + self, mock_create_boot_iso, mock_publish_image): + with task_manager.acquire(self.context, self.node.uuid, + shared=True) as task: + kernel_params = 'network-config=base64-cloudinit-blob' + + task.node.instance_info['ramdisk_kernel_arguments'] = kernel_params + + image_utils._prepare_iso_image( + task, 'http://kernel/img', 'http://ramdisk/img', + bootloader_href=None, root_uuid=task.node.uuid) + + mock_create_boot_iso.assert_called_once_with( + mock.ANY, mock.ANY, 'http://kernel/img', 'http://ramdisk/img', + boot_mode='bios', esp_image_href=None, + kernel_params="root=/dev/ram0 text " + kernel_params, + root_uuid='1be26c0b-03f2-4d2e-ae87-c02d7f33c123', + base_iso=None, inject_files=None) + + @mock.patch.object(deploy_utils, 'get_boot_option', lambda node: 'ramdisk') + @mock.patch.object(image_utils.ImageHandler, 'publish_image', + autospec=True) + @mock.patch.object(images, 'create_boot_iso', autospec=True) + def test__prepare_iso_image_kernel_params_for_ramdisk_boot_iso( + self, mock_create_boot_iso, mock_publish_image): + with task_manager.acquire(self.context, self.node.uuid, + shared=True) as task: + kernel_params = 'network-config=base64-cloudinit-blob' + + task.node.instance_info['ramdisk_kernel_arguments'] = kernel_params + + image_utils._prepare_iso_image( + task, 'http://kernel/img', 'http://ramdisk/img', + bootloader_href=None, root_uuid=task.node.uuid, + base_iso='/path/to/baseiso') + + mock_create_boot_iso.assert_called_once_with( + mock.ANY, mock.ANY, 'http://kernel/img', 'http://ramdisk/img', + boot_mode='bios', esp_image_href=None, + # No custom parameters with a boot ISO present + kernel_params=None, + root_uuid='1be26c0b-03f2-4d2e-ae87-c02d7f33c123', + base_iso='/path/to/baseiso', inject_files=None) + + @mock.patch.object(deploy_utils, 'get_boot_option', lambda node: 'ramdisk') + @mock.patch.object(image_utils.ImageHandler, 'publish_image', + autospec=True) + @mock.patch.object(images, 'create_boot_iso', autospec=True) + def test__prepare_iso_image_kernel_params_for_ramdisk_cleaning( + self, mock_create_boot_iso, mock_publish_image): + with task_manager.acquire(self.context, self.node.uuid, + shared=True) as task: + kernel_params = 'network-config=base64-cloudinit-blob' + + task.node.driver_info['kernel_append_params'] = kernel_params + task.node.provision_state = states.CLEANING + + image_utils._prepare_iso_image( + task, 'http://kernel/img', 'http://ramdisk/img', + bootloader_href=None, root_uuid=task.node.uuid, + base_iso='/path/to/baseiso') + + mock_create_boot_iso.assert_called_once_with( + mock.ANY, mock.ANY, 'http://kernel/img', 'http://ramdisk/img', + boot_mode='bios', esp_image_href=None, + kernel_params=kernel_params, + root_uuid='1be26c0b-03f2-4d2e-ae87-c02d7f33c123', + base_iso='/path/to/baseiso', inject_files=None) + @mock.patch.object(image_utils.ImageHandler, 'publish_image', autospec=True) @mock.patch.object(images, 'create_boot_iso', autospec=True) |