summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/test_ipxe.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/drivers/modules/test_ipxe.py')
-rw-r--r--ironic/tests/unit/drivers/modules/test_ipxe.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/test_ipxe.py b/ironic/tests/unit/drivers/modules/test_ipxe.py
index 32bc1f3ed..271826b7f 100644
--- a/ironic/tests/unit/drivers/modules/test_ipxe.py
+++ b/ironic/tests/unit/drivers/modules/test_ipxe.py
@@ -896,6 +896,64 @@ class iPXEBootTestCase(db_base.DbTestCase):
boot_devices.PXE,
persistent=True)
+ @mock.patch('os.path.isfile', lambda filename: False)
+ @mock.patch.object(pxe_utils, 'create_pxe_config', autospec=True)
+ @mock.patch.object(manager_utils, 'node_set_boot_device', autospec=True)
+ @mock.patch.object(deploy_utils, 'switch_pxe_config', autospec=True)
+ @mock.patch.object(dhcp_factory, 'DHCPFactory', autospec=True)
+ @mock.patch.object(pxe_utils, 'cache_ramdisk_kernel', autospec=True)
+ @mock.patch.object(pxe_utils, 'get_instance_image_info', autospec=True)
+ def test_prepare_instance_netboot_ramdisk_with_kernel_arg(
+ self, get_image_info_mock, cache_mock,
+ dhcp_factory_mock, switch_pxe_config_mock,
+ set_boot_device_mock, create_pxe_config_mock):
+ http_url = 'http://192.1.2.3:1234'
+ self.config(http_url=http_url, group='deploy')
+ self.config(enabled_deploy_interfaces='ramdisk')
+ provider_mock = mock.MagicMock()
+ dhcp_factory_mock.return_value = provider_mock
+ self.node.instance_info = {'ramdisk_kernel_arguments': 'cat meow'}
+ image_info = {'kernel': ('', '/path/to/kernel'),
+ 'deploy_kernel': ('', '/path/to/kernel'),
+ 'ramdisk': ('', '/path/to/ramdisk'),
+ 'deploy_ramdisk': ('', '/path/to/ramdisk')}
+ get_image_info_mock.return_value = image_info
+ self.node.provision_state = states.DEPLOYING
+ self.node.deploy_interface = 'ramdisk'
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ dhcp_opts = pxe_utils.dhcp_options_for_instance(task,
+ ipxe_enabled=True)
+ dhcp_opts += pxe_utils.dhcp_options_for_instance(
+ task, ipxe_enabled=True, ip_version=6)
+ pxe_config_path = pxe_utils.get_pxe_config_file_path(
+ task.node.uuid, ipxe_enabled=True)
+ task.driver.boot.prepare_instance(task)
+ self.assertTrue(get_image_info_mock.called)
+ self.assertTrue(cache_mock.called)
+ uuid = self.node.uuid
+ expected_params = {
+ 'aki_path': 'http://192.1.2.3:1234/' + uuid + '/kernel',
+ 'ari_path': 'http://192.1.2.3:1234/' + uuid + '/ramdisk',
+ 'ramdisk_opts': 'cat meow',
+ 'pxe_append_params': 'nofb nomodeset vga=normal ipa-debug=1 '
+ 'ipa-global-request-'
+ 'id=' + task.context.request_id,
+ 'tftp_server': mock.ANY,
+ 'ipxe_timeout': 0
+ }
+ provider_mock.update_dhcp.assert_called_once_with(task, dhcp_opts)
+ create_pxe_config_mock.assert_called_once_with(
+ task, expected_params, CONF.pxe.ipxe_config_template,
+ ipxe_enabled=True)
+ switch_pxe_config_mock.assert_called_once_with(
+ pxe_config_path, None, boot_modes.LEGACY_BIOS, False,
+ ipxe_enabled=True, iscsi_boot=False, ramdisk_boot=True,
+ anaconda_boot=False)
+ set_boot_device_mock.assert_called_once_with(task,
+ boot_devices.PXE,
+ persistent=True)
+
@mock.patch.object(boot_mode_utils, 'configure_secure_boot_if_needed',
autospec=True)
@mock.patch.object(manager_utils, 'node_set_boot_device', autospec=True)