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(*args, **kwargs)[source]¶
- Bases: - ConsoleInterface- A base ConsoleInterface that uses ipmitool. 
- class ironic.drivers.modules.ipmitool.IPMIManagement(*args, **kwargs)[source]¶
- Bases: - ManagementInterface- detect_vendor(task)[source]¶
- Detects and returns the hardware vendor. - 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 
- Returns:
- String representing the BMC reported Vendor or Manufacturer, otherwise returns None. 
 
 - get_boot_device(task)[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_devicesor 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(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 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(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:
- IPMIFailure on an error from ipmitool. 
- Returns:
- None 
 
 - set_boot_device(task, device, persistent=False)[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(task)[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(*args, **kwargs)[source]¶
- Bases: - PowerInterface- get_power_state(task)[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(task, timeout=None)[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. - Noneindicates 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(task, power_state, timeout=None)[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. - Noneindicates 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(task)[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(*args, **kwargs)[source]¶
- Bases: - IPMIConsole- A ConsoleInterface that uses ipmitool and shellinabox. - start_console(task)[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(task)[source]¶
- Stop the remote console session for the node. - Parameters:
- task – a task from TaskManager 
- Raises:
- ConsoleError if unable to stop the console 
 
 - supported = False¶
- Indicates if an interface is supported. - This will be set to False for interfaces which are untested in first- or third-party CI, or in the process of being deprecated. 
 
- class ironic.drivers.modules.ipmitool.IPMISocatConsole(*args, **kwargs)[source]¶
- Bases: - IPMIConsole- A ConsoleInterface that uses ipmitool and socat. - get_console(task)[source]¶
- Get the type and connection information about the console. - Parameters:
- task – a task from TaskManager 
 
 - start_console(task)[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 
 
 
- class ironic.drivers.modules.ipmitool.VendorPassthru(*args, **kwargs)[source]¶
- Bases: - VendorInterface- bmc_reset(task, http_method, warm=True)[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(task, **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’ supplied as a kwargument. 
 
- Raises:
- IPMIFailure on an error from ipmitool. 
- Raises:
- MissingParameterValue if a required parameter is missing. 
- Raises:
- InvalidParameterValue when an invalid value is specified. 
 
 - validate(task, method, **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.check_cipher_suite_errors(cmd_stderr)[source]¶
- Checks if the command stderr contains cipher suite errors. - Parameters:
- cmd_stderr – The command stderr. 
- Returns:
- True if the cmd_stderr contains a cipher suite error, False otherwise. 
 
- ironic.drivers.modules.ipmitool.choose_cipher_suite(actual_cipher_suite)[source]¶
- Gives the possible next available cipher suite version. - Based on CONF.ipmi.cipher_suite_versions and the last cipher suite version used that failed. This function is only called if the node doesn’t have cipher_suite set. Starts using the last element of the list and decreasing the index. - Parameters:
- actual_cipher_suite – latest cipher suite used in the ipmi call. 
- Returns:
- the next possible cipher suite or None in case of empty configuration. 
 
- ironic.drivers.modules.ipmitool.dump_sdr(task, file_path)[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.is_bridging_enabled(node)[source]¶
- Check if IPMI bridging is enabled. - This call is used in the inspector lookup. 
- ironic.drivers.modules.ipmitool.send_raw(task, raw_bytes)[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. 
 
- ironic.drivers.modules.ipmitool.update_cipher_suite_cmd(actual_cs, args)[source]¶
- Updates variables and the cipher suite cmd. - This function updates the values for all parameters so they can be used in the next retry of _exec_ipmitool. - Parameters:
- actual_cs – a string that represents the cipher suite that was used in the command. 
- args – a list that contains the ipmitool command that was executed, it will be modified in-place. 
 
- Returns:
- the next actual_cs 
 
