Merge "Clean up kernel_append_params for Redfish and iLO"

This commit is contained in:
Zuul 2021-05-19 11:34:18 +00:00 committed by Gerrit Code Review
commit 9a8b501e5c
6 changed files with 73 additions and 24 deletions

View File

@ -193,10 +193,21 @@ place into on a FAT image, then insert the image into node's virtual floppy
drive.
When booting over PXE or virtual media, and user instance requires some
specific kernel configuration, ``[instance_info]/kernel_append_params``
property can be used to pass user-specified kernel command line parameters.
For ramdisk kernel, ``[instance_info]/kernel_append_params`` property serves
the same purpose.
specific kernel configuration, the node's
``instance_info[kernel_append_params]`` or
``driver_info[kernel_append_params]`` properties can be used to pass
user-specified kernel command line parameters.
.. code-block:: bash
baremetal node set node-0 \
--driver-info kernel_append_params="nofb nomodeset vga=normal"
.. note::
The ``driver_info`` field is supported starting with the Xena release.
For ramdisk boot, the ``instance_info[ramdisk_kernel_arguments]`` property
serves the same purpose.
Pre-built ISO images
~~~~~~~~~~~~~~~~~~~~

View File

@ -79,12 +79,12 @@ OPTIONAL_PROPERTIES = {
"iLO.")
}
KERNEL_PARAM_PROPERTIES = {
'ilo_kernel_append_params': _("Additional kernel parameters to pass down "
"to instance kernel. These parameters can "
"be consumed by the kernel or by the "
"applications by reading /proc/cmdline. "
"Mind severe cmdline size limit. Overrides "
"[ilo]/kernel_append_params ironic option.")
'kernel_append_params': _("Additional kernel parameters to pass down "
"to instance kernel. These parameters can "
"be consumed by the kernel or by the "
"applications by reading /proc/cmdline. "
"Mind severe cmdline size limit. Overrides "
"[ilo]/kernel_append_params ironic option.")
}
COMMON_PROPERTIES = REQUIRED_PROPERTIES
VMEDIA_OPTIONAL_PROPERTIES = OPTIONAL_PROPERTIES.copy()

View File

@ -33,6 +33,7 @@ from ironic.common import utils
from ironic.conf import CONF
from ironic.drivers.modules import boot_mode_utils
from ironic.drivers.modules import deploy_utils
from ironic.drivers import utils as driver_utils
LOG = log.getLogger(__name__)
@ -433,7 +434,6 @@ def _prepare_iso_image(task, kernel_href, ramdisk_href,
{"boot_iso": base_iso})
img_handler = ImageHandler(task.node.driver)
k_param = img_handler.kernel_params
i_info = task.node.instance_info
@ -447,7 +447,8 @@ def _prepare_iso_image(task, kernel_href, ramdisk_href,
kernel_params = None
else:
kernel_params = i_info.get('kernel_append_params', k_param)
kernel_params = driver_utils.get_kernel_append_params(
task.node, default=img_handler.kernel_params)
if params and not base_iso:
kernel_params = ' '.join(

View File

@ -54,9 +54,9 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
def test_parse_driver_info_deploy_iso(self):
self.node.driver_info['ilo_deploy_iso'] = 'deploy-iso'
self.node.driver_info['ilo_kernel_append_params'] = 'kernel-param'
self.node.driver_info['kernel_append_params'] = 'kernel-param'
expected_driver_info = {'ilo_bootloader': None,
'ilo_kernel_append_params': 'kernel-param',
'kernel_append_params': 'kernel-param',
'ilo_deploy_iso': 'deploy-iso'}
actual_driver_info = ilo_boot.parse_driver_info(self.node)
@ -65,7 +65,7 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
def test_parse_driver_info_rescue_iso(self):
self.node.driver_info['ilo_rescue_iso'] = 'rescue-iso'
expected_driver_info = {'ilo_bootloader': None,
'ilo_kernel_append_params': None,
'kernel_append_params': None,
'ilo_rescue_iso': 'rescue-iso'}
actual_driver_info = ilo_boot.parse_driver_info(self.node, 'rescue')
@ -75,11 +75,11 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
self.node.driver_info['ilo_deploy_kernel'] = 'kernel'
self.node.driver_info['ilo_deploy_ramdisk'] = 'ramdisk'
self.node.driver_info['ilo_bootloader'] = 'bootloader'
self.node.driver_info['ilo_kernel_append_params'] = 'kernel-param'
self.node.driver_info['kernel_append_params'] = 'kernel-param'
expected_driver_info = {'ilo_deploy_kernel': 'kernel',
'ilo_deploy_ramdisk': 'ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': 'kernel-param'}
'kernel_append_params': 'kernel-param'}
actual_driver_info = ilo_boot.parse_driver_info(self.node)
self.assertEqual(expected_driver_info, actual_driver_info)
@ -91,7 +91,7 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
expected_driver_info = {'ilo_rescue_kernel': 'kernel',
'ilo_rescue_ramdisk': 'ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': None}
'kernel_append_params': None}
actual_driver_info = ilo_boot.parse_driver_info(self.node, 'rescue')
self.assertEqual(expected_driver_info, actual_driver_info)
@ -103,7 +103,7 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
expected_driver_info = {'ilo_deploy_kernel': 'kernel',
'ilo_deploy_ramdisk': 'ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': None}
'kernel_append_params': None}
actual_driver_info = ilo_boot.parse_driver_info(self.node)
self.assertEqual(expected_driver_info, actual_driver_info)
@ -116,7 +116,7 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
expected_driver_info = {'ilo_rescue_kernel': 'kernel',
'ilo_rescue_ramdisk': 'ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': None}
'kernel_append_params': None}
actual_driver_info = ilo_boot.parse_driver_info(self.node, 'rescue')
self.assertEqual(expected_driver_info, actual_driver_info)
@ -128,7 +128,7 @@ class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
expected_driver_info = {'ilo_deploy_kernel': 'kernel',
'ilo_deploy_ramdisk': 'ramdisk',
'ilo_bootloader': None,
'ilo_kernel_append_params': None}
'kernel_append_params': None}
actual_driver_info = ilo_boot.parse_driver_info(self.node)
self.assertEqual(expected_driver_info, actual_driver_info)
@ -1546,7 +1546,7 @@ class IloUefiHttpsBootTestCase(db_base.DbTestCase):
'ilo_deploy_kernel': 'deploy-kernel',
'ilo_deploy_ramdisk': 'deploy-ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': 'nofb nomodeset vga=normal'
'kernel_append_params': 'nofb nomodeset vga=normal'
}
deploy_info.update({'ilo_username': 'admin',
@ -1577,7 +1577,7 @@ class IloUefiHttpsBootTestCase(db_base.DbTestCase):
driver_info['ilo_rescue_ramdisk'] = 'rescue-ramdisk'
driver_info['ilo_bootloader'] = 'bootloader'
driver_info['ilo_add_certificates'] = 'false'
driver_info['ilo_kernel_append_params'] = 'kernel-param'
driver_info['kernel_append_params'] = 'kernel-param'
driver_info['dummy_key'] = 'dummy-value'
self.node.driver_info = driver_info
self.node.save()
@ -1588,7 +1588,7 @@ class IloUefiHttpsBootTestCase(db_base.DbTestCase):
'ilo_rescue_kernel': 'rescue-kernel',
'ilo_rescue_ramdisk': 'rescue-ramdisk',
'ilo_bootloader': 'bootloader',
'ilo_kernel_append_params': 'kernel-param'
'kernel_append_params': 'kernel-param'
}
deploy_info.update({'ilo_username': 'admin',

View File

@ -553,6 +553,29 @@ class RedfishImageUtilsTestCase(db_base.DbTestCase):
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)
def test__prepare_iso_image_kernel_params_driver_info(
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
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)
def test__prepare_iso_image_bootable_iso(self):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:

View File

@ -0,0 +1,14 @@
---
features:
- |
The ``redfish-virtual-media``, ``ilo-virtual-media`` and
``idrac-redfish-virtual-media`` boot interfaces now support
``kernel_append_params`` not only in the node's ``instance_info``, but also
``driver_info``. This only applies when the boot image is built from
a kernel and an initramfs, not when a pre-built ISO is used.
deprecations:
- |
The ``ilo-virtual-media`` boot interface has previously declared support
for the ``ilo_kernel_append_params`` option in ``driver_info``. It has
never been implemented in reality and has been replaces by the new
``kernel_append_params``.