ironic.drivers.modules.ipmitool module

ironic.drivers.modules.ipmitool module

IPMI power manager driver.

Uses the ‘ipmitool’ command (http://ipmitool.sourceforge.net/) to remotely manage hardware. This includes setting the boot device, getting a serial-over-LAN console, and controlling the power state of the machine.

NOTE THAT CERTAIN DISTROS MAY INSTALL openipmi BY DEFAULT, INSTEAD OF ipmitool, WHICH PROVIDES DIFFERENT COMMAND-LINE OPTIONS AND IS NOT SUPPORTED BY THIS DRIVER.

class ironic.drivers.modules.ipmitool.IPMIConsole[source]

Bases: ironic.drivers.base.ConsoleInterface

A base ConsoleInterface that uses ipmitool.

get_properties()[source]

Return the properties of the interface.

Returns:dictionary of <property name>:<property description> entries.
validate(**kwargs)[source]

Validate the Node console info.

Parameters:task – a task from TaskManager.
Raises:InvalidParameterValue
Raises:MissingParameterValue when a required parameter is missing
class ironic.drivers.modules.ipmitool.IPMIManagement[source]

Bases: ironic.drivers.base.ManagementInterface

get_boot_device(**kwargs)[source]

Get the current boot device for the task’s node.

Returns the current boot device of the node.

Parameters:task – a task from TaskManager.
Raises:InvalidParameterValue if required IPMI parameters are missing.
Raises:IPMIFailure on an error from ipmitool.
Raises:MissingParameterValue if a required parameter is missing.
Returns:a dictionary containing:
boot_device:the boot device, one of ironic.common.boot_devices or None if it is unknown.
persistent:Whether the boot device will persist to all future boots or not, None if it is unknown.
get_properties()[source]

Return the properties of the interface.

Returns:dictionary of <property name>:<property description> entries.
get_sensors_data(**kwargs)[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 ipmi parameters are missing
Raises:MissingParameterValue if a required parameter is missing.
Returns:returns a dict of sensor data group 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.
inject_nmi(**kwargs)[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:IPMIFailure on an error from ipmitool.
Returns:None
set_boot_device(**kwargs)[source]

Set the boot device for the task’s 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 if an invalid boot device is specified

Raises:

MissingParameterValue if required ipmi parameters are missing.

Raises:

IPMIFailure on an error from ipmitool.

validate(**kwargs)[source]

Check that ‘driver_info’ contains IPMI credentials.

Validates whether the ‘driver_info’ property of the supplied task’s node contains the required credentials information.

Parameters:task – a task from TaskManager.
Raises:InvalidParameterValue if required IPMI parameters are missing.
Raises:MissingParameterValue if a required parameter is missing.
class ironic.drivers.modules.ipmitool.IPMIPower[source]

Bases: ironic.drivers.base.PowerInterface

get_power_state(**kwargs)[source]

Get the current power state of the task’s node.

Parameters:task – a TaskManager instance containing the node to act on.
Returns:one of ironic.common.states POWER_OFF, POWER_ON or ERROR.
Raises:InvalidParameterValue if required ipmi parameters are missing.
Raises:MissingParameterValue if a required parameter is missing.
Raises:IPMIFailure on an error from ipmitool (from _power_status call).
get_properties()[source]

Return the properties of the interface.

Returns:dictionary of <property name>:<property description> entries.
get_supported_power_states(task)[source]

Get a list of the supported power states.

Parameters:task – A TaskManager instance containing the node to act on. currently not used.
Returns:A list with the supported power states defined in ironic.common.states.
reboot(**kwargs)[source]

Cycles the power to the task’s node.

Parameters:
  • task – a TaskManager instance containing the node to act on.
  • timeout – timeout (in seconds) positive integer (> 0) for any power state. The timeout is counted once during power off and once during power on for reboots. None indicates that the default timeout will be used.
Raises:

MissingParameterValue if required ipmi parameters are missing.

Raises:

InvalidParameterValue if an invalid power state was specified.

Raises:

PowerStateFailure if the final state of the node is not POWER_ON or the intermediate state of the node is not POWER_OFF.

set_power_state(**kwargs)[source]

Turn the power on, off, soft reboot, or soft power off.

Parameters:
  • task – a TaskManager instance containing the node to act on.
  • power_state – desired power state. one of ironic.common.states, POWER_ON, POWER_OFF, SOFT_POWER_OFF, or SOFT_REBOOT.
  • timeout – timeout (in seconds) positive integer (> 0) for any power state. The timeout is counted once during power off and once during power on for reboots. None indicates that the default timeout will be used.
Raises:

InvalidParameterValue if an invalid power state was specified.

Raises:

MissingParameterValue if required ipmi parameters are missing

Raises:

PowerStateFailure if the power couldn’t be set to pstate.

validate(**kwargs)[source]

Validate driver_info for ipmitool driver.

Check that node[‘driver_info’] contains IPMI credentials.

Parameters:task – a TaskManager instance containing the node to act on.
Raises:InvalidParameterValue if required ipmi parameters are missing.
Raises:MissingParameterValue if a required parameter is missing.
class ironic.drivers.modules.ipmitool.IPMIShellinaboxConsole[source]

Bases: ironic.drivers.modules.ipmitool.IPMIConsole

A ConsoleInterface that uses ipmitool and shellinabox.

get_console(**kwargs)[source]

Get the type and connection information about the console.

start_console(**kwargs)[source]

Start a remote console for the node.

Parameters:task – a task from TaskManager
Raises:InvalidParameterValue if required ipmi parameters are missing
Raises:PasswordFileFailedToCreate if unable to create a file containing the password
Raises:ConsoleError if the directory for the PID file cannot be created
Raises:ConsoleSubprocessFailed when invoking the subprocess failed
stop_console(**kwargs)[source]

Stop the remote console session for the node.

Parameters:task – a task from TaskManager
Raises:ConsoleError if unable to stop the console
class ironic.drivers.modules.ipmitool.IPMISocatConsole[source]

Bases: ironic.drivers.modules.ipmitool.IPMIConsole

A ConsoleInterface that uses ipmitool and socat.

get_console(**kwargs)[source]

Get the type and connection information about the console.

Parameters:task – a task from TaskManager
start_console(**kwargs)[source]

Start a remote console for the node.

Parameters:task – a task from TaskManager
Raises:InvalidParameterValue if required ipmi parameters are missing
Raises:PasswordFileFailedToCreate if unable to create a file containing the password
Raises:ConsoleError if the directory for the PID file cannot be created
Raises:ConsoleSubprocessFailed when invoking the subprocess failed
stop_console(**kwargs)[source]

Stop the remote console session for the node.

Parameters:task – a task from TaskManager
Raises:ConsoleError if unable to stop the console
class ironic.drivers.modules.ipmitool.VendorPassthru[source]

Bases: ironic.drivers.base.VendorInterface

bmc_reset(**kwargs)[source]

Reset BMC with IPMI command ‘bmc reset (warm|cold)’.

Parameters:
  • task – a TaskManager instance.
  • http_method – the HTTP method used on the request.
  • warm – boolean parameter to decide on warm or cold reset.
Raises:

IPMIFailure on an error from ipmitool.

Raises:

MissingParameterValue if a required parameter is missing.

Raises:

InvalidParameterValue when an invalid value is specified

get_properties()[source]

Return the properties of the interface.

Returns:dictionary of <property name>:<property description> entries.
send_raw(**kwargs)[source]

Send raw bytes to the BMC. Bytes should be a string of bytes.

Parameters:
  • task – a TaskManager instance.
  • http_method – the HTTP method used on the request.
  • raw_bytes – a string of raw bytes to send, e.g. ‘0x00 0x01’
Raises:

IPMIFailure on an error from ipmitool.

Raises:

MissingParameterValue if a required parameter is missing.

Raises:

InvalidParameterValue when an invalid value is specified.

validate(**kwargs)[source]

Validate vendor-specific actions.

If invalid, raises an exception; otherwise returns None.

Valid methods:
  • send_raw
  • bmc_reset
Parameters:
  • task – a task from TaskManager.
  • method – method to be validated
  • kwargs – info for action.
Raises:

InvalidParameterValue when an invalid parameter value is specified.

Raises:

MissingParameterValue if a required parameter is missing.

ironic.drivers.modules.ipmitool.dump_sdr(*args, **kwargs)[source]

Dump SDR data to a file.

Parameters:
  • task – a TaskManager instance.
  • file_path – the path to SDR dump file.
Raises:

IPMIFailure on an error from ipmitool.

Raises:

MissingParameterValue if a required parameter is missing.

Raises:

InvalidParameterValue when an invalid value is specified.

ironic.drivers.modules.ipmitool.send_raw(*args, **kwargs)[source]

Send raw bytes to the BMC. Bytes should be a string of bytes.

Parameters:
  • task – a TaskManager instance.
  • raw_bytes – a string of raw bytes to send, e.g. ‘0x00 0x01’
Returns:

a tuple with stdout and stderr.

Raises:

IPMIFailure on an error from ipmitool.

Raises:

MissingParameterValue if a required parameter is missing.

Raises:

InvalidParameterValue when an invalid value is specified.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.