[release-announce] ironic 23.0.0 (bobcat)
no-reply at openstack.org
no-reply at openstack.org
Fri Sep 22 14:08:33 UTC 2023
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
More information about the Release-announce
mailing list