Merge "Fix iPXE boot interface with ipxe_enabled=False"

This commit is contained in:
Zuul 2019-02-01 05:29:29 +00:00 committed by Gerrit Code Review
commit 5bb519c4af
4 changed files with 22 additions and 4 deletions

View File

@ -649,7 +649,7 @@ def get_instance_image_info(task, ipxe_enabled=False):
return image_info
def get_image_info(node, mode='deploy'):
def get_image_info(node, mode='deploy', ipxe_enabled=False):
"""Generate the paths for TFTP files for deploy or rescue images.
This method generates the paths for the deploy (or rescue) kernel and
@ -659,6 +659,8 @@ def get_image_info(node, mode='deploy'):
:param mode: Label indicating a deploy or rescue operation being
carried out on the node. Supported values are 'deploy' and 'rescue'.
Defaults to 'deploy', indicating deploy operation is being carried out.
:param ipxe_enabled: A default False boolean value to tell the method
if the caller is using iPXE.
:returns: a dictionary whose keys are the names of the images
(deploy_kernel, deploy_ramdisk, or rescue_kernel, rescue_ramdisk) and
values are the absolute paths of them.
@ -668,7 +670,7 @@ def get_image_info(node, mode='deploy'):
d_info = parse_driver_info(node, mode=mode)
return get_kernel_ramdisk_info(
node.uuid, d_info, mode=mode)
node.uuid, d_info, mode=mode, ipxe_enabled=ipxe_enabled)
def build_deploy_pxe_options(task, pxe_info, mode='deploy',

View File

@ -147,7 +147,8 @@ class iPXEBoot(pxe_base.PXEBaseMixin, base.BootInterface):
provider = dhcp_factory.DHCPFactory()
provider.update_dhcp(task, dhcp_opts)
pxe_info = pxe_utils.get_image_info(node, mode=mode)
pxe_info = pxe_utils.get_image_info(node, mode=mode,
ipxe_enabled=True)
# NODE: Try to validate and fetch instance images only
# if we are in DEPLOYING state.

View File

@ -1114,6 +1114,20 @@ class PXEInterfacesTestCase(db_base.DbTestCase):
image_info = pxe_utils.get_image_info(self.node)
self.assertEqual(expected_info, image_info)
def test__get_deploy_image_info_ipxe(self):
expected_info = {'deploy_ramdisk':
(DRV_INFO_DICT['deploy_ramdisk'],
os.path.join(CONF.deploy.http_root,
self.node.uuid,
'deploy_ramdisk')),
'deploy_kernel':
(DRV_INFO_DICT['deploy_kernel'],
os.path.join(CONF.deploy.http_root,
self.node.uuid,
'deploy_kernel'))}
image_info = pxe_utils.get_image_info(self.node, ipxe_enabled=True)
self.assertEqual(expected_info, image_info)
def test__get_deploy_image_info_missing_deploy_kernel(self):
del self.node.driver_info['deploy_kernel']
self.assertRaises(exception.MissingParameterValue,

View File

@ -260,7 +260,8 @@ class iPXEBootTestCase(db_base.DbTestCase):
dhcp_opts = pxe_utils.dhcp_options_for_instance(
task, ipxe_enabled=True)
task.driver.boot.prepare_ramdisk(task, {'foo': 'bar'})
mock_deploy_img_info.assert_called_once_with(task.node, mode=mode)
mock_deploy_img_info.assert_called_once_with(task.node, mode=mode,
ipxe_enabled=True)
provider_mock.update_dhcp.assert_called_once_with(task, dhcp_opts)
if self.node.provision_state == states.DEPLOYING:
get_boot_mode_mock.assert_called_once_with(task)