ironic.drivers.modules.redfish.boot module¶
- class ironic.drivers.modules.redfish.boot.RedfishVirtualMediaBoot(*args, **kwargs)[source]¶
Bases:
ironic.drivers.base.BootInterface
Virtual media boot interface over Redfish.
Virtual Media allows booting the system from the “virtual” CD/DVD drive containing the user image that BMC “inserts” into the drive.
The CD/DVD images must be in ISO format and (depending on BMC implementation) could be pulled over HTTP, served as iSCSI targets or NFS volumes.
The baseline boot workflow looks like this:
Pull kernel, ramdisk and ESP (FAT partition image with EFI boot loader) images (ESP is only needed for UEFI boot)
Create bootable ISO out of images (#1), push it to Glance and pass to the BMC as Swift temporary URL
Optionally create floppy image with desired system configuration data, push it to Glance and pass to the BMC as Swift temporary URL
Insert CD/DVD and (optionally) floppy images and set proper boot mode
For building deploy or rescue ISO, redfish boot interface uses deploy_kernel/deploy_ramdisk or rescue_kernel/rescue_ramdisk properties from [instance_info] or [driver_info].
For building boot (user) ISO, redfish boot interface seeks kernel_id and ramdisk_id properties in the Glance image metadata found in [instance_info]image_source node property.
- capabilities = ['iscsi_volume_boot', 'ramdisk_boot', 'ramdisk_boot_configdrive']¶
- clean_up_instance(task)[source]¶
Cleans up the boot of instance.
This method cleans up the environment that was setup for booting the instance.
- Parameters
task – A task from TaskManager.
- Returns
None
- clean_up_ramdisk(task)[source]¶
Cleans up the boot of ironic ramdisk.
This method cleans up the environment that was setup for booting the deploy ramdisk.
- Parameters
task – A task from TaskManager.
- Returns
None
- get_properties()[source]¶
Return the properties of the interface.
- Returns
dictionary of <property name>:<property description> entries.
- prepare_instance(task)[source]¶
Prepares the boot of instance over virtual media.
This method prepares the boot of the instance after reading relevant information from the node’s instance_info.
The internal logic is as follows:
If boot_option requested for this deploy is ‘local’, then set the node to boot from disk.
Unless boot_option requested for this deploy is ‘ramdisk’, pass root disk/partition ID to virtual media boot image
Otherwise build boot image, insert it into virtual media device and set node to boot from CD.
- Parameters
task – a task from TaskManager.
- Returns
None
- Raises
InstanceDeployFailure, if its try to boot iSCSI volume in ‘BIOS’ boot mode.
- prepare_ramdisk(task, ramdisk_params)[source]¶
Prepares the boot of deploy or rescue ramdisk over virtual media.
This method prepares the boot of the deploy or rescue ramdisk after reading relevant information from the node’s driver_info and instance_info.
- Parameters
task – A task from TaskManager.
ramdisk_params – the parameters to be passed to the ramdisk.
- Returns
None
- Raises
MissingParameterValue, if some information is missing in node’s driver_info or instance_info.
- Raises
InvalidParameterValue, if some information provided is invalid.
- Raises
IronicException, if some power or set boot boot device operation failed on the node.
- validate(task)[source]¶
Validate the deployment information for the task’s node.
This method validates whether the ‘driver_info’ and/or ‘instance_info’ properties of the task’s node contains the required information for this interface to function.
- Parameters
task – A TaskManager instance containing the node to act on.
- Raises
InvalidParameterValue on malformed parameter(s)
- Raises
MissingParameterValue on missing parameter(s)
- ironic.drivers.modules.redfish.boot.eject_vmedia(task, boot_device=None)[source]¶
Eject virtual CDs and DVDs
- Parameters
task – A task from TaskManager.
boot_device – sushy boot device e.g. VIRTUAL_MEDIA_CD, VIRTUAL_MEDIA_DVD or VIRTUAL_MEDIA_FLOPPY or None to eject everything (default).
- Raises
InvalidParameterValue, if no suitable virtual CD or DVD is found on the node.