[release-announce] ironic 20.1.0 (yoga)

no-reply at openstack.org no-reply at openstack.org
Thu Mar 24 08:10:12 UTC 2022


We are gleeful to announce the release of:

ironic 20.1.0: OpenStack Bare Metal Provisioning

This release is part of the yoga 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.

20.1.0
^^^^^^


Prelude
*******

The Ironic community is pleased to announce the release of Ironic
20.1.

During the Yoga cycle, we had forty-three contributors. They are
responsible for more than 35,000 lines of code and more than twenty
new features that will improve the experience of our end-users! Please
reach out to our community if you have any questions or feedback!


New Features
************

* For "redfish" and "idrac-redfish" management interface
  "firmware_update" clean step adds Swift, HTTP service and file
  system support to serve and Ironic's HTTP and Swift service to stage
  files. Also adds mandatory parameter "checksum" for file checksum
  verification.

* Adds support for "idrac-wsman" RAID, BIOS and management clean
  steps to be run without IPA when disabling ramdisk during cleaning.

* Supports listening on a Unix socket instead of a normal TCP
  socket. This is useful with an HTTP server such as nginx in proxy
  mode.


Known Issues
************

* When using iDRAC with Swift to stage firmware update files in
  Management interface "firmware_update" clean step of "redfish" or
  "idrac" hardware type, the cleaning fails with error "An internal
  error occurred. Unable to complete the specified operation." in
  iDRAC job. Until this is fixed, use HTTP service to stage firmware
  files for iDRAC.


Upgrade Notes
*************

* For "redfish" and "idrac-redfish" management interface
  "firmware_update" clean step there is now mandatory "checksum"
  parameter necessary. Update existing clean steps to include it,
  otherwise clean step will fail with error "'checksum' is a required
  property".


Deprecation Notes
*****************

* Booting final instances via network (as opposed to via a local
  bootloader) is now deprecated, except for the cases of booting from
  volume or the ramdisk deploy interface.

  Network boot for whole disk images only works reliable for legacy
  (BIOS) boot. In case of partition images, there is no way to update
  the kernel, which makes this approach insecure.

  Users of partition images must ensure that they either contain the
  "grub-install" binary, enough EFI artifacts to boot the operating
  system or a legacy boot partition.


Bug Fixes
*********

* The anaconda deploy interface was treating the config drive as a
  dict, whereas it could be a dict or in iso6600 format, gzipped and
  base64-encoded. This has been fixed.

* The anaconda deploy interface was adding commands that deal with
  the config drive, to the end of the kickstart config file. Which
  means that they are handled after an ironic API request is sent (to
  the conductor) to indicate that the node has been provisioned and is
  ready to be rebooted. Which means that there is a possible race
  condition wrt these commands being completed before the node is
  powered off. A sync is added to ensure that all modifications have
  been written to disk, before the API request is sent -- as the last
  thing.

* Extra newlines ('n') were incorrectly added to the user data
  content. This broke the content-type decoding and cloud-init was
  unable to proces them. The extra newlines have been removed.

* Fixes the logic for the anaconda deploy interface. If the ironic
  node's instance_info doesn't have both 'stage2' and 'ks_template'
  specified, we weren't using the instance_info at all. This has been
  fixed to use the instance_info if it was specified. Otherwise,
  'stage2' is taken from the image's properties (assumed that it is
  set there). 'ks_template' value is from the image properties if
  specified there (since it is optional); else we use the config
  setting '[anaconda] default_ks_template'.

* For the anaconda deploy interface, the 'stage2' directory was
  incorrectly being created using the full path of the stage2 file;
  this has been fixed.

* The anaconda deploy interface expects the node's instance_info to
  be populated with the 'image_url'; this is now populated (via
  PXEAnacondaDeploy's prepare() method).

* For the anaconda deploy interface, when the deploy was finished
  and the bm node was being rebooted, the node's provision state was
  incorrectly being set to 'active' -- the provisioning state-machine
  mechanism now handles that.

* For the anaconda deploy interface, the code that was doing the
  validation of the kickstart file was incorrect and resulted in
  errors; this has been addressed.

* For the anaconda deploy interface, the '%traceback' section in the
  packaged 'ks.cfg.template' file is deprecated and fails validation,
  so it has been removed.

* The anaconda deploy interface was saving internal information in
  the node's "instance_info", in the user-facing "stage2" and
  "ks_template" fields. This broke rebuilds using a different image
  with different "stage2" or template specified in the image
  properties. This has been fixed by saving the information in the
  node's "driver_internal_info" instead.

* Fixes the "redfish" hardware type RAID device creation and
  deletion when creating or deleting more than 1 logical disk on RAID
  controllers that require rebooting and do not allow more than 1
  running task per RAID controller. Before this fix 2nd logical disk
  would fail to be created or deleted. With this change it is now
  possible to use "redfish" "raid" interface on iDRAC systems.

Changes in ironic 20.0.0..20.1.0
--------------------------------

872ede25a Fix 20.1 prelude releasenote
aefc623c9 Prepare Yoga release with 20.1
f446be697 Link from deploy interface docs to anaconda docs and move it to advanced
dfd400213 [trivial]Remove is_pxe_enabled function doc about ipxe_enabled option
3e631a593 Create API documentation from docstrings
687694c83 Improve efficiency of storage cleaning in mixed media envs - documentation
7d1d2da0d Use pycdlib to extract deploy iso
e02ab8941 Suppress Bandit B509 in snmp.py
ab68c9d88 Fix rebuilds using anaconda deploy interface
09d8a94d5 Anaconda deploy handles configdrive correctly
1f7972831 Minor updates to rbac doc
e11cfdb84 Update minimum requirements for ilo drivers
e5e8e3cd5 Fix failure of create_vfat_image function
004e1e889 Troubleshooting guide: node locked error
4b4f3f38c [Trivial] Fix formatting in troubleshooting docs
06cc5d47d More fixes for anaconda deploy interface
5a9dd8b09 Deprecate instance network boot
ccd1f34d5 Update python-dracclient version
2f09b7b10 CI: force config drive on the multinode job's subnode
b8ef35a98 Ensure tox.ini is ASCII
daa7dba33 Shorten error messages in commonly used modules
d7d8f8754 Fix Redfish RAID for non-immediate controllers
dd1cb46f2 Fix prepare ramdisk for 'wait' states
358b6eac4 Support listening on a Unix socket
c62c16bd2 Support img_type Glance property
a7cd4d557 Recommend various installers in the install guide
bfea8f17b Add idrac-wsman clean steps to not require ramdisk
7d0af42f9 Add known issue for iDRAC Swift firmware update
960f10a90 Add more sources to redfish firmware upgrade
d0f61e949 Ignore fake nodes in the power sync loop


Diffstat (except docs and test files)
-------------------------------------

api-ref/source/baremetal-api-v1-nodes.inc          |   5 -
api-ref/source/parameters.yaml                     |  15 +-
driver-requirements.txt                            |   4 +-
ironic/api/controllers/v1/allocation.py            |  53 +--
ironic/api/controllers/v1/driver.py                |  27 +-
ironic/api/controllers/v1/node.py                  |   6 +
ironic/common/images.py                            |  62 ++--
ironic/common/kickstart_utils.py                   |  14 +-
ironic/common/pxe_utils.py                         | 113 ++++---
ironic/common/release_mappings.py                  |  24 +-
ironic/common/wsgi_service.py                      |  21 +-
ironic/conductor/cleaning.py                       |   5 +-
ironic/conductor/deployments.py                    |   9 +-
ironic/conductor/manager.py                        |  24 +-
ironic/conductor/utils.py                          |  16 +-
ironic/conf/api.py                                 |  16 +
ironic/conf/deploy.py                              |   5 +-
ironic/conf/redfish.py                             |  15 +
ironic/drivers/modules/agent.py                    |   5 +
ironic/drivers/modules/agent_base.py               |  12 +-
ironic/drivers/modules/deploy_utils.py             |  16 +-
ironic/drivers/modules/drac/bios.py                |   6 +-
ironic/drivers/modules/drac/management.py          |   6 +-
ironic/drivers/modules/drac/raid.py                |   4 +-
ironic/drivers/modules/ilo/boot.py                 |  18 +-
ironic/drivers/modules/irmc/boot.py                |   8 +-
ironic/drivers/modules/ks.cfg.template             |  15 +-
ironic/drivers/modules/pxe.py                      |  22 +-
ironic/drivers/modules/redfish/boot.py             |   9 +-
ironic/drivers/modules/redfish/firmware_utils.py   | 201 ++++++++++-
ironic/drivers/modules/redfish/management.py       |  72 +++-
ironic/drivers/modules/redfish/raid.py             | 284 +++++++++-------
ironic/drivers/modules/snmp.py                     |   5 +-
ironic/drivers/utils.py                            |  21 ++
.../drivers/modules/redfish/test_firmware_utils.py | 375 ++++++++++++++++++++-
.../drivers/modules/redfish/test_management.py     | 219 +++++++++++-
.../unit/drivers/modules/redfish/test_raid.py      | 276 +++++++++++++--
.../notes/20.1-prelude-612672742f417477.yaml       |   8 +
...s-redfish-firmware-update-3da89f10dc0f8d21.yaml |  14 +
...aconda-config-drive-fixes-5880884e34584549.yaml |  19 ++
...naconda-deploy-more-fixes-58d996c7031c8c4b.yaml |  33 ++
...naconda-instance-info-fix-a51837d8ac7b41de.yaml |   9 +
...ish-raid-onreset-workflow-bfa44de6b0263a1f.yaml |   9 +
...steps-not-require-ramdisk-ca98aa5c0a88f727.yaml |   5 +
.../notes/image-type-ac259a90393bdd2c.yaml         |   2 +
...ssue-idrac-firmware-swift-721a19cac796e1ae.yaml |   8 +
.../netboot-deprecation-fe5751a47df2d0b7.yaml      |  14 +
.../notes/unix-socket-48e8f1caf4cb19f9.yaml        |   5 +
tox.ini                                            |   4 +-
zuul.d/ironic-jobs.yaml                            |   3 +-
73 files changed, 2508 insertions(+), 532 deletions(-)


Requirements updates
--------------------

diff --git a/driver-requirements.txt b/driver-requirements.txt
index 5239fe73c..da312468e 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -7 +7 @@
-proliantutils>=2.11.0
+proliantutils>=2.13.0
@@ -10 +10 @@ python-scciclient>=0.8.0
-python-dracclient>=5.1.0,<8.0.0
+python-dracclient>=5.1.0,<9.0.0






More information about the Release-announce mailing list