We are overjoyed to announce the release of:
ironic 11.1.0: OpenStack Bare Metal Provisioning
This release is part of the rocky release series.
The source is available from:
https://git.openstack.org/cgit/openstack/ironic
Download the package from:
https://tarballs.openstack.org/ironic/
Please report issues through launchpad:
https://storyboard.openstack.org/#!/project/943
For more details, please see below.
11.1.0 ^^^^^^
Prelude *******
Ironic *11.1*... Where the volume dial turned more!
While Pixie Boots has rocked out to Rock and Roll, the Bare Metal as a Service team has wrapped up our Rocky release with 11.1. This new release contains a number of major features that we hope will improve the lives of bare metal operators everywhere!
* Conductor grouping enabling nodes to be assigned to groups of different conductors.
* Deployment steps framework enabling greater flexibility for deployers to request specific steps.
* Bios setting interfaces for the "ilo" and "irmc" hardware types.
* Ramdisk deployment interface for disk-less deployments.
* Capability to reset nodes to their default interfaces via the API when resetting the node's driver.
New Features ************
* Added support for local booting a partition image for ppc64* hardware. If a PReP partition is detected when deploying to a ppc64* machine, the partition will be specified to IPA causing the bootloader to be installed there directly. This feature requires a ironic-python-agent ramdisk with ironic-lib >=2.14.
* Adds new optional "snmp_community_read" and "snmp_community_write" properties to "snmp" driver configuration (specified via a node's "driver_info" field). If present, the value(s) will be used respectively for SNMP reads and/or writes to the PDU. When not present, "snmp_community" value will be used instead.
* The iRMC driver can now automatically update the node.traits field with CUSTOM_CPU_FPGA value based on information provided by the node during node inspection.
* Adds a "ramdisk" deploy interface for deployments that wish to network boot to a ramdisk, as opposed to perform a complete traditional deployment to a physical media. This may be useful in scientific use cases or where ephemeral baremetal machines are desired.
The "ramdisk" deploy interface is intended for advanced users and has some particular operational caveats that the users should be aware of prior to use, such as network access list requirements and configuration drive architectural restrictions and the inability to leverage configuration drives.
* Adds a new configuration option "[pxe]pxe_config_subdir" to allow operators to define the specific directory that may be used inside of "/tftpboot" or "/httpboot" for a boot loader to locate the configuration file for the node. This option defaults to "pxelinux.cfg" which is the directory that the Syslinux *pxelinux.0* bootloader utilized. Operators may wish to change the directory name if they are using other boot loaders such as *GRUB* or *iPXE*.
* Conductors and nodes may be arbitrarily grouped to provide a basic level of affinity between conductors and nodes. Conductors use the "[conductor]/conductor_group" configuration option to set the group which they belong to. The same value may be set on one or more nodes in the "conductor_group" field (available in API version 1.46), and these will be matched such that only conductors with a given group will manage nodes with the same group.
A group name may be up to 255 characters containing "a-z", "0-9", "_", "-", and ".". The group is case-insensitive. The default group is the empty string ("""").
The "node list" API endpoint ("GET /v1/nodes") may also be filtered by conductor group in API version 1.46.
* The framework for deployment steps (https://specs.openstack.org/openstack/ironic-specs/specs/approved /deployment-steps-framework.html) is in place. All in-tree drivers (DeployInterfaces) have one (big) deploy step; the conductor executes this step when deploying a node.
Starting with the Bare Metal REST API version 1.44, the current deploy step (if any) being executed is available in a node's "deploy_step" field in the responses for the following queries:
* "GET /v1/nodes/<node identifier>"
* "GET /v1/nodes/detail"
* "GET /v1/nodes?fields=deploy_step,..."
* Implements "bios" interface for "ilo" hardware type. Adds the list of supported bios interfaces for the *ilo* hardware type. Adds manual cleaning steps "apply_configuration" and "factory_reset" which support managing the BIOS settings for the iLO servers using *ilo* hardware type.
* Adds support for the new "noop" interface to the "ipmi" hardware type. This interface targets hardware that does not correctly change boot mode via the IPMI protocol. Using it requires pre-configuring the boot order on a node to try PXE, then fall back to local booting.
* Adds new "bios" interface to "irmc" hardware type. This provides out-of-band BIOS configuration solution for iRMC driver which makes the functionality available via manual cleaning.
* Adds out-of-band RAID configuration solution for the iRMC driver which makes the functionality available via manual cleaning. See iRMC hardware type documentation (https://docs.openstack.org/ironic/latest/admin/drivers/irmc.html) for more details.
* Starting with API version 1.45, PATCH requests to "/v1/nodes/<NODE>" accept the new query parameter "reset_interfaces". It can be provided whenever the "driver" field is updated. If set to 'true', all hardware interfaces wil be reset to their defaults, except for ones updated in the same request.
Upgrade Notes *************
* Operators utilizing "grub" for PXE booting, typically with UEFI, should change their deployed master PXE configuration file provided for nodes PXE booting using grub. Ironic 11.1 now writes both MAC address and IP address based PXE confiuration links for network booting via "grub". The grub variable should be changed from "$net_default_ip" to "$net_default_mac". IP address support is deprecated and will be removed in the Stein release.
* The minimum required version of pysnmp has been bumped to 4.3. This pysnmp version introduces simpler, faster and more functional high- level SNMP API on which ironic *snmp* driver has been migrated.
* The minimum required version of the "osprofiler" library is now 1.5.0. This is now a new dependency, ironic has not been able to start with 1.4.0 since the Pike release when this dependency was introduced.
* The "swift/endpoint_type" configuration option is now removed. python-swiftclient 3.2.0 (Ocata) and above removed support for the native URL type used by radosgw. Since using a "swift/endpoint_type" value of "radosgw" would fail anyway, it is removed. Deployers must now configure ceph with "rgw swift account in url = True". This must be set before upgrading to this release.
* The "snmp" hardware type now uses the "noop" management interface instead of "fake" used previously. Support for "fake" is left for backward compatibility.
Deprecation Notes *****************
* All drivers must implement their deployment process using *deploy steps*. Out-of-tree drivers without deploy steps will be supported until the Stein release. For more details, see story 1753128 (https://storyboard.openstack.org/#!/story/1753128).
* The "xclarity" hardware type, as well as the supporting driver interfaces have been deprecated and are scheduled to be removed from ironic in the Stein development cycle. This is due to the lack of operational Third Party testing to help ensure that the support for Lenovo XClarity is functional.
The "xclarity" hardware type was introduced at the end of the Queens development cycle. During implementation of Third Party CI, the Lenovo team encountered some unforseen delays. Lenovo is continuing to work towards Third Party CI, and upon establishment and verification of functional Third Party CI, this deprecation will be rescinded.
* Support for ironic to link PXE boot configuration files via the assigned interface IP address has been deprecated. This option was only the case when "[pxe]ipxe_enabled" was set to "false" and the node was being deployed using UEFI.
* Using the "fake" management interfaces with the "snmp" hardware type is now deprecated, please use "noop" instead.
Bug Fixes *********
* Better handles the case when an operator attempts to perform an upgrade from a release older than Pike, directly to a release newer than Pike, skipping one or more releases in between (i.e. a "skip version upgrade"). Instead of crashing, the operator will be informed that upgrading from a version older than the previous release is not supported (skip version upgrades) and that (as of Pike) all database migrations need to be performed using the previous releases for a fast-forward upgrade. [Bug 2002558 (https://storyboard.openstack.org/#!/story/2002558)]
* Fixes support for "grub" based UEFI PXE booting by enabling links to the PXE configuration files to be written using the MAC address of the node in addition to the interface IP address. If the "[dhcp]dhcp_provider" option is set to "none", only the MAC based links will be created.
* Fixes an issue that caused the integrated Dell Remote Access Controller (iDRAC) "management" hardware interface implementation, "idrac", to fail to boot nodes in Unified Extensible Firmware Interface (UEFI) boot mode. That interface is supported by the "idrac" hardware type. The issue is resolved for Dell EMC PowerEdge 13th and 14th generation servers. It is not resolved for PowerEdge 12th generation and earlier servers. For more information, see story 1656841 (https://storyboard.openstack.org/#!/story/1656841).
* If a node gets stuck in one of the states "deploying", "cleaning", "verifying", "inspecting", "adopting", "rescuing", "unrescuing" for some reason (eg. conductor goes down when executing a task), it will be moved to an appropriate failure state in the next time the conductor starts.
* Changes the iPXE behavior to retry a total of 10 times with an increasing backoff time between each retry in order to not create a Denial of Service situation with the iPXE HTTP server. Should the retries fail, the node will be powered-off after a warning is displayed on the console for 30 seconds. For more information, see story (https://storyboard.openstack.org/#!/story/2002928).
* The cleaning operation may fail, if an in-band clean step were to execute after the completion of out-of-band clean step that performs reboot of the node. The failure is caused because of race condition where in cleaning is resumed before the Ironic Python Agent(IPA) is ready to execute clean steps. This has been fixed. For more information, see bug 2002731 (https://storyboard.openstack.org/#!/story/2002731).
Other Notes ***********
* The deprecated configuration option "[ipmi]retry_timeout" was removed, use "[ipmi]command_retry_timeout" instead.
Changes in ironic 11.0.0..11.1.0 --------------------------------
7893262 Switch the "snmp" hardware type to "noop" management d42bd9a Add "noop" management and use it in the "ipmi" hardware type 5dc6657 Update docs on ironic boot mode management 61bb3a7 Simplify subclasses for PXERamdiskDeploy d70db29 Node gets stuck in ING state when conductor goes down 27ce134 Add notes on Redfish boot mode management 31afe4f Prepare for Rocky release 103801a Update the reno for the reset_interfaces feature fa0cb98 Use max version of an object 8f55f05 Improve the "Ironic behind mod wsgi" documentation 995b538 Deploy steps documentation 6ece546 Mark the ZeroMQ driver deprecated f78ebd0 Remove rabbit_max_retries option eb14f57 Fix iDRAC hardware type does not work with UEFI 8f89954 Pass prep_boot_part_uuid to install_bootloader for ppc64* partition images 065a10c Remove redundant swift vars a033b25 Document locale requirement for local testing 253ce25 Switch ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3 b0084cb Improve doc of Node serial console 154d97b Follow-up patch to ramdisk interface e25c6e2 Ramdisk deploy driver doc b464a19 Change PXE logic to always link macs with UEFI 95a4493 Add documentation for BIOS settings f4eaaf7 Fix for failure of cleaning for iRMC restore_bios_config a1475ae Refactor RAID configuration via iRMC driver 731af40 Adds ramdisk deploy driver 8d3aa1b Follow-up patch for 7c5a04c1149f14900f504f32e000a7b4e69e661f 90f7a89 Switch ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa 7ea0ff4 Switch ironic-tempest-dsvm-ipa-wholedisk-bios-pxe_snmp-tinyipa d11700c Switch ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa 0b87e61 Switch ironic-tempest-dsvm-pxe_ipmitool-postgres 379876d Documentation update of iLO BIOS settings 4232250 Follow-up to improve pep8 checking with hacking da82494 Fix for failure in cleaning in iRMC driver 40af984 Add deploy_step to NodePayload.SCHEMA 52b8638 Add conductor_group to node notifications 7cd960f Deprecate xclarity hardware type ebb8d5e Be more precise with conductor group API tests 8c16723 Simplify hash ring tests 600081d Add documentation for changing node's hardware type efeba98 Fix the list of irrelevant-files ca6f289 snmp: Keep get_next method backward-compatible 7c5a04c Fix for failure in cleaning ce1e889 Expose node.conductor_group in the REST API 26fd55f Use conductor group for hash ring calculations b9e1b81 Expose BIOS interface 471aafc Ignore bashate E044 86d26e7 Remove deprecated option [ipmi]retry_timeout 66e1ccb iLO BIOS interface implementation cfa2ddf Make pxelinux.cfg folder configurable 303040e Use openstack client instead of neutron client e03671b Replace port 35357 with 5000 for "auth_url" 7929361 Add conductor_group field to config, node and conductor objects 597d8a7 Add reset_interfaces parameter to node's PATCH fa551a6 Follow up Add CUSTOM_CPU_FPGA Traits value to ironic inspection 72f7a70 Follow-up changes to iRMC bios interface. f838a14 Minor changes for deploy_steps framework a1eaaae Caching of PDU autodiscovery 0d03136 Migrate ironic `snmp` driver to the latest pysnmp API f667db1 Add conductor_group field to nodes and conductors tables 6070705 Add mock object for get_bios_settings c47ed8a Fix bug to doc:configdrive 745268d Add notes for future job migrations 863fe1e Assert a build timeout for zuul templated CI jobs dba2041 Fixed link to Storyboard instead of launchpad dd4a4d4 Update CI jobs for rescue mode 09ebc65 Fix bug to doc:kernel-boot-parameters 5a14eed Deploy steps - API & notifications 65a68e4 Deploy steps - conductor & drivers 5ee7b31 Add CUSTOM_CPU_FPGA Traits value to ironic inspection fa59565 Implement iRMC BIOS configuration aac5bcb Deploy steps - versioned objects f5a5af3 Deploy steps - DB model d29dab2 Follow-up to RAID configuration via iRMC driver patch fe2608d Poweroff server after 10 tries 5eff596 Make the lower-constraints tox env actually use lower-constraints 5ca549c Fix typo of function naming conventions in test_deploy_utils.py a60233c Update the doc regarding the removal of calssic drivers a0978b3 Update boot-from-volume feature docs 63b7ddc [doc] Use openstack client commands to replace neutron client 692f289 Detect skip version upgrades from version earlier than Pike 647aee6 Update API version history with release 11.0.0 31cc654 Bump osprofiler minimum requirement to 1.5.0 2131520 Add 11.0 to release mapping 876b220 Add read&write SNMP community names to `snmp` driver 8608d34 Add unit tests that "remove" is acceptable on /XXX_interface node fields 2528824 Fix 11.0 prelude formatting 9a0a54c Change docs bug link to storyboard 84ae0c3 Support RAID configuration for BM via iRMC driver e2899de Fix list node vifs api error 2bb87c1 Ensure we allow Ironic API traffic from baremetal network b61ebd4 Switch ironic-tempest-dsvm-ipa-partition-redfish-tinyipa f8163fa Switch ironic-dsvm-standalone to zuulv3 native 7cc01cd Improve pep8 checking along with hacking e9e4d88 Remove endpoint_type from configuration
Diffstat (except docs and test files) -------------------------------------
README.rst | 2 +- api-ref/regenerate-samples.sh | 2 + api-ref/source/baremetal-api-v1-nodes-bios.inc | 84 ++ api-ref/source/baremetal-api-v1-nodes-vifs.inc | 10 +- api-ref/source/baremetal-api-v1-nodes.inc | 9 +- api-ref/source/index.rst | 1 + api-ref/source/parameters.yaml | 38 + .../source/samples/node-bios-detail-response.json | 18 + .../source/samples/node-bios-list-response.json | 20 + api-ref/source/samples/node-create-response.json | 1 + api-ref/source/samples/node-show-response.json | 1 + .../samples/node-update-driver-info-response.json | 1 + .../samples/nodes-list-details-response.json | 2 + devstack/lib/ironic | 8 +- devstack/settings | 2 +- .../include/configure-ironic-api-mod_wsgi.inc | 3 +- .../install/include/configure-ironic-api.inc | 2 +- .../install/include/kernel-boot-parameters.inc | 4 +- driver-requirements.txt | 6 +- ironic/api/controllers/v1/node.py | 109 +- ironic/api/controllers/v1/utils.py | 31 + ironic/api/controllers/v1/versions.py | 8 +- ironic/cmd/dbsync.py | 31 +- ironic/common/exception.py | 12 + ironic/common/glance_service/v2/image_service.py | 59 +- ironic/common/hash_ring.py | 16 +- ironic/common/pxe_utils.py | 42 +- ironic/common/release_mappings.py | 44 +- ironic/common/states.py | 9 + ironic/common/swift.py | 62 +- ironic/common/utils.py | 7 + ironic/conductor/base_manager.py | 70 +- ironic/conductor/manager.py | 485 ++++++-- ironic/conductor/rpcapi.py | 46 +- ironic/conductor/utils.py | 211 +++- ironic/conf/conductor.py | 6 + ironic/conf/default.py | 21 +- ironic/conf/deploy.py | 10 +- ironic/conf/glance.py | 8 +- ironic/conf/ipmi.py | 14 - ironic/conf/irmc.py | 17 + ironic/conf/pxe.py | 7 + ironic/db/api.py | 3 +- ...f622_add_conductor_group_to_nodes_conductors.py | 35 + .../versions/b9117ac17882_add_node_deploy_step.py | 33 + ironic/db/sqlalchemy/api.py | 25 +- ironic/db/sqlalchemy/models.py | 5 + ironic/drivers/base.py | 142 ++- ironic/drivers/generic.py | 2 +- ironic/drivers/ilo.py | 6 + ironic/drivers/ipmi.py | 3 +- ironic/drivers/irmc.py | 13 + ironic/drivers/modules/agent.py | 21 +- ironic/drivers/modules/agent_base_vendor.py | 25 +- ironic/drivers/modules/agent_client.py | 15 +- ironic/drivers/modules/ansible/deploy.py | 13 +- ironic/drivers/modules/deploy_utils.py | 34 +- ironic/drivers/modules/drac/management.py | 172 ++- ironic/drivers/modules/drac/raid.py | 7 +- ironic/drivers/modules/fake.py | 17 +- ironic/drivers/modules/ilo/bios.py | 157 +++ ironic/drivers/modules/inspector.py | 2 +- ironic/drivers/modules/ipmitool.py | 10 +- ironic/drivers/modules/ipxe_config.template | 28 +- ironic/drivers/modules/irmc/bios.py | 149 +++ ironic/drivers/modules/irmc/inspect.py | 48 +- ironic/drivers/modules/irmc/management.py | 9 +- ironic/drivers/modules/irmc/raid.py | 506 ++++++++ ironic/drivers/modules/iscsi_deploy.py | 14 +- ironic/drivers/modules/master_grub_cfg.txt | 2 +- ironic/drivers/modules/noop_mgmt.py | 58 + ironic/drivers/modules/oneview/deploy.py | 8 +- ironic/drivers/modules/oneview/inspect.py | 2 +- ironic/drivers/modules/pxe.py | 105 +- ironic/drivers/modules/pxe_config.template | 4 + ironic/drivers/modules/pxe_grub_config.template | 5 + ironic/drivers/modules/snmp.py | 241 ++-- ironic/drivers/modules/storage/external.py | 1 + ironic/drivers/modules/xclarity/management.py | 9 + ironic/drivers/modules/xclarity/power.py | 9 + ironic/drivers/snmp.py | 3 +- ironic/drivers/xclarity.py | 9 + ironic/hacking/__init__.py | 0 ironic/hacking/checks.py | 55 + ironic/objects/base.py | 24 +- ironic/objects/conductor.py | 12 +- ironic/objects/node.py | 86 +- ...e_config_boot_from_volume_extra_volume.template | 26 +- ...nfig_boot_from_volume_no_extra_volumes.template | 26 +- .../unit/drivers/ipxe_config_timeout.template | 26 +- .../unit/drivers/modules/ansible/test_deploy.py | 31 +- .../unit/drivers/modules/drac/test_management.py | 304 ++++- .../drivers/modules/drac/test_periodic_task.py | 4 +- .../unit/drivers/modules/irmc/test_inspect.py | 205 +++- .../drivers/modules/irmc/test_periodic_task.py | 294 +++++ .../unit/drivers/modules/oneview/test_deploy.py | 8 +- .../unit/drivers/modules/test_agent_base_vendor.py | 109 +- .../unit/drivers/modules/test_agent_client.py | 38 +- .../unit/drivers/modules/test_deploy_utils.py | 25 +- .../unit/drivers/modules/test_iscsi_deploy.py | 11 +- .../unit/drivers/third_party_driver_mock_specs.py | 3 +- lower-constraints.txt | 4 +- playbooks/legacy/ironic-dsvm-standalone/run.yaml | 77 -- .../run.yaml | 98 -- .../run.yaml | 82 -- .../run.yaml | 82 -- .../run.yaml | 1 + .../run.yaml | 84 -- .../run.yaml | 83 -- .../tempest-dsvm-ironic-pxe_ipa-full/run.yaml | 1 + .../run.yaml | 83 -- ...dd-prep-partition-support-d808849795906e64.yaml | 7 + ...ead-write-community-names-7589a8d1899c142c.yaml | 8 + ...trait_for_irmc_inspection-2b63941b064f7936.yaml | 6 + ...-ramdisk-deploy-interface-39fc61bc77b57beb.yaml | 13 + ...nfig-folder-to-be-defined-da0ddd397d58dcc8.yaml | 10 + ...etter-handle-skip-upgrade-3b6f06ac24937aa4.yaml | 11 + .../notes/conductor-groups-c22c17e276e63bed.yaml | 17 + .../notes/deploy_steps-243b341cf742f7cc.yaml | 22 + .../notes/deprecate-xclarity-d687571fb65ad099.yaml | 13 + ...rub-default-change-to-mac-1e301a96c49acec4.yaml | 22 + .../idrac-uefi-boot-mode-86f4694b4247a1ca.yaml | 11 + .../notes/ilo-bios-settings-bc91524c459a4fd9.yaml | 8 + .../notes/ipmi-noop-mgmt-8fad89dc2b4665b8.yaml | 7 + ...-clean-bios-configuration-1ad24831501456d5.yaml | 6 + ...create-raid-configuration-bccef8496520bf8c.yaml | 6 + .../notes/ironic-11-prelude-6dae469633823f8d.yaml | 2 +- .../ironic-11.1-prelude-b5ba8134953db4c2.yaml | 17 + .../migrate-to-pysnmp-hlapi-477075b5e69cc5bc.yaml | 5 + ...stuck-when-conductor-down-3aa41a3abed9daf5.yaml | 7 + .../notes/osprofiler-61a330800abe4ee6.yaml | 6 + .../poweroff-after-10-tries-c592506f02c167c0.yaml | 9 + ...remove-ipmi-retry-timeout-c1b2cf7df6771a43.yaml | 5 + .../remove-radosgw-config-b664f3023dc8403c.yaml | 9 + .../notes/reset-interface-e62036ac76b87486.yaml | 8 + ...-cleaning-post-oob-reboot-b76c23f98219a8d2.yaml | 10 + .../notes/snmp-noop-mgmt-53e93ac3b6dd8517.yaml | 10 + requirements.txt | 4 +- setup.cfg | 5 + tools/run_bashate.sh | 2 +- tox.ini | 8 +- zuul.d/ironic-jobs.yaml | 207 ++++ zuul.d/legacy-ironic-jobs.yaml | 66 +- 212 files changed, 9492 insertions(+), 1876 deletions(-)
Requirements updates --------------------
diff --git a/driver-requirements.txt b/driver-requirements.txt index 6435463..e8cb3f3 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -7,2 +7,2 @@ -proliantutils>=2.5.0 -pysnmp +proliantutils>=2.6.0 +pysnmp>=4.3.0,<5.0.0 @@ -11 +11 @@ python-oneviewclient<3.0.0,>=2.5.2 -python-scciclient>=0.6.0 +python-scciclient>=0.7.2 diff --git a/requirements.txt b/requirements.txt index f31ba2d..a566689 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14 +14 @@ keystoneauth1>=3.4.0 # Apache-2.0 -ironic-lib>=2.5.0 # Apache-2.0 +ironic-lib>=2.14.0 # Apache-2.0 @@ -32 +32 @@ oslo.utils>=3.33.0 # Apache-2.0 -osprofiler>=1.4.0 # Apache-2.0 +osprofiler>=1.5.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org