[release-announce] ironic 21.4.0 (antelope)
no-reply at openstack.org
no-reply at openstack.org
Thu Mar 9 17:14:39 UTC 2023
We are pumped to announce the release of:
ironic 21.4.0: OpenStack Bare Metal Provisioning
This release is part of the antelope 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.
21.4.0
^^^^^^
Prelude
*******
The Ironic team hereby announces the release of OpenStack 2023.1
(Ironic 23.4.0). This repesents the completion of a six month
development cycle, which primarily focused on internal and scaling
improvements. Those improvements included revamping the database layer
to improve performance and ensure compatability with new versions of
SQLAlchemy, enhancing the ironic-conductor service to export
application metrics to prometheus via the ironic-prometheus-exporter,
and the addition of a new API concept of node sharding to help with
scaling of services that make frequent API calls to Ironic. The new
Ironic release also comes with a slew of bugfixes for Ironic services
and hardware drivers. We sincerely hope you enjoy it!
New Features
************
* Adds support for the "service" role, which is intended for service
to service communication, such as for those where "ironic-
inspector", "nova-compute", or "networking-baremetal" needs to
communicate with Ironic's API.
* Adds the ability for Ironic to send conductor process metrics for
monitoring. This requires the use of a new "[metrics]backend" option
value of "collector". This data was previously only available
through the use of statsd. This requires "ironic-lib" version
"5.4.0" or newer. This capability can be disabled using the
"[sensor_data]enable_for_conductor" option if set to False.
* Adds a "[sensor_data]enable_for_nodes" configuration option to
allow operators to disable sending node metric data via the message
bus notifier.
* Adds a new gauge metric "ConductorManager.PowerSyncNodesCount"
which tracks the nodes considered for power state synchrnozation.
* Adds a new gauge metric
"ConductorManager.PowerSyncRecoveryNodeCount" which represents the
number of nodes which are being evaluated for power state recovery
checking.
* Adds a new gauge metric "ConductorManager.SyncLocalStateNodeCount"
which represents the number of nodes being tracked locally by the
conductor.
* There are now configurable random wait times for fake drivers in a
new ironic.conf [fake] section. Each supported driver having one
configuration option controlling the delay. These delays are applied
to operations which typically block in other drivers. This allows
more realistic scenarios to be arranged for performance and
functional testing of ironic itself.
* Adds support for setting a shard key on a node, and filtering node
or port lists by shard. This shard key is not used for any purpose
internally in Ironic, but instead is intended to allow API clients
to filter for a subset of nodes or ports. Being able to fetch only a
subset of nodes or ports is useful for parallelizing any operational
task that needs to be performed across all nodes or ports.
* Adds support for querying for nodes which are sharded or
unsharded. This is useful for allowing operators to find nodes which
have not been assigned a shard key.
* Adds support for querying for a list of shards via "/v1/shards".
This endpoint will return a list of currently assigned shard keys as
well as the count of nodes which has those keys assigned. Using this
API endpoint, operators can see a high level listing of how their
nodes are sharded.
Known Issues
************
* Sensor data notifications to the message bus, such as using the
"[metrics]backend" configuration option of "collector" on a
dedicated API service process or instance, is not presently
supported. This functionality requires a periodic task to trigger
the transmission of metrics messages to the message bus notifier.
Upgrade Notes
*************
* Ironic now has support for the "service" role, which is available
in the "system" scope as well as the "project" scope. This
functionality is for service to service communication, if desired.
Effective access rights are similar to the "manager" or the "owner"
scoped admin privileges.
* Two statsd metrics names have been modified to provide structural
clarity and consistency for consumers of statistics metrics.
Consumers of metrics statistics may need to update their dashboards
as the "post_clean_step_hook" metric is now named
"AgentBase.post_clean_step_hook", and the "post_deploy_step_hook" is
now named "AgentBase.post_deploy_step_hook".
Deprecation Notes
*****************
* The setting values starting with "send_sensor" in the
"[conductor]" configuration group have been deprecated and moved to
a "[sensor_data]" configuration group. The names have been updated
to shorter, operator friendly names..
Bug Fixes
*********
* When aborting cleaning, the "last_error" field is no longer
initially empty. It is now populated on the state transition to
"clean failed".
* When cleaning or deployment fails, the "last_error" field is no
longer temporary set to "None" while the power off action is
running.
* Fixes an issue that when a node has console enabled but pid file
missing, the console could not be disabled as well as be restarted,
which makes the console feature unusable.
* Fixes issues that auto-allocated console port could conflict on
the same host under certain circumstances related to conductor
takeover.
For more information, see story 2010489
(https://storyboard.openstack.org/#!/story/2010489).
* Fixes a database API internal check to update the
"inspection_finished_at" field upon the completion of inspection.
* Fixes an issue in the online upgrade logic where database models
for Node Traits and BIOS Settings resulted in an error when
performing the online data migration. This was because these tables
were originally created as extensions of the Nodes database table,
and the schema of the database was slightly different enough to
result in an error if there was data to migrate in these tables upon
upgrade, which would have occured if an early BIOS Setting adopter
had data in the database prior to upgrading to the Yoga release of
Ironic.
The online upgrade parameter now subsitutes an alternate primary key
name name when applicable.
* When a conductor service is stopped it will now continue to
respond to RPC requests until "[DEFAULT]hash_ring_reset_interval"
has elapsed, allowing a hash ring reset to complete on the cluster
after conductor is unregistered. This will improve the reliability
of the cluster when scaling down or rolling out updates.
This delay only occurs when there is more than one online conductor,
to allow fast restarts on single-node ironic installs (bifrost,
metal3).
Other Notes
***********
* The default logging level for the "oslo_concurrencty.lockutils"
module logging has been changed to "WARNING". By default, the debug
logging was resulting in lots of noise. Operators wishing to view
debug logging for this module can tuilize the
"[DEFAULT]default_log_levels" configuration option.
Changes in ironic 21.3.0..21.4.0
--------------------------------
c172e0841 Update release mappings for 21.4 release
cbe5f86ce Fix online upgrades for Bios/Traits
e8bff8f53 Add prelude for OpenStack 2023.1 Ironic release
9a0fa631c Do not move nodes to CLEAN FAILED with empty last_error
e54ee2ba4 Respond to rpc requests on stop until hash ring reset
3eb242a0e Add a comment about node sharding to API versions
82b8ec7a3 Get conductor metric data
c0460efd0 Add missing include for inventory API reference
f2ad1b8a4 Fix expired links
e32d1ac7a Set lockutils default logging
1b2a35afd Add release note for node sharding
9d3d16b79 Fix Inventory DB
25718f5fc Indicate maintenance mode
92eefc9d6 fix inspectwait logic
c9c9b3100 Fixes console port conflict occurs in certain path
88c4271a7 Relaxing console pid looking
bc921118b Erase swift inventory entry on node deletion
8e34d622a API support for CRUD node.shard
a0c1fd888 Add support for filtering for sharded nodes
28167f18f Allow port queries by shard list
36ef217fd DB & Object layer for node.shard
1976b829b Imported Translations from Zanata
2929bcd52 Fix debug log message argument formatting
7c89e7e4e Fix API docs to document port filtering behavior
4e8705dc9 Imported Translations from Zanata
6ea38a47c [DOC] Set cleaning requirement with retirement
5b56cbe8c Minor spelling/grammar fixes for release docs
87a5f1add Bump cirros to version 0.6.1
b1643368b Make metrics names a little more consistent
bad3790e8 Add `service` role RBAC policy support
1f8a0a21d Use association_proxy for port groups node_uuid
35349246a Fix snmp driver sleep call count
393b20204 Add configurable delays to the fake drivers
5e35bae8c Add Yoga versions to release notes
Diffstat (except docs and test files)
-------------------------------------
.../source/baremetal-api-v1-nodes-inventory.inc | 8 +-
api-ref/source/baremetal-api-v1-nodes.inc | 26 +-
api-ref/source/baremetal-api-v1-ports.inc | 5 +
api-ref/source/baremetal-api-v1-shards.inc | 56 +++
api-ref/source/index.rst | 2 +
api-ref/source/parameters.yaml | 45 +-
api-ref/source/samples/shards-list-response.json | 12 +
devstack/tools/ironic/scripts/cirros-partition.sh | 2 +-
ironic/api/controllers/v1/__init__.py | 14 +-
ironic/api/controllers/v1/node.py | 59 ++-
ironic/api/controllers/v1/port.py | 69 ++--
ironic/api/controllers/v1/portgroup.py | 4 +-
ironic/api/controllers/v1/shard.py | 59 +++
ironic/api/controllers/v1/utils.py | 20 +
ironic/api/controllers/v1/versions.py | 4 +-
ironic/common/exception.py | 11 +-
ironic/common/policy.py | 58 ++-
ironic/common/release_mappings.py | 70 +++-
ironic/common/rpc_service.py | 27 +-
ironic/common/states.py | 3 +
ironic/conductor/base_manager.py | 4 +
ironic/conductor/cleaning.py | 26 +-
ironic/conductor/manager.py | 108 ++++-
ironic/conductor/periodics.py | 17 +-
ironic/conductor/steps.py | 6 +-
ironic/conductor/task_manager.py | 11 +-
ironic/conductor/utils.py | 8 +-
ironic/conf/__init__.py | 4 +
ironic/conf/conductor.py | 35 --
ironic/conf/fake.py | 85 ++++
ironic/conf/opts.py | 4 +
ironic/conf/sensor_data.py | 89 ++++
ironic/db/api.py | 23 +-
.../versions/4dbec778866e_create_node_shard.py | 31 ++
ironic/db/sqlalchemy/api.py | 93 ++++-
ironic/db/sqlalchemy/models.py | 12 +
ironic/drivers/modules/agent_base.py | 6 +-
ironic/drivers/modules/console_utils.py | 2 +-
ironic/drivers/modules/fake.py | 63 +++
ironic/drivers/modules/inspect_utils.py | 103 ++++-
ironic/drivers/modules/ipmitool.py | 6 +
ironic/objects/node.py | 8 +-
ironic/objects/node_inventory.py | 17 +-
ironic/objects/port.py | 21 +
ironic/objects/portgroup.py | 8 +-
.../unit/drivers/modules/test_inspect_utils.py | 110 ++++-
.../add-service-role-support-8e9390769508ca99.yaml | 13 +
releasenotes/notes/change-c9c01700dcfd599b.yaml | 9 +
.../notes/cleaning-error-5c13c33c58404b97.yaml | 8 +
...-metric-collector-support-1b8b8c71f9f59da4.yaml | 39 ++
.../notes/console-pid-file-6108d2775ef947fe.yaml | 6 +
releasenotes/notes/fakedelay-7eac23ad8881a736.yaml | 8 +
...fix-console-port-conflict-6dc19688079e2c7f.yaml | 8 +
...x-inspectwait-finished-at-4b817af4bf4c30c2.yaml | 5 +
...-online-version-migration-db432a7b239647fa.yaml | 14 +
.../ironic-antelope-prelude-0b77964469f56b13.yaml | 14 +
...lockutils-default-logging-8c38b8c0ac71043f.yaml | 8 +
.../notes/shard-support-a26f8d2ab5cca582.yaml | 14 +
.../wait_hash_ring_reset-ef8bd548659e9906.yaml | 13 +
.../locale/en_GB/LC_MESSAGES/releasenotes.po | 354 ++++++----------
requirements.txt | 2 +-
tox.ini | 2 +-
92 files changed, 3029 insertions(+), 593 deletions(-)
Requirements updates
--------------------
diff --git a/requirements.txt b/requirements.txt
index 0c73e632e..2f4813baa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -17 +17 @@ keystoneauth1>=4.2.0 # Apache-2.0
-ironic-lib>=4.6.1 # Apache-2.0
+ironic-lib>=5.4.0 # Apache-2.0
More information about the Release-announce
mailing list