summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/test_image_utils.py
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2021-07-27 10:43:40 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2021-07-27 10:43:41 +0200
commit171474d69a8b21cac578a38b5153b3f563285e62 (patch)
tree1dbc95dc50308e160763cf451d2a7c53a5266bfe /ironic/tests/unit/drivers/modules/test_image_utils.py
parent8d9bf692ec67893201a098a88c71e82ca23e49bb (diff)
downloadironic-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.py77
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)