--- features: - | Adds support for dynamic drivers. Using a dynamic driver in a node's ``driver`` field is now possible. Dynamic drivers are composed of a ``hardware type`` and a number of ``hardware interfaces``. NOTE: this feature is considered somewhat experimental, as not all classic drivers have a corresponding dynamic driver, and there is minimal CI for dynamic drivers at the time of this writing. Hardware types are enabled via the ``[DEFAULT]/enabled_hardware_types`` configuration option, and hardware interfaces are enabled via the ``[DEFAULT]/enabled_*_interfaces`` configuration option. A default interface to use when creating or updating nodes can be specified with the ``[DEFAULT]/default_*_interface`` configuration option. The ironic-conductor process will now fail to start if: - a default interface implementation for any enabled hardware type cannot be found. - a dynamic driver and a classic driver with the same name are both enabled. - at least one classic driver *or* one dynamic driver is not enabled. Hardware types available in this release are: - ``ipmi`` for IPMI-compatible hardware. This type is enabled by default. Uses the ``ipmitool`` utility under the hood, similar to existing classic drivers ``pxe_ipmitool`` and ``agent_ipmitool``. Supports both types of serial console: via ``shellinabox`` and via ``socat``, both are disabled by default. - ``irmc`` for FUJITSU PRIMERGY servers, disabled by default. This feature has a number of REST API changes, all of which are available in API version 1.31. - Adds additional parameters and response fields for GET /v1/drivers and GET /v1/drivers/. - Exposes the following fields on the node resource, to allow getting and setting interfaces for a dynamic driver: * boot_interface * console_interface * deploy_interface * inspect_interface * management_interface * power_interface * raid_interface * vendor_interface - Allows dynamic drivers to be used and returned in the following API calls, in all versions of the REST API: * GET /v1/drivers * GET /v1/drivers/ * GET /v1/drivers//properties * GET /v1/drivers//vendor_passthru/methods * GET/POST /v1/drivers//vendor_passthru * GET/POST /v1/nodes//vendor_passthru For more details on the REST API changes, see the `REST API Version History documentation `_. This also adds dynamic interface fields to node-related notifications: * boot_interface * console_interface * deploy_interface * inspect_interface * management_interface * power_interface * raid_interface * vendor_interface The affected notifications are: * baremetal.node.create.*, new payload version 1.1 * baremetal.node.update.*, new payload version 1.1 * baremetal.node.delete.*, new payload version 1.1 * baremetal.node.maintenance.*, new payload version 1.3 * baremetal.node.console.*, new payload version 1.3 * baremetal.node.power_set.*, new payload version 1.3 * baremetal.node.power_state_corrected.*, new payload version 1.3 * baremetal.node.provision_set.*, new payload version 1.3