Fix regression in ramdisk deploy kernel parameters
After commit d7a5b3469c
the custom kernel
parameters are not used in cleaning/inspection. This patch fixes it.
Change-Id: Ic017cc0f3aebd4858a1a6e3326e5cf0fc0888d24
This commit is contained in:
parent
8d9bf692ec
commit
171474d69a
@ -29,6 +29,7 @@ from ironic.common import exception
|
||||
from ironic.common.glance_service import service_utils
|
||||
from ironic.common.i18n import _
|
||||
from ironic.common import images
|
||||
from ironic.common import states
|
||||
from ironic.common import swift
|
||||
from ironic.common import utils
|
||||
from ironic.conf import CONF
|
||||
@ -426,9 +427,12 @@ def _prepare_iso_image(task, kernel_href, ramdisk_href,
|
||||
{'node': task.node.uuid})
|
||||
|
||||
i_info = task.node.instance_info
|
||||
is_ramdisk_boot = (
|
||||
task.node.provision_state == states.DEPLOYING
|
||||
and deploy_utils.get_boot_option(task.node) == 'ramdisk'
|
||||
)
|
||||
|
||||
boot_option = deploy_utils.get_boot_option(task.node)
|
||||
if boot_option == 'ramdisk':
|
||||
if is_ramdisk_boot:
|
||||
download_source = (i_info.get('ramdisk_image_download_source')
|
||||
or CONF.deploy.ramdisk_image_download_source)
|
||||
else:
|
||||
@ -463,7 +467,7 @@ def _prepare_iso_image(task, kernel_href, ramdisk_href,
|
||||
|
||||
# NOTE(TheJulia): Until we support modifying a base iso, most of
|
||||
# this logic actually does nothing in the end. But it should!
|
||||
if boot_option == "ramdisk":
|
||||
if is_ramdisk_boot:
|
||||
if not base_iso:
|
||||
kernel_params = "root=/dev/ram0 text "
|
||||
kernel_params += i_info.get("ramdisk_kernel_arguments", "")
|
||||
|
@ -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)
|
||||
|
@ -0,0 +1,5 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes a regression in the ``ramdisk`` deploy where custom kernel parameters
|
||||
were not used during inspection and cleaning.
|
Loading…
Reference in New Issue
Block a user