ironic.common.driver_factory module¶
- class ironic.common.driver_factory.BaseDriverFactory[source]¶
Bases:
object
Discover, load and manage the drivers available.
This is subclassed to load both main drivers and extra interfaces.
- property names¶
The list of driver names available.
- class ironic.common.driver_factory.HardwareTypesFactory[source]¶
Bases:
BaseDriverFactory
- class ironic.common.driver_factory.InterfaceFactory[source]¶
Bases:
BaseDriverFactory
- class ironic.common.driver_factory.NetworkInterfaceFactory¶
Bases:
InterfaceFactory
- class ironic.common.driver_factory.StorageInterfaceFactory¶
Bases:
InterfaceFactory
- ironic.common.driver_factory.all_interfaces()[source]¶
Get all interfaces for all interface types.
- Returns:
Dictionary mapping interface type to dictionary mapping interface name to interface object.
- ironic.common.driver_factory.build_driver_for_task(task)[source]¶
Builds a composable driver for a given task.
Starts with a BareDriver object, and attaches implementations of the various driver interfaces to it. They come from separate driver factories and are configurable via the database.
- Parameters:
task – The task containing the node to build a driver for.
- Returns:
A driver object for the task.
- Raises:
DriverNotFound if node.driver could not be found in the “ironic.hardware.types” namespaces.
- Raises:
InterfaceNotFoundInEntrypoint if some node interfaces are set to invalid or unsupported values.
- Raises:
IncompatibleInterface the requested implementation is not compatible with it with the hardware type.
- ironic.common.driver_factory.check_and_update_node_interfaces(node, hw_type=None)[source]¶
Ensure that node interfaces (e.g. for creation or updating) are valid.
Updates (but doesn’t save to the database) hardware interfaces with calculated defaults, if they are not provided.
This function is run on node updating and creation, as well as each time a driver instance is built for a node.
- Parameters:
node – node object to check and potentially update
hw_type – hardware type instance object; will be detected from node.driver if missing
- Returns:
True if any changes were made to the node, otherwise False
- Raises:
InterfaceNotFoundInEntrypoint on validation failure
- Raises:
NoValidDefaultForInterface if the default value cannot be calculated and is not provided in the configuration
- Raises:
DriverNotFound if the node’s hardware type is not found
- ironic.common.driver_factory.default_interface(hw_type, interface_type, driver_name=None, node=None)[source]¶
Calculate and return the default interface implementation.
Finds the first implementation that is supported by the hardware type and is enabled in the configuration.
- Parameters:
hw_type – hardware type instance object.
interface_type – type of the interface (e.g. ‘boot’).
driver_name – entrypoint name of the hw_type object. Is used for exception message.
node – the identifier of a node. If specified, is used for exception message.
- Returns:
an entrypoint name of the calculated default implementation.
- Raises:
InterfaceNotFoundInEntrypoint if the entry point was not found.
- Raises:
NoValidDefaultForInterface if no default interface can be found.
- ironic.common.driver_factory.enabled_supported_interfaces(hardware_type)[source]¶
Get usable interfaces for a given hardware type.
For a given hardware type, find the intersection of enabled and supported interfaces for each interface type. This is the set of interfaces that are usable for this hardware type.
- Parameters:
hardware_type – The hardware type object to search.
- Returns:
a dict mapping interface types to a list of enabled and supported interface names.
- ironic.common.driver_factory.get_hardware_type(hardware_type)[source]¶
Get a hardware type instance by name.
- Parameters:
hardware_type – the name of the hardware type to find
- Returns:
An instance of ironic.drivers.hardware_type.AbstractHardwareType
- Raises:
DriverNotFound if requested hardware type cannot be found
- ironic.common.driver_factory.get_interface(hw_type, interface_type, interface_name)[source]¶
Get interface implementation instance.
For hardware types also validates compatibility.
- Parameters:
hw_type – a hardware type instance.
interface_type – name of the interface type (e.g. ‘boot’).
interface_name – name of the interface implementation from an appropriate entry point (ironic.hardware.interfaces.<interface type>).
- Returns:
instance of the requested interface implementation.
- Raises:
InterfaceNotFoundInEntrypoint if the entry point was not found.
- Raises:
IncompatibleInterface if hw_type is a hardware type and the requested implementation is not compatible with it.