Stein Series (12.0.0 - 12.1.x) Release Notes¶
Introduces lazy-loading of ports, portgroups, volume connections and volume targets in task manager to fix performance issues. For periodic tasks which create a task manager object but don’t require the aforementioned data (e.g. power sync), this change should reduce the number of database interactions by around two thirds, speeding up overall execution.
Cleans up nodes stuck in the
deletingstate on conductor restart.
Fixes an issue where
ironic-conductorinitialization could return a
NodeNotLockederror for requests requiring locks when the conductor was starting. This was due to the conductor removing locks after beginning accepting new work. The lock removal has been moved to after the Database connectivity has been established but before the RPC bus is initialized.
Adds a new
[ipmi]debugoption that allows users to explicitly turn IPMI command debugging on, as opposed to relying upon the system debug setting
[DEFAULT]debug. Users wishing to continue to log this output should set
Truein their ironic.conf.
Debug logging control has been moved to the
[ipmi]debugconfiguration setting as opposed to the “conductor”
[DEFAULT]debugsetting as the existing
ipmitooloutput can be extremely misleading for users. Operators who wish to continue to log
ipmitoolverbose output in their logs should explicitly set the
[ipmi]debugcommand to True.
Fixes an issue with the agent client code where checks of the agent command status had no logic to prevent an intermittent or transient connection failure from causing the entire operation to fail.
Fixes ‘Invalid parameter value for SpanLength’ when configuring RAID using Python 3. This passed incorrect data type to iDRAC, e.g., instead of 2 it passed 2.0. See story 2004265.
Fixes vague node
last_errorfield reporting upon deploy step failure by providing the exception error message in addition to the step that failed.
Fixed a bug where rebooting a node managed by the
idrachardware type when using the WS-MAN power interface sometimes fails with a
The command failed to set RequestedStateerror. See bug 2007487 for details.
Now passing proper flags during clean up of iPXE boot environments, so that no leftovers are left after node tear down.
Add timeout when querying agent for commands status. Without it, node can lock up for a quite long time and ironic will not allow to perform any operations with it.
When installing a whole disk image using iscsi, set up the bootloader even if a root partition can not be found. The bootloaders will be located on the disk.
Node secrets (such as BMC credentials) are no longer logged when JSON RPC is used and DEBUG logging is enabled.
An issue regarding the
ansibledeploy interface. The discovery playbook used to gather wwn and serials was broken for python3 due to the dict().keys() object not being a list in python3.
Fixes an issue with using serial number as root device hints with the
Fixes an issue regarding the
ansibledeploy interface. Node deployment was broken for any image that was not public because the original request context was not available anymore at the time some image information was fetched.
Fixes spurious deployment warnings being logged by the
ironic-conductorservice indicating that the heartbeats from the deployment ramdisk could not be processed in
Fixes issue where the resource list API returned results with requested fields only until the API MAX_LIMIT. After the API MAX_LIMIT is reached the API started ignoring user requested fields. This fix will make sure that the next url generated by the pagination code will include the user requested fields as query parameter.
Fixes an issue where baremetal node deployment would fail on clouds with a high number of security groups. Listing the security groups took too long. Instead of listing all security groups, a query filter was added to list only the security groups to be used for the network. (See bug 2006256.)
Fixed the issue with node being locked for longer than
[console]subprocess_timeoutseconds when shellinabox process fails to start before the specifed timeout elapses.
Fixes a possible console lockup issue in case of PID file not being yet created while daemon start has call already returned success return code.
Fixes an issue wherein asynchronous out-of-band deploy steps in deployment template fails to execute. See story 2006342 for details.
Fixes a bug with the grub ramdisk boot template handling, such that the template now properly references the user provided kernal and ramdisk. Previously the deployment ramdisk and kernel was referenced in the template.
Fixes an issue where clean steps of
redfishBIOS interface do not boot up the IPA ramdisk after cleaning reboot. See story 2006217 for details.
Fixes an issue in updating firmware using
update_firmware_sumclean step from management interface of
ilohardware type with an error stating that unable to connect to iLO address due to authentication failure. See story 2006223 for details.
Fixes an issue in powering-on of server in
ilohardware type. Server was failing to return success for power-on operation if no bootable device was found. See story 2006288 for details.
Fixes an issue in creation of RAID for
ilo5RAID interface wherein second time RAID creation fails. See story 2006321 for details.
iRMC hardware type deals with iPXE boot interface incompatibility. To iPXE boot with
ipxeboot interface, (1) add
ironic.conf, (2) set up tftp & http server following Ironic document on iPXE boot configuration <https://docs.openstack.org/ironic/latest/install/configure-pxe.html>, then (3) create/set baremetal node with
Fixes a deployment issue encountered during deployment, more precisely during the configdrive partition creation step. On some specific devices like NVMe drives, the created configdrive partition could not be correctly identified (required to dump data onto it afterward). https://storyboard.openstack.org/#!/story/2005764
Fixes traceback on cleaning of nodes with the
redfishhardware type if their BMC does not support BIOS settings.
iRMC hardware type deals with iPXE boot interface incompatibility. From Stein,
[pxe]ipxe_enabledoption has been deprecated and will be removed in preference to
ipxeboot interface in Train cycle. Till then, iRMC hardware type supports iPXE boot through
[pxe]ipxe_enabledoption. To cope with this incompatibility, iRMC hardware type supports
Fixes the duplication of the “ipxe” tag when using IPv6, which leads to the dhcp server possibly returning an incorrect response to the DHCPv6 client.
Fixes an issue regarding the
ansible deployment interfacecleaning workflow. Handling the error in the driver and returning nothing caused the manager to consider the step done and go to the next one instead of interrupting the cleaning workflow.
Fixes an issue with the ansible deployment interface where raw images could not be streamed correctly to the host.
Fixes deployment with the
ansibledeploy interface and instance images with GPT partition table.
Fixes an issue where the sensor data parsing method for the
ipmitoolinterface lacked the ability to handle the automatically included ipmitool debugging information when the
debugoption is set to
Truein the ironic.conf file. As such, extra debugging information supplied by the underlying
ipmitoolcommand is disregarded. More information can be found in story 2005331.
Fixes an issue where deploy fails during node preparation if the node
capabilitiesare passed as string.
The internal JSON RPC server now binds to
::by default, allowing it to work correctly with IPv6.
No longer tries to create a temporary URL with zero lifetime if the
deploy_callback_timeoutoption is set to zero. The default of 1800 seconds is used in that case. Use the new
configdrive_swift_temp_url_durationoption to override.
The Bare Metal as a Service team joyfully announces our OpenStack Stein release of ironic 12.1.0. While no steins nor speakers were harmed during the development of this release, we might have suffered some hearing damage after we learned that we could increase the volume well past eleven!
Notable items include:
Increased parallelism of power synchronization to improve overall conductor efficiency.
API fields to support node
Allocations API interface to enable operators to find and select bare metal nodes for deployment.
JSON-RPC can now be used for
ironic-conductorcommunication as opposed to using an AMQP messaging provider.
Support for customizable PXE templates and streamlined deployment sequences.
Initial support for the definition of “deployment templates” to enable operators to define and match customized deployment sequences.
Initial work for supporting SmartNIC configuration is included, however the Networking Service changes required are not anticipated until sometime during the Train development cycle.
And numerous bug fixes, including ones for IPv6 and IPMI.
This release includes the changes in ironic’s
12.0.0 release which
was also released during the Stein development cycle and includes a number
of improvements for Bare Metal infrastructure operators. More about our
earlier stein release can be found in our
[ansible]default_python_interpreterto choose the python interpreter that ansible uses on managed machines. By default, ansible uses
/usr/bin/pythonas interpreter, making the assumption that that path is always present on remote managed systems. This might not be always the case, for example in custom build images or Python 3 native distributions. With this option the operator has the ability to set the absolute path of the python interpreter on the remote machines, for example
/usr/bin/python3. The same interpreter will be used in all operations that use the ansible deploy interface. It is also possible to override the value set in the configuration for a node by passing
Adds currently used boot mode into node
redfishinspect interface run. The idea behind this change is to align with the in-band
descriptionfield to the node object to enable operators to store any information related to the node. The field is up to 4096 UTF-8 characters.
Adds capability to control the persistency of boot order changes during instance deployment via (i)PXE on a per-node level. The option ‘force_persistent_boot_device’ in the node’s driver info for the (i)PXE drivers is extended to allow the values ‘Default’ (make all changes but the last one upon deployment non-persistent), ‘Always’ (make all changes persistent), and ‘Never’ (make all boot order changes non-persistent).
Adds API version 1.50 which allows for the storage of an
ownerfield on node objects. This is intended for either storage of human parsable information or the storage of a tenant UUID which could be leveraged in a future version of the Bare Metal as a Service API.
Parallelizes periodic power sync calls by running up to ironic configuration
[conductor]/sync_power_state_workerssimultaneously. The default is to run up to
8workers. This change should let larger-scale setups running power syncs more frequently and make the whole power sync procedure more resilient to slow or dead BMCs.
is_smartnicfield to the port object in REST API version 1.53.
is_smartnicfield indicates if this port is a Smart NIC port, False by default. This field may be set by operator to use baremetal nodes with Smart NICs as ironic nodes.
The REST API endpoints related to ports provide support for the
is_smartnicfield. The ironic admin documentation provides information on how to configure and use Smart NIC ports.
Add a new field pxe_template that can be set at driver-info level. This will specify a path for a custom pxe boot template. If present, this template will be read and will have priority in front of the per-arch and general pxe templates.
Adds support to enable deployment workflow changes necessary to support the use of Smart NICs in the
ramdiskdeployment interfaces. Networking service integration for this functionality is not anticipated until the Train release of the Networking service.
Introduces allocation API. This API allows finding and reserving a node by its resource class, traits and optional list of candidate nodes. Introduces new API endpoints:
GET/DELETE /v1/allocations/<ID or name>
GET/DELETE /v1/nodes/<ID or name>/allocation
Adds support for building config drives. Starting with API version 1.56, the
/v1/nodes/<node>/states/provisioncan be a JSON object with optional keys
network_data(JSON object) and
user_data(JSON object, array or string). See story 2005083 for more details.
Allows the user to supply EFI system partition image to ironic, for building UEFI-bootable ISO images, in form of a local file or UUID or URI reference. The new
[conductor]esp_imageoption can be used to configure ironic to use local file.
Adds the deploy templates API. Deploy templates can be used to customise the node deployment process, each specifying a list of deploy steps to execute with configurable priority and arguments.
Introduces the following new API endpoints, available from Bare Metal API version 1.55:
GET /v1/deploy_templates/<deploy template identifier>
PATCH /v1/deploy_templates/<deploy template identifier>
DELETE /v1/deploy_templates/<deploy template identifier>
Adds a new feature called fast-track which allows an operator to optionally configure the Bare Metal API Service and the Bare Metal conductor service to permit lookup and heartbeat for nodes that are in the process of being enrolled and created.
These nodes can be left online, from a process such as discovery. If ironic-python-agent has communicated with the Bare Metal Service API endpoint with-in the last 300 seconds, then setup steps that are normally involved with preparing to launch a ramdisk on the node, are skipped along with power operations to enable a baremetal node to undergo discovery through to deployment with a single power cycle. Fast track functionality may be enabled through the
Adds a new hardware type
ibmcfor HUAWEI 2288H V5, CH121 V5 series servers. This hardware type supports PXE based boot using HUAWEI iBMC RESTful APIs. The following driver interfaces are supported:
Adds new hardware type
ilo5. Including all other hardware interfaces
ilohardware type supports, this has one new RAID interface
Adds functionality to perform out-of-band RAID operation for iLO5 based HPE Proliant servers.
ipmi_hex_kg_keyfor the ipmi based interfaces. The property enables user to set the Kg key for IPMIv2 authentication in hexadecimal format. This value is provided to
ipmitoolas the -y argument.
Adds the ability to use JSON RPC for communication between API and conductor services. To use it set the new
rpc_transportconfiguration options to
json-rpcand configure the credentials and the
json_rpcsection. Hostnames of all conductors must be resolvable for this implementation to work.
[DEFAULT]/versioned_notifications_topicsconfiguration option. This enables operators to configure the topics used for versioned notifications.
Notification events for metrics data now contains a
node_namefield to assist operators with relating metrics data being transmitted by the conductor service.
Set boot_mode in node properties during OOB Introspection for
As good security practice, in Ubuntu Bionic the
nf_conntrack_helperis disabled. This causes an issue when using the
pxeboot interface with the PXE environment that breaks some of the Ironic CI tests, since Ironic needs conntrack for TFTP traffic. It’s still possible to use Ironic with PXE on Ubuntu Xenial, and it’s also possible to use Ironic with PXE on Ubuntu Bionic using a workaround based on custom firewall rules as shown in .
is_smartnicfield to the port object in REST API version 1.53.
Upgrading to this release will set
is_smartnicto False for all ports.
Adds a check to the
ironic-status upgrade checkcommand, to check for compatibility of the object versions with the release of ironic.
read_raid_configurationinterfaces of ‘proliantutils’ library has been enhanced to support out-of-band RAID operation for
ilo5hardware type. To leverage this feature, the ‘proliantutils’ library needs to be upgraded to version ‘2.7.0’.
idrachardware type that was marked for removal in Pike. Please use
The values ‘True’/’False’ for the option ‘force_persistent_boot_device’ in the node’s driver info for the (i)PXE drivers are deprecated and support for them may be removed in a future release. The former default value ‘False’ is replaced by the new value ‘Default’, the value ‘True’ is replaced by ‘Always’.
cisco-ucs-standalonedrivers have been deprecated due to a lack of reporting third-party CI and vendor maintenance of the driver code. In the present state of these drivers, they would have been removed as part of the eventual removal of support for Python2. These drivers should be anticipated to be removed prior to the final Train release of the Bare Metal service. More information can be found here.
The “hash_distribution_replicas” configuration option is now deprecated. If specified in the config file, a warning is logged.
A bug has been fixed in the node update code that could cause the nodes to become not updatable if their driver is no longer available.
Fixes an issue where setting the
conductor_groupfor a node was not entirely case-sensitive, in that this could fail if case-sensitivity did not match between the conductor configuration and the API request.
Makes ironic building UEFI-only bootable ISO image (when being asked to build a UEFI-bootable image) rather than building a hybrid BIOS/UEFI-bootable ISO.
Fixes an issue that node list with conductor fails if any of the nodes has an invalid hardware type, which may happen when some conductor is out of service.
Fixes an issue in the
idracRAID interface seen when creating RAID configurations using
Fixes an issue where the master TFTP image cache could not be disabled. The configuration option
[pxe]/tftp_master_pathmay now be set to the empty string to disable the cache. For more information, see story 2004608.
Fixes an issue where
xclaritymanagement interface fails to get boot order. Now the driver correctly gets boot device and this has been verified in the 3rd party CI. See story 2004576 for details.
python-dracclientversion to 1.5.0 and later. That version is required by the fix to the
idrachardware type’s bug 2004340.
ilodriver BIOS interface clean steps as asynchronous. This is required to ensure the settings on the baremetal node are consistent with the settings stored in the database irrespective of the node clean step status. Refer bug 2004066 for details.
Fixes the IPMI console implementation to respect all supported IPMI
driver_infoand configuration options, particularly
Fixes an issue has been corrected where hosts executing
iPXEto boot would error indicating that no configuration was found for networks where IPv6 is in use. This has been remedied through a minor addition to the Networking service in the Stein development cycle. For more information please see story 2004502.
Notification event types now include the hardware type name string as opposed to a static string of “ipmi”. This allows event processors and operators to understand what the actual notification event data source is as opposed to having to rely upon fingerprints of the data to make such determinations.
Fixes a bug where cinder block storage service volumes volume fail to attach expecting a mountpoint to be a valid string. See story 2004864 for additional information.
Fixes an issue where the socat process would exit on client disconnect, which would (a) leave a zombie socat process in the process table and (b) disable any subsequent serial console connections. This issue was addressed by updating ironic to call socat with the
fork,max-children=1options, which makes socat persist and accept multiple connections (but only one at a time). Please see story 2005024 for additional information.
Fixes an issue with the
ipmihardware type where
node['driver_info']['ipmi_force_boot_device']could be interpreted as
Truewhen set to values such as “False”.
Returns the correct error message on providing an invalid reference to
image_source. Previously an internal error was raised.
instance_info[root_gb]property is no longer required for whole-disk images. It has always been ignored for them, but the validation code still expected it to be present.
The Bare Metal service now builds UEFI-only bootable ISO image (when being asked to build a UEFI-bootable image) rather than building a hybrid BIOS/UEFI-bootable ISO.