[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