ironic.drivers.modules.redfish.management module

class ironic.drivers.modules.redfish.management.RedfishManagement(*args, **kwargs)[source]

Bases: ManagementInterface

attach_virtual_media(task, device_type, image_url)[source]

Attach a virtual media device to the node.

Parameters:
clear_secure_boot_keys(task)[source]

Clear all secure boot keys.

Parameters:

task – a task from TaskManager.

Raises:

UnsupportedDriverExtension if secure boot is now supported.

Raises:

RedfishError on runtime driver error.

detach_virtual_media(task, device_types=None)[source]

Detach some or all virtual media devices from the node.

Parameters:
detect_vendor(task)[source]

Detects and returns the hardware vendor.

Uses the System’s Manufacturer field.

Parameters:

task – A task from TaskManager.

Raises:

InvalidParameterValue if an invalid component, indicator or state is specified.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishError on driver-specific problems.

Returns:

String representing the BMC reported Vendor or Manufacturer, otherwise returns None.

get_boot_device(task)[source]

Get the current boot device for a node.

Parameters:

task – a task from TaskManager.

Raises:

InvalidParameterValue on malformed parameter(s)

Raises:

MissingParameterValue on missing parameter(s)

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

Returns:

a dictionary containing:

boot_device:

the boot device, one of ironic.common.boot_devices or None if it is unknown.

persistent:

Boolean value or None, True if the boot device persists, False otherwise. None if it’s unknown.

get_boot_mode(task)[source]

Get the current boot mode for a node.

Provides the current boot mode of the node.

Parameters:

task – A task from TaskManager.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

DriverOperationError or its derivative in case of driver runtime error.

Returns:

The boot mode, one of ironic.common.boot_mode or None if it is unknown.

get_indicator_state(task, component, indicator)[source]

Get current state of the indicator of the hardware component.

Parameters:
  • task – A task from TaskManager.

  • component – The hardware component, one of ironic.common.components.

  • indicator – Indicator ID (as reported by get_supported_indicators).

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishError on an error from the Sushy library

Returns:

Current state of the indicator, one of ironic.common.indicator_states.

get_mac_addresses(task)[source]

Get MAC address information for the node.

Parameters:

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

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

Returns:

A list of MAC addresses for the node

get_node_health(task)[source]

Get the current health status for a node.

Retrieves the hardware health status from the Redfish System resource. The health status represents the overall condition of the server hardware, including components like processors, memory, fans, power supplies, storage, etc.

Parameters:

task – A task from TaskManager.

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

Returns:

One of ironic.common.health_states constants (OK, WARNING, CRITICAL) or None if health status is not available.

get_properties()[source]

Return the properties of the interface.

Returns:

dictionary of <property name>:<property description> entries.

get_secure_boot_state(task)[source]

Get the current secure boot state for the node.

Parameters:

task – A task from TaskManager.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishError or its derivative in case of a driver runtime error.

Raises:

UnsupportedDriverExtension if secure boot is not supported by the hardware.

Returns:

Boolean or None if status cannot be retrieved

get_sensors_data(task)[source]

Get sensors data.

Parameters:

task – a TaskManager instance.

Raises:

FailedToGetSensorData when getting the sensor data fails.

Raises:

FailedToParseSensorData when parsing sensor data fails.

Raises:

InvalidParameterValue if required parameters are missing.

Raises:

MissingParameterValue if a required parameter is missing.

Returns:

returns a dict of sensor data grouped by sensor type.

get_supported_boot_devices(task)[source]

Get a list of the supported boot devices.

Parameters:

task – a task from TaskManager.

Returns:

A list with the supported boot devices defined in ironic.common.boot_devices.

get_supported_boot_modes(task)[source]

Get a list of the supported boot modes.

Parameters:

task – A task from TaskManager.

Returns:

A list with the supported boot modes defined in ironic.common.boot_modes. If boot mode support can’t be determined, empty list is returned.

get_supported_indicators(task, component=None)[source]

Get a map of the supported indicators (e.g. LEDs).

Parameters:
  • task – A task from TaskManager.

  • component – If not None, return indicator information for just this component, otherwise return indicators for all existing components.

Returns:

A dictionary of hardware components (ironic.common.components) as keys with values being dictionaries having indicator IDs as keys and indicator properties as values.

{
    'chassis': {
        'enclosure-0': {
            "readonly": true,
            "states": [
                "OFF",
                "ON"
            ]
        }
    },
    'system':
        'blade-A': {
            "readonly": true,
            "states": [
                "OFF",
                "ON"
            ]
        }
    },
    'drive':
        'ssd0': {
            "readonly": true,
            "states": [
                "OFF",
                "ON"
            ]
        }
    }
}

get_virtual_media(task)[source]

Get all virtual media devices from the node.

Parameters:

task – A task from TaskManager.

inject_nmi(task)[source]

Inject NMI, Non Maskable Interrupt.

Inject NMI (Non Maskable Interrupt) for a node immediately.

Parameters:

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

Raises:

InvalidParameterValue on malformed parameter(s)

Raises:

MissingParameterValue on missing parameter(s)

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

reset_secure_boot_keys_to_default(task)[source]

Reset secure boot keys to manufacturing defaults.

Parameters:

task – a task from TaskManager.

Raises:

UnsupportedDriverExtension if secure boot is now supported.

Raises:

RedfishError on runtime driver error.

restore_boot_device(task, system)[source]

Restore boot device if needed.

Checks the redfish_boot_device internal flag and sets the one-time boot device accordingly. A warning is issued if it fails.

This method is supposed to be called from the Redfish power interface and should be considered private to the Redfish hardware type.

Parameters:
  • task – a task from TaskManager.

  • system – a Redfish System object.

set_bmc_clock(task, target_datetime, datetime_local_offset=None)[source]

Set the BMC clock using Redfish Manager resource.

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

  • target_datetime – The datetime to set in ISO8601 format

  • datetime_local_offset – The local time offset from UTC (optional)

Raises:

RedfishError if the operation fails

set_boot_device(task, device, persistent=False)[source]

Set the boot device for a node.

Set the boot device to use on next reboot of the node.

Parameters:
  • task – a task from TaskManager.

  • device – the boot device, one of ironic.common.boot_devices.

  • persistent – Boolean value. True if the boot device will persist to all future boots, False if not. Default: False.

Raises:

InvalidParameterValue on malformed parameter(s)

Raises:

MissingParameterValue on missing parameter(s)

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

set_boot_mode(task, mode)[source]

Set the boot mode for a node.

Set the boot mode to use on next reboot of the node.

Parameters:
Raises:

InvalidParameterValue if an invalid boot mode is specified.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishConnectionError when it fails to connect to Redfish

Raises:

RedfishError on an error from the Sushy library

set_indicator_state(task, component, indicator, state)[source]

Set indicator on the hardware component to the desired state.

Parameters:
Raises:

InvalidParameterValue if an invalid component, indicator or state is specified.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishError on an error from the Sushy library

set_secure_boot_state(task, state)[source]

Set the current secure boot state for the node.

Parameters:
  • task – A task from TaskManager.

  • state – A new state as a boolean.

Raises:

MissingParameterValue if a required parameter is missing

Raises:

RedfishError or its derivative in case of a driver runtime error.

Raises:

UnsupportedDriverExtension if secure boot is not supported by the hardware.

update_firmware(task, firmware_images)[source]

Updates the firmware on the node.

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

  • firmware_images – A list of firmware images are to apply.

Returns:

None if it is completed.

Raises:

RedfishError on an error from the Sushy library.

validate(task)[source]

Validates the driver information needed by the redfish driver.

Parameters:

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

Raises:

InvalidParameterValue on malformed parameter(s)

Raises:

MissingParameterValue on missing parameter(s)

verify_bmc_clock(task)[source]

Verify and auto-set the BMC clock to the current UTC time.

This step compares the system UTC time to the BMC’s Redfish datetime. If the difference exceeds 1 second, it attempts to sync the time. Verification fails only if the BMC time remains incorrect after the update.