We are chuffed to announce the release of: ironic 23.0.0: OpenStack Bare Metal Provisioning This release is part of the bobcat release series. The source is available from: https://opendev.org/openstack/ironic Download the package from: https://tarballs.openstack.org/ironic/ Please report issues through: https://storyboard.openstack.org/#!/project/943 For more details, please see below. 23.0.0 ^^^^^^ Prelude ******* Ironic is proud to announce the release of 23.0, the capstone release of a six month OpenStack 2023.2 (Bobcat) cycle. Our focus this cycle has been on improving the ability for operators to secure and service their Ironic nodes. There are also, as always, a myriad of quality of life fixes, including improvements to sqlite support, and graceful shutdown of conductors. We hope the latest release of Ironic serves you well! New Features ************ * Adds inspection hooks in the agent inspect interface for processing data received from the ramdisk at the /v1/continue_inspection endpoint. The four default configuration hooks *ramdisk-error*, *validate-interfaces*, *ports* and *architecture* are added. Two new configuration options *default_hooks* and *hooks* are added in the *inspector* configuration section to allow configuring the default enabled hooks and optional additional hooks, respectively. * Adds a new Ironic capability called "service_steps" which allows a deployed "ACTIVE" node to be modified utilizing a new API provision state verb of "service" which can include a list of "service_steps" to be performed. This work is inspired by "clean_steps" and "deploy_steps" and similar to those efforts, this functionality will continue to evolve as new features, functionality, and capabilities are added. * Adds a new driver method decorator "base.service_step" which operates exactly like the existing "base.clean_step" and "base.deploy_step" decorators. Driver methods which are decorated *can* be invoked utilizing the service steps. * Adds Firmware Interface support to ironic, we would like to receive feedback since this is a new feature we introduced and we as a developer community have limited hardware access, reach out to us in case of any unexpected behavior. * Adds version 1.86 of the Bare Metal API, which includes: * List all firmware components of a node via the "GET /v1/nodes/{node_ident}/firmware" API. * The "firmware_interface" field of the node resource. A firmware interface can be set when creating or updating a node. * The "default_firmware_interface" and "enabled_firmware_interface" fields of the driver resource. * Adds new configuration options for the firmware interface feature: * Firmware interfaces are enabled via "[DEFAULT]/enabled_firmware_interfaces". A default firmware interface to use when creating or updating nodes can be specified with "[DEFAULT]/default_firmware_interface". * Available interfaces: "redfish", "no-firmware" and "fake". * Support to update firmware of BIOS and BMC via "update" step, can be done via clean or deploy steps, the node should be using the "redfish" driver and set the "firmware_interface". * Introduce new config parameters in the conductor group. The *deploy_kernel_by_arch*, *deploy_ramdisk_by_arch*, *rescue_kernel_by_arch*, and *rescue_ramdisk_by_arch* are dictionaries allowing operators to specify parameters of kernel and ramdisk by the architecture of the node. * Adds a "[agent]allow_md5_checksum" configuration option which can be used to tell "ironic-python-agent" versions newer than version "9.4.0" if MD5 is a permitted algorithm. * Adds the storage of the "[json_rpc]port" configuration value to the internal conductor hostname field when the "[DEFAULT]rpc_transport" setting is set to "json-rpc". This allows deployments to utilize varying port configurations for JSON-RPC. As a result of this change, the RPC API version has been incremented to "1.57" and the feature is not available until any "[DEFAULT]pin_release_version" setting is removed. Known Issues ************ * When boot mode needs to be changed during provisioning, an additional reboot may happen on certain hardware. This is to ensure consistent behavior when any boot setting change results in a separate internal job. Upgrade Notes ************* * Ironic 23.0 is part of the OpenStack 2023.2 (Bobcat) release. This a non-SLURP release, meaning users of a 2023.1 (Antelope) cycle Ironic release can upgrade directly to the release accompanying 2024.1 (Caracal) when available. For more information, please visit Release Cadence Adjustment (https://governance.openstack.org/tc/resolutions/20220210-release- cadence-adjustment.html?_ga=2.126966605.1175089434.1694620440-19818 16456.1685478379). * Changing the boot mode or the secure boot state via the direct API ("/v1/nodes/{node_ident}/states/boot_mode" and "/v1/nodes/{node_ident}/states/secure_boot" accordingly) may now result in a reboot. This happens when the change cannot be applied immediately. Previously, the change would be applied whenever the next reboot happens for any unrelated reason, causing inconsistent behavior. * Operators utilizing JSON-RPC transport to conductors with a non- default port configuration should expect to see the hash ring layout change as the port number is now included in the hash ring calculation. This will only occur once the hash ring pin has been removed. * Requires "ironic-lib" version *5.5.0* for the json-rpc port to be properly set and utilized. Deprecation Notes ***************** * The *deploy_kernel*, *deploy_ramdisk*, *rescue_kernel*, and *rescue_ramdisk* parameters have been marked as deprecated as the new parameters allow more configuration options. Bug Fixes ********* * Fixes an issue where inspection would fail if an IPv6 address wrapped in brackets is used for the redfish BMC address. See bug: 2036455 (https://bugs.launchpad.net/ironic/+bug/2036455). * Fixes an issue where lookups to generate an agent token would stack up as the internal lock upgrade logic silently holds on to the request while trying to obtain a lock. The task creation will now immediately fail with a "NodeLocked" exception, which the agent will retry. * While updating boot mode or secure boot state in the Redfish driver, the node is now rebooted if the change is not detected on the System resource refresh. Ironic then waits up to "[redfish]boot_mode_config_timeout" seconds until the change is applied. Other Notes *********** * While investigating bug 2033430 (https://bugs.launchpad.net/ironic/+bug/2033430) we discovered we were emitting DHCP option 210 *only* with OVN, and never emitted it with dnsmasq because it was not being set previously. Our internal notes also indicated this was for PXELinux support, but was never actually needed. As it was excess, and redundant configuration being provided to Neutron, it has been removed. Changes in ironic 22.1.0..23.0.0 -------------------------------- 4eb0dbf7b RedfishFirmware Interface 21e3e71ea inspect_utils, handle bracketed IPv6 redfish addr 2bb653a52 Trivial: attach versions to release series 72037b596 redfish_address - wrap_ipv6 address 88fd22de7 Remove most prints for unit tests d115a52b2 [releasenotes] Prelude for 2023.2/bobcat a8ede77e3 devstack - configurable ipv6 address mode 6487b9581 Redfish: wait for secure boot state change if it's not immediate 065b4bfc1 CI: Remove ubuntu focal job 7b9007375 Fix two places that can cause issues under SQLite 985c7fdf2 [CI] Unblock CI by fixing job regex and non-voting snmp ec2a5cc7c Update proliantutils driver requirements for bobcat bb02c49de DB: Only re-query for a lock holder if we cannot lock 646d452d6 Add service steps and initial docs 3cd492d77 Log an exception from heartbeat 6d2243b91 log the version of the conductor starting 980611186 PXE: Remove DHCP option 210 from being set 69bdbfb6e Fully monkey patch eventlet for consistent behavior 30e4881c9 Add missing release mappings for 22.0 and 22.1 a2919f7a7 Correct bindep.txt entries for bookworm c84fe147a Utilize the JSON-RPC port aa2dad9f7 devstack - fix IPv6 ping 570fad96d Revert "Move metal3 integration job to non-voting temporarily" e1a086463 Add service steps call to agent logic 3c5e05a8a Introduce default kernel/ramdisks by arch fc29073b1 Use sparkingly new metalsmith cs9 job b5cdd1881 Move metal3 integration job to non-voting temporarily 04707edfe Update iRMC driver vendor library version e6360bc84 Add inspection (processing) hooks 03b8f4dd1 Revamp Ironic dev-quickstart documentation 2fd3d8f01 Fail on node lookup if it is locked 84f1a1c32 Permit Ironic to notify IPA it can support MD5 2366a4b86 Adds service steps 02f39c246 Fix minor grammar issues in the help for new inspector options ae7760af0 Remove instance image after deployment Diffstat (except docs and test files) ------------------------------------- .../source/baremetal-api-v1-node-management.inc | 8 + api-ref/source/baremetal-api-v1-nodes-firmware.inc | 2 +- bindep.txt | 8 +- devstack/lib/ironic | 9 +- .../contributor/ironic-multitenant-networking.rst | 1 + driver-requirements.txt | 4 +- ironic/api/controllers/v1/node.py | 73 +- ironic/api/controllers/v1/ramdisk.py | 1 + ironic/api/controllers/v1/utils.py | 10 +- ironic/api/controllers/v1/versions.py | 6 +- ironic/cmd/__init__.py | 2 +- ironic/common/faults.py | 6 +- ironic/common/neutron.py | 9 + ironic/common/pxe_utils.py | 11 - ironic/common/release_mappings.py | 45 +- ironic/common/states.py | 74 +- ironic/common/utils.py | 8 +- ironic/conductor/base_manager.py | 21 +- ironic/conductor/cleaning.py | 2 + ironic/conductor/manager.py | 83 +- ironic/conductor/rpcapi.py | 28 +- ironic/conductor/servicing.py | 377 +++++++ ironic/conductor/steps.py | 111 +- ironic/conductor/utils.py | 97 +- ironic/conf/agent.py | 6 + ironic/conf/conductor.py | 59 +- ironic/conf/inspector.py | 22 +- ironic/conf/neutron.py | 19 +- ironic/conf/redfish.py | 6 + .../versions/aa2384fee727_add_service_steps.py | 35 + ironic/db/sqlalchemy/api.py | 27 +- ironic/db/sqlalchemy/models.py | 1 + ironic/drivers/base.py | 177 +++ ironic/drivers/modules/agent.py | 6 +- ironic/drivers/modules/agent_base.py | 167 ++- ironic/drivers/modules/agent_client.py | 83 ++ ironic/drivers/modules/deploy_utils.py | 81 +- ironic/drivers/modules/fake.py | 7 + ironic/drivers/modules/inspect_utils.py | 3 + ironic/drivers/modules/inspector/agent.py | 126 ++- ironic/drivers/modules/inspector/hooks/__init__.py | 0 .../modules/inspector/hooks/architecture.py | 42 + ironic/drivers/modules/inspector/hooks/base.py | 129 +++ ironic/drivers/modules/inspector/hooks/ports.py | 93 ++ .../modules/inspector/hooks/ramdisk_error.py | 29 + .../{nics.py => hooks/validate_interfaces.py} | 126 +-- ironic/drivers/modules/ipmitool.py | 2 + ironic/drivers/modules/network/flat.py | 25 + ironic/drivers/modules/network/neutron.py | 30 + ironic/drivers/modules/redfish/bios.py | 1 + ironic/drivers/modules/redfish/firmware.py | 452 ++++++++ ironic/drivers/modules/redfish/firmware_utils.py | 44 + ironic/drivers/modules/redfish/management.py | 132 ++- ironic/drivers/modules/redfish/raid.py | 3 + ironic/drivers/modules/redfish/utils.py | 39 +- ironic/drivers/redfish.py | 5 + ironic/drivers/utils.py | 28 +- ironic/objects/firmware.py | 14 +- ironic/objects/node.py | 20 +- .../unit/drivers/modules/ilo/test_management.py | 8 +- .../drivers/modules/inspector/hooks/__init__.py | 0 .../modules/inspector/hooks/test_architecture.py | 39 + .../drivers/modules/inspector/hooks/test_ports.py | 125 +++ .../modules/inspector/hooks/test_ramdisk_error.py | 39 + .../test_validate_interfaces.py} | 123 +- .../unit/drivers/modules/inspector/test_agent.py | 13 +- .../unit/drivers/modules/redfish/test_bios.py | 5 +- .../unit/drivers/modules/redfish/test_boot.py | 142 ++- .../unit/drivers/modules/redfish/test_firmware.py | 40 + .../drivers/modules/redfish/test_management.py | 203 +++- .../unit/drivers/modules/redfish/test_raid.py | 6 +- .../unit/drivers/modules/redfish/test_utils.py | 8 + .../unit/drivers/modules/test_agent_client.py | 47 + .../unit/drivers/modules/test_deploy_utils.py | 69 ++ .../unit/drivers/modules/test_inspect_utils.py | 12 + .../23.0-prelude-bobcat-ad7c24f666c22ebf.yaml | 17 + .../notes/add-hold-states-7be5804d6f3a119a.yaml | 2 +- .../add-inspection-hooks-06e1e15d81061c83.yaml | 10 + .../notes/add-service-steps-deb45c9a0e77a647.yaml | 14 + .../notes/bug-2036455-edd0e97335579684.yaml | 6 + .../fail-fast-on-lookup-lock-a408feac87890050.yaml | 7 + .../notes/firmware-interface-8ad6f91aa1f746a0.yaml | 31 + .../kernel-ramdisk-by-arch-c35cd2fe09f6ee98.yaml | 13 + ...l-agent-about-md5-support-5c94da38c2f5dd10.yaml | 6 + releasenotes/notes/remove-400a563030224c4f.yaml | 9 + ...uefi-and-secureboot-waits-a783215327164e2c.yaml | 20 + ...t-in-hostname-for-jsonrpc-cdcd2c20a68a22c1.yaml | 16 + releasenotes/source/2023.1.rst | 6 +- requirements.txt | 4 +- setup.cfg | 7 + zuul.d/ironic-jobs.yaml | 2 +- zuul.d/project.yaml | 15 +- 126 files changed, 6736 insertions(+), 1238 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index c5a90f2d0..b0852d005 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -7 +7 @@ -proliantutils>=2.14.0 +proliantutils>=2.16.0 @@ -11 +11 @@ pyasn1-modules-lextudio>=0.2.0 # BSD -python-scciclient>=0.12.2 +python-scciclient>=0.15.0 diff --git a/requirements.txt b/requirements.txt index d6918b9fe..e57c72049 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12 +12 @@ automaton>=1.9.0 # Apache-2.0 -eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT +eventlet>=0.30.1 # MIT @@ -17 +17 @@ keystoneauth1>=4.2.0 # Apache-2.0 -ironic-lib>=5.4.0 # Apache-2.0 +ironic-lib>=5.5.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org