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
participants (1)
-
no-reply@openstack.org