We contentedly announce the release of: ironic 12.2.0: OpenStack Bare Metal Provisioning This release is part of the train 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. 12.2.0 ^^^^^^ New Features ************ * Adds option "allow_deleting_available_nodes" to control whether nodes in state "available" should be deletable (which is and stays the default). Setting this option to "False" will remove "available" from the list of states in which nodes can be deleted from ironic. It hence provides protection against accidental removal of nodes which are ready for allocation (and is meant as a safeguard for the operational effort to bring nodes into this state). For backwards compatibility reasons, the default value for this option is "True". The other states in which nodes can be deleted from ironic ("manageable", "enroll", and "adoptfail") remain unchanged. This option can be changed without service restart. * Adds capability to hardware type "idrac" for creating and deleting RAID sets without rebooting the baremetal node. This realtime mechanism is supported on PERC H730 and H740 RAID controllers that are running firmware version 25.5.5.0005 or later. * Adds "reset_idrac" and "known_good_state" cleaning steps to hardware type "idrac". "reset_idrac" actually resets the iDRAC; "known_good_state" also resets the iDRAC and clears the Lifecycle Controller job queue to make sure the iDRAC is in good state. * API version 1.58 allows backfilling allocations for existing deployed nodes by providing "node" to "POST /v1/allocations". * API version 1.57 adds a REST API endpoint for updating an existing allocation. Only "name" and "extra" fields are allowed to be updated. * Adds a new option "enable_mdns" which enables publishing the baremetal API endpoint via mDNS as specified in the API SIG guideline (http://specs.openstack.org/openstack/api-sig/guidelines /dns-sd.html). * Adds a "[conductor]send_sensor_data_for_undeployed_nodes" option to enable ironic to collect and transmit sensor data for all nodes for which sensor data collection is available. By default, this option is not enabled which aligns with the prior behavior of sensor data collection and transmission where such data was only collected if an "instance_uuid" was present to signify that the node has been or is being deployed. With this option set to "True", operators may be able to identify hardware in a faulty state through the sensor data and take action before an instance workload is deployed. * The Smart-Nic functionality that was added to the Bare Metal Service during the Stein cycle can now be used with a Train version of the Networking Service (neutron) as Smart-Nic support merged into that project during the Train development cycle. Upgrade Notes ************* * Updates the minimum required version of "python-dracclient" to "3.0.0" when using the "idrac" hardware type. * Removes "commit_required" from the dictionary returned by the "set_bios_config" vendor passthru call in the "idrac" hardware type. "commit_required" was split into two keys: "is_commit_required" and "is_reboot_required", which indicate the actions necessary to complete setting the BIOS settings. "commit_required" was removed in "python-dracclient" version 3.0.0. * Removes deprecated option "[ilo]/power_retry". Please use "[conductor]/soft_power_off_timeout" instead. * Removes the configuration option "[DEFAULT]/hash_distribution_replicas" which was deprecated in the Stein cycle. * Removes the configuration option "[DEFAULT]enabled_drivers". The option was deprecated in Rocky, and setting this option has raised an exception preventing conductor from starting since then. "[DEFAULT]enabled_hardware_types" should be used instead. * Updates the minimum required version of "ironic-lib" to "2.17.1". Deprecation Notes ***************** * The configuration option "[DEFAULT]/fatal_exception_format_errors" is now deprecated. Please use the configuration option "[ironic_lib]/fatal_exception_format_errors" instead. Bug Fixes ********* * Fixes an issue where the Networking Service performs a pre-flight operation which can exceed the prior default for "30" seconds. The new default is "45" seconds, and operators can tune the setting via the "[neutron]request_timeout" setting. * Fixes overflowing of the node fields "last_error" and "maintenance_reason", which would prevent the object from being correctly committed to the database. The maximum message length can be customized through a new configuration parameter, "[DEFAULT]/log_in_db_max_size" (default, 4096 characters). * Fixes an issue encountered during deployment, more precisely during the configdrive partition creation step. On some specific devices like NVMe drives, the created configdrive partition could not be correctly identified (required to dump data onto it afterward). See story 2005764 (https://storyboard.openstack.org/#!/story/2005764). * Fixes an issue regarding the "ansible" deploy interface cleaning workflow. Handling the error in the driver and returning nothing caused the manager to consider the step done and go to the next one instead of interrupting the cleaning workflow. * Fixes an issue with the "ansible" deploy interface where raw images could not be streamed correctly to the host. * Fixes deployment with the "ansible" deploy interface and instance images with GPT partition table. * Fixes traceback on cleaning of nodes with the "redfish" hardware type if their BMC does not support BIOS settings. * Fixes an issue where the sensor data parsing method for the "ipmitool" interface lacked the ability to handle the automatically included *ipmitool* debugging information when the "debug" option is set to "True" in the ironic.conf file. As such, extra debugging information supplied by the underlying "ipmitool" command is disregarded. More information can be found in story 2005331 (https://storyboard.openstack.org/#!/story/2005332). * Fixes an issue where deploy fails during node preparation if the node "capabilities" are passed as string. * Fixes GRUB configuration file generation procedure when building bootable ISO images that include user EFI boot loader image. Prior to this fix, no bootable ISO image could be generated unless EFI boot loader is extracted from deploy ISO image. * Fixes an issue when the image source is a local file, the image will be truncated to 2G and fails deployment due to image corruption. * Fixes binary files upload to Swift. Prior to this fix, binary file upload to Swift might fail at unicode characters interpretation. * The internal JSON RPC server now binds to "::" by default, allowing it to work correctly with IPv6. * This fix binds the jsonschema to use draft-04 for raid schema. The jsonschema 3.0.1 supports draft-03, draft-04, draft-06 and draft-07 and by default the validate function uses latest draft validator. Draft-04 is the latest draft in the jsonschema 2.6. Hence binding the schema to draft-04 validator makes it compliant for both jsonschema 2.6 and jsonschema 3.0.1. * Fixes the duplication of the "ipxe" tag when using IPv6, which leads to the dhcp server possibly returning an incorrect response to the DHCPv6 client. * Fixes an issue where nodes in the process of deployment may have metrics data collected and transmitted during the deployment process which may erroneously generate alarms depending on the operator's monitoring configuration. This was due to a database filter relying upon the indicator of an "instance_uuid" as opposed to the state of a node. * No longer tries to create a temporary URL with zero lifetime if the "deploy_callback_timeout" option is set to zero. The default of 1800 seconds is used in that case. Use the new "configdrive_swift_temp_url_duration" option to override. Changes in ironic 12.1.0..12.2.0 -------------------------------- 0cf907bd0 Spruce up release notes for 12.2.0 release dcab7df39 Update API history and release mapping for 12.2.0 d02acfb3b DRAC: Adding reset_idrac and known_good_state cleaning steps 809653e12 devstack: add missing variables for ironic-python-agent-builder 2fde1940b Remove ipxe tags when ipx6 is in use. c59dc1386 Update qemu hook to facilitate Multicast 46884deba redfish: handle missing Bios attribute 43f7bf9f0 Fix :param: in docstring df5ac6d5b Updates ironic for using ironic-python-agent-builder c2ab34a8c Do not log an exception if Allocation is deleted during handling. 6ca99d673 Add release note updating status of smartnics f5dbf8ba0 Switch to use exception from ironic-lib 87464fbbc Change constraints opendev.org to release.openstack.org a09a34207 Ansible module: fix configdrive partition creation step a3634840f Remove deprecated option [DEFAULT]enabled_drivers 9ffb6054d Fix regex string in the hacking check 2d4380e32 Add api-ref for allocation update 55e8d3fde Add a pxe/uefi/grub2 CI job 234dea98b Bump lower mock version to 3.0.0 77b8898fd Start using importlib for Python 3.x 99137706e Remove XML support in parsable_error middleware 45020712d Fix binary file upload to Swift 5c4efd3b6 fix typo in code comment 5b0ec703c Software RAID: Trigger grub installation on the holder disks 73845b365 Move stray reno file db7d9bb1f Trivial: correct configuration option copy-pased from inspector cc10323db Remove commit_required in iDRAC hardware type 75d796e73 Make the multinode grenade job voting again 6849a43cf devstack: configure rabbit outside of API configuration 2c42e3cdf Blacklist python-cinderclient 4.0.0 c36a01a43 Publish baremetal endpoint via mdns 4537e2c54 Fix inaccurate url links 9ed910139 Update sphinx requirements a0f0e52b8 Allocation API: correct setting name to None 8f6bf4f9d Allocation API: backfilling allocations 306aebad4 Fix GRUB config path when building EFI ISO 5d054cac4 Add DHCP server part to make the document more detail f8e1fbf30 Do not try to return mock as JSON in unit tests 5dd64771d Remove deprecated option [ilo]power_retry aec48ca27 Add API to allow update allocation name and extra field befc4a61e Update Python 3 test runtimes for Train a89e903f7 Replace hardcoded "stack" user to $STACK_USER bace52165 Run vbmcd as stack user in devstack 9d5461506 Adding enabled_boot_interface attribute in tempest config d308d10cd Add openstack commands in node deployment guide 2c8f3a95a Add a high level vision reflection document 3a54fe3e8 Add iDRAC driver realtime RAID creation and deletion 810670cf1 Correct spelling errors a280696a0 Replace git.openstack.org URLs with opendev.org URLs bda02c43f Direct bridge to be setup bb8101ca9 Fix pyghmi path d0e6c6cb1 OpenDev Migration Patch e9540f5d2 Removes `hash_distribution_replicas` configuration option 9124a4a13 Truncate node text fields when too long ada661185 Add note for alternative checksums 18fdc447e Make the JSON RPC server work with both IPv4 and IPv6 b60975641 Jsonschema 3.0.1: Binding the schema to draft-04 708319742 Place upper bound on python-dracclient version c2588c4de devstack: Remove syslinux dependency 2039138cf Do not try to create temporary URLs with zero lifetime 84741e940 Ansible module: fix partition_configdrive.sh file 1d0accbbe Use the PUBLIC_BRIDGE for vxlan edd78ce09 Move devstack emulators configs under /etc/ironic 84dfc151e Uncap jsonschema in requirements 3fce1a54a Split ibmc power/reboot classes 2bb05fef7 Temporarily mark grenade multinode as non-voting 01b0be9db Improve VirtualBMC use in Devstack 380519c07 Run IPMI, SNMP and Redfish BMC emulators as stack 9d9e7df87 Add UEFI firmware to Redfish emulator config 4964d1771 Add systemd unit for sushy emulator in devstack df5261bb3 Ansible module: fix clean error handling e8a8b7897 [Trivial] Fix typo in agent_base_vendor unit test 7d0cd4c28 Fix exception generation errors 56bec518b Add a request_timeout to neutron 74357e5d0 doc: update ibmc driver support servers document 732bbd851 Ansible module fix: stream_url 68ba34552 Make it possible to send sensor data for all nodes 3e703a6b2 Slightly rephrase note in tenant networking docs d52aacd29 Bump sphinxcontrib-pecanwsme to 0.10.0 418a5668a ipmi: Ignore sensor debug data 692cbd2ac Make 'noop' the explicit default of default_storage_interface 00342d997 Docs: correct expected host format for drac_address b5e34e167 Check for deploy.deploy deploy step in heartbeat 17a65c89b Workaround for sendfile size limit 6f22c0014 Workaround for uefi job with ubuntu bionic 228dfe308 Replace openstack.org git:// URLs with https:// 37c443700 Remove vbmc log file in devstack ad6c2f7e5 Add versions to release notes series 944585151 Imported Translations from Zanata 8b86cdd90 Update master for stable/stein 93a40e3fc Fix capabilities passed as string in agent prepare f25a83b57 Respect $USE_PYTHON3 settings for gunicorn 407724a22 Migrate ironic-grenade-dsvm-multinode-multitenant job to Ubuntu Bionic Diffstat (except docs and test files) ------------------------------------- .gitreview | 2 +- README.rst | 2 +- api-ref/source/baremetal-api-v1-allocation.inc | 65 +++ api-ref/source/parameters.yaml | 18 +- .../source/samples/allocation-update-request.json | 7 + .../source/samples/allocation-update-response.json | 26 + bindep.txt | 3 + devstack/common_settings | 2 +- devstack/files/debs/ironic | 3 +- devstack/files/hooks/qemu.py | 14 + devstack/lib/ironic | 357 +++++++++---- devstack/tools/ironic/scripts/cleanup-node.sh | 5 - devstack/tools/ironic/scripts/create-node.sh | 6 - devstack/tools/ironic/templates/vm.xml | 5 + devstack/upgrade/settings | 2 +- .../contributor/ironic-multitenant-networking.rst | 4 +- .../include/configure-ironic-api-mod_wsgi.inc | 2 +- .../install/include/kernel-boot-parameters.inc | 2 +- driver-requirements.txt | 2 +- ironic/api/controllers/v1/allocation.py | 106 +++- ironic/api/controllers/v1/utils.py | 18 +- ironic/api/controllers/v1/versions.py | 6 +- ironic/api/middleware/parsable_error.py | 29 +- ironic/cmd/dbsync.py | 10 +- ironic/common/driver_factory.py | 6 - ironic/common/exception.py | 119 +---- ironic/common/glance_service/v2/image_service.py | 6 +- ironic/common/image_service.py | 16 +- ironic/common/images.py | 7 +- ironic/common/neutron.py | 3 +- ironic/common/policy.py | 5 + ironic/common/pxe_utils.py | 29 +- ironic/common/release_mappings.py | 21 +- ironic/common/swift.py | 2 +- ironic/conductor/allocations.py | 88 ++++ ironic/conductor/base_manager.py | 77 +-- ironic/conductor/manager.py | 63 ++- ironic/conductor/rpcapi.py | 3 +- ironic/conf/conductor.py | 20 + ironic/conf/default.py | 27 +- ironic/conf/ilo.py | 8 - ironic/conf/json_rpc.py | 2 +- ironic/conf/neutron.py | 9 + ironic/db/sqlalchemy/api.py | 2 +- ironic/drivers/ibmc.py | 3 +- ironic/drivers/modules/agent.py | 2 +- ironic/drivers/modules/agent_base_vendor.py | 65 ++- ironic/drivers/modules/ansible/deploy.py | 15 +- .../ansible/playbooks/library/stream_url.py | 2 +- .../roles/deploy/files/partition_configdrive.sh | 29 +- ironic/drivers/modules/deploy_utils.py | 3 +- ironic/drivers/modules/drac/bios.py | 9 +- ironic/drivers/modules/drac/management.py | 32 ++ ironic/drivers/modules/drac/raid.py | 57 ++- ironic/drivers/modules/drac/vendor_passthru.py | 18 +- ironic/drivers/modules/ilo/power.py | 12 +- ironic/drivers/modules/ipmitool.py | 3 + ironic/drivers/modules/pxe.py | 6 +- ironic/drivers/modules/redfish/bios.py | 24 +- ironic/drivers/modules/xclarity/common.py | 6 +- ironic/drivers/raid_config_schema.json | 1 + ironic/hacking/checks.py | 2 +- ironic/objects/node.py | 17 +- ...ction-for-available-nodes-25f163d69782ef63.yaml | 12 - .../unit/api/controllers/v1/test_allocation.py | 273 +++++++++- .../unit/drivers/modules/ansible/test_deploy.py | 11 +- .../unit/drivers/modules/drac/test_management.py | 26 + .../unit/drivers/modules/redfish/test_bios.py | 68 ++- .../unit/drivers/modules/test_agent_base_vendor.py | 168 ++++++- .../unit/drivers/modules/test_deploy_utils.py | 11 +- lower-constraints.txt | 6 +- .../{set-stack-key.yaml => pre.yaml} | 4 +- .../run.yaml | 12 +- playbooks/legacy/grenade-dsvm-ironic/run.yaml | 8 +- .../legacy/ironic-dsvm-base-multinode/pre.yaml | 6 +- playbooks/legacy/ironic-dsvm-base/pre.yaml | 6 +- ...d-neutron-request-timeout-1f7372af81f14ddd.yaml | 7 + ...ction-for-available-nodes-25f163d69782ef63.yaml | 12 + .../add-realtime-support-d814d5917836e9e2.yaml | 13 + ...drac_and_known_good_state-cdbebf97d7b87fe7.yaml | 8 + .../allocation-backfill-c31e84c5fcf24216.yaml | 5 + .../allow-allocation-update-94d862c3da454be2.yaml | 5 + .../notes/bug-2005377-5c63357681a465ec.yaml | 7 + .../notes/bug-2005764-15f45e11b9f9c96d.yaml | 8 + releasenotes/notes/bug-30315-e46eafe5b575f3da.yaml | 8 + releasenotes/notes/bug-30316-8c53358681e464eb.yaml | 4 + releasenotes/notes/bug-30317-a972c8d879c98941.yaml | 5 + .../notes/cleaning-bios-d74a4947d2525b80.yaml | 5 + ...sor-data-fix-for-ipmitool-eb13e80ccdd984db.yaml | 10 + ...abilities-as-string-agent-7c5c7975560ce280.yaml | 5 + .../notes/fix-esp-grub-path-9e5532993dccc07a.yaml | 7 + .../fix-sendfile-size-cap-d9966a96e2d7db51.yaml | 6 + .../fix-swift-binary-upload-bf9471fca29290e1.yaml | 5 + ...ac-remove-commit_required-d9ea849e8f5e78e2.yaml | 9 + ...ve-deprecated-power-retry-ba29a21f03fe8dbb.yaml | 5 + .../notes/json-rpc-bind-a0348cc6f5efe812.yaml | 5 + .../notes/jsonschema_draft04-1cb5fc4a3852f9ae.yaml | 9 + releasenotes/notes/mdns-a5f4034257139e31.yaml | 6 + ...ash_distribution_replicas-08351358eba4c9e1.yaml | 5 + .../remove-enabled-drivers-5afcd77b53da1499.yaml | 7 + ...emove-ipxe-tags-with-ipv6-cf4b7937c27590d6.yaml | 6 + ...sensor-data-for-all-nodes-a732d9df43e74318.yaml | 19 + ...gic-has-merged-in-neutron-79078280d40f042c.yaml | 7 + .../use-ironic-lib-exception-4bff237c9667bf46.yaml | 8 + .../notes/zero-temp-url-c21e208f8933c6f6.yaml | 7 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 559 ++++++++++++++++++++- releasenotes/source/stein.rst | 6 + requirements.txt | 6 +- setup.cfg | 3 +- test-requirements.txt | 2 +- tools/config/ironic-config-generator.conf | 2 + tox.ini | 10 +- zuul.d/ironic-jobs.yaml | 37 +- zuul.d/legacy-ironic-jobs.yaml | 17 +- zuul.d/project.yaml | 4 +- 167 files changed, 3428 insertions(+), 896 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index 6b4765745..fd0dbc4d3 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -12 +12 @@ UcsSdk==0.8.2.2;python_version<'3' -python-dracclient>=1.5.0 +python-dracclient>=3.0.0,<4.0.0 diff --git a/requirements.txt b/requirements.txt index ba1845d8d..86c36219d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10 +10 @@ WebOb>=1.7.1 # MIT -python-cinderclient>=3.3.0 # Apache-2.0 +python-cinderclient!=4.0.0,>=3.3.0 # Apache-2.0 @@ -14 +14 @@ keystoneauth1>=3.4.0 # Apache-2.0 -ironic-lib>=2.15.0 # Apache-2.0 +ironic-lib>=2.17.1 # Apache-2.0 @@ -46 +46 @@ oslo.versionedobjects>=1.31.2 # Apache-2.0 -jsonschema<3.0.0,>=2.6.0 # MIT +jsonschema>=2.6.0 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index 373d2a4da..9ec005c94 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -8 +8 @@ fixtures>=3.0.0 # Apache-2.0/BSD -mock>=2.0.0 # BSD +mock>=3.0.0 # BSD
participants (1)
-
no-reply@openstack.org