diff options
-rw-r--r-- | ironic/common/pxe_utils.py | 6 | ||||
-rw-r--r-- | ironic/drivers/modules/ipxe.py | 3 | ||||
-rw-r--r-- | ironic/tests/unit/common/test_pxe_utils.py | 14 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/test_ipxe.py | 3 |
4 files changed, 22 insertions, 4 deletions
diff --git a/ironic/common/pxe_utils.py b/ironic/common/pxe_utils.py index 0a0ff400c..3ac328e61 100644 --- a/ironic/common/pxe_utils.py +++ b/ironic/common/pxe_utils.py @@ -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', diff --git a/ironic/drivers/modules/ipxe.py b/ironic/drivers/modules/ipxe.py index 08e448be8..9dca81d73 100644 --- a/ironic/drivers/modules/ipxe.py +++ b/ironic/drivers/modules/ipxe.py @@ -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. diff --git a/ironic/tests/unit/common/test_pxe_utils.py b/ironic/tests/unit/common/test_pxe_utils.py index f0eebb21d..6f1372ee0 100644 --- a/ironic/tests/unit/common/test_pxe_utils.py +++ b/ironic/tests/unit/common/test_pxe_utils.py @@ -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, diff --git a/ironic/tests/unit/drivers/modules/test_ipxe.py b/ironic/tests/unit/drivers/modules/test_ipxe.py index 56c35952c..c351b9a12 100644 --- a/ironic/tests/unit/drivers/modules/test_ipxe.py +++ b/ironic/tests/unit/drivers/modules/test_ipxe.py @@ -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) |