ironic.drivers.utils module

class ironic.drivers.utils.MixinVendorInterface(*args, **kwargs)[source]

Bases: VendorInterface

Wrapper around multiple VendorInterfaces.

get_properties()[source]

Return the properties from all the VendorInterfaces.

Returns:

a dictionary of <property_name>:<property_description> entries.

validate(task, method, **kwargs)[source]

Call validate on the appropriate interface only.

Raises:

UnsupportedDriverExtension if ‘method’ can not be mapped to the supported interfaces.

Raises:

InvalidParameterValue if ‘method’ is invalid.

Raises:

MissingParameterValue if missing ‘method’ or parameters in kwargs.

ironic.drivers.utils.add_node_capability(task, capability, value)[source]

Add ‘capability’ to node’s ‘capabilities’ property.

If ‘capability’ is already present, then a duplicate entry will be added.

Parameters:
  • task – Task object.

  • capability – Capability key.

  • value – Capability value.

ironic.drivers.utils.capabilities_to_dict(capabilities)[source]

Parse the capabilities string into a dictionary

Parameters:

capabilities – the capabilities of the node as a formatted string.

Raises:

InvalidParameterValue if capabilities is not an string or has a malformed value

ironic.drivers.utils.collect_ramdisk_logs(node, label=None)[source]

Collect and store the system logs from the IPA ramdisk.

Collect and store the system logs from the IPA ramdisk. This method makes a call to the IPA ramdisk to collect the logs and store it according to the configured storage backend.

Parameters:
  • node – A node object.

  • label – A string to label the log file such as a clean step name.

ironic.drivers.utils.ensure_next_boot_device(task, driver_info)[source]

Ensure boot from correct device if persistent is True

If ipmi_force_boot_device is True and is_next_boot_persistent, set to boot from correct device, else unset is_next_boot_persistent field.

Parameters:
  • task – Node object.

  • driver_info – Node driver_info.

ironic.drivers.utils.force_persistent_boot(task, device, persistent)[source]

Set persistent boot device to driver_internal_info

If persistent is True set ‘persistent_boot_device’ field to the boot device and reset persistent to False, else set ‘is_next_boot_persistent’ to False.

Parameters:
  • task – Task object.

  • device – Boot device.

  • persistent – Whether next boot is persistent or not.

ironic.drivers.utils.get_agent_iso(node, mode='deploy', deprecated_prefix=None)[source]

Get the agent ISO image.

ironic.drivers.utils.get_agent_kernel_ramdisk(node, mode='deploy', deprecated_prefix=None)[source]

Get the agent kernel/ramdisk as a dictionary.

ironic.drivers.utils.get_field(node, name, deprecated_prefix=None, use_conf=False, collection='driver_info')[source]

Get a driver_info field with deprecated prefix.

ironic.drivers.utils.get_kernel_append_params(node, default)[source]

Get the applicable kernel params.

The locations are checked in this order:

  1. The node’s instance_info.

  2. The node’s driver_info.

  3. Configuration.

Parameters:
  • node – Node object.

  • default – Default value.

ironic.drivers.utils.get_node_capability(node, capability)[source]

Returns ‘capability’ value from node’s ‘capabilities’ property.

Parameters:
  • node – Node object.

  • capability – Capability key.

Returns:

Capability value. If capability is not present, then return “None”

ironic.drivers.utils.get_node_mac_addresses(task)[source]

Get all MAC addresses for the ports belonging to this task’s node.

Parameters:

task – a TaskManager instance containing the node to act on.

Returns:

A list of MAC addresses in the format xx:xx:xx:xx:xx:xx.

ironic.drivers.utils.get_ramdisk_logs_file_name(node, label=None)[source]

Construct the log file name.

Parameters:
  • node – A node object.

  • label – A string to label the log file such as a clean step name.

Returns:

The log file name.

ironic.drivers.utils.need_prepare_ramdisk(node)[source]

Check if node needs preparing ramdisk

Parameters:

node – Node to check for

Returns:

True if need to prepare ramdisk, otherwise False

ironic.drivers.utils.normalize_mac(mac)[source]

Remove ‘-’ and ‘:’ characters and lowercase the MAC string.

Parameters:

mac – MAC address to normalize.

Returns:

Normalized MAC address string.

ironic.drivers.utils.power_off_and_on(task)[source]

A context manager that handles a reboot.

If disable_power_off is False, the node is powered off before yielding and powered back on afterwards. Otherwise, one reboot is issued in the end.

ironic.drivers.utils.store_ramdisk_logs(node, logs, label=None)[source]

Store the ramdisk logs.

This method stores the ramdisk logs according to the configured storage backend.

Parameters:
  • node – A node object.

  • logs – A gzipped and base64 encoded string containing the logs archive.

  • label – A string to label the log file such as a clean step name.

Raises:

OSError if the directory to save the logs cannot be created.

Raises:

IOError when the logs can’t be saved to the local file system.

Raises:

SwiftOperationError, if any operation with Swift fails.