[release-announce] ironic 15.0.2 (ussuri)

no-reply at openstack.org no-reply at openstack.org
Thu Jul 29 10:19:33 UTC 2021


We are thrilled to announce the release of:

ironic 15.0.2: OpenStack Bare Metal Provisioning

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

15.0.2
^^^^^^


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

* Some "ipmitool" builds, in particular on machines running Red Hat
  Enterprise Linux 8.2, have changed the default cipher suite being
  offered which can cause "ipmitool" to completely fail to negotiate a
  connection with the BMC. Operators who encounter this situation
  should use the "ipmi_cipher_suite" parameter in the "driver_info"
  field to override and directly assert the required cipher. Because
  of potential security implications of attempting second level auto-
  negotiation and known BMC vendor behaviors, this must be identified
  by the operator and explicitly set as logic to attempt to navigate
  through situations like this may have undesirable results.

* When "redfish-virtual-media" is used, fast-track mode will not
  work as expected, nodes will be rebooted between operations.


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

* An automated detection of a IPMI BMC hardware vendor has been
  added to appropriately handle IPMI BMC variations. Ironic will now
  query this and save this value if not already set in order to avoid
  querying for every single operation. Operators upgrading should
  expect an elongated first power state synchronization if for nodes
  with the "ipmi" hardware type.


Bug Fixes
*********

* Fixes the deployment failure with Ussuri (and older) ramdisks that
  happens when another IPA command runs after "prepare_image".

* Fixes an issue with the "ansible" deployment interface where
  automatic root deviec selection would accidently choose the system
  CD-ROM device, which was likely to occur when the ansible deployment
  interface was used with virtual media boot. The "ansible" deployment
  interface now ignores all Ramdisks, Loopbacks, CD-ROMs, and floppy
  disk devices.

* Fixes the "[deploy]configdrive_use_object_store" option that was
  broken during the Python 3 transition.

* Fixes the problem about grub2 config file. Some higher versions of
  grub2 (e.g. 2.05 or 2.06-rc1) use grub.cfg-01-MAC, while another
  lower versions of grub2 (e.g. 2.04) use MAC.conf, so we generate
  both paths in order to be compatible with both.

* Fixes an issue with agent token handling where the agent has not
  been upgraded resulting in an AgentAPIError, when the token is not
  required. The conductor now retries without sending an agent token.

* Fixes issues when "UEFI" boot mode has been requested with
  persistent boot to "DISK" where some versions of "ipmitool" do not
  properly handle multiple options being set at the same time. While
  some of this logic was addressed in upstream ipmitool
  (https://github.com/ipmitool/ipmitool/issues/163) development, new
  versions are not released and vendors maintain downstream forks of
  the ipmitool utility. When considering vendor specific selector
  differences (https://storyboard.openstack.org/#!/story/2008241)
  along with the current stance of new versions from the upstream
  "ipmitool" community, it only made sense to handle this logic with-
  in Ironic. In part this was because if already set the selector
  value would not be updated. Now ironic always transmits the selector
  value for "UEFI".

* Fixes handling of Supermicro "UEFI" supporting BMCs with the
  "ipmi" hardware type such that an appropriate boot device selector
  value is sent to the remote BMC to indicate boot from local storage.
  This is available for both persistent and one-time boot
  applications. For more information, please consult story 2008241
  (https://storyboard.openstack.org/#!/story/2008241).

* Fixes handling of the "ipmi" hardware type where "UEFI" boot mode
  and "one-time" boot to PXE has been requested. As Ironic now
  specifically transmits the raw commands, this setting should be
  properly appied where previously PXE boot operations may have
  previously occured in "Legacy BIOS" mode.

* Fixes a potential race in the hash ring code that could result in
  the hash rings never updated after their initial load.

* Fixes the virtual disks creation by changing PERC H740P controller
  mode from *Enhanced HBA* to *RAID* in delete_configuration clean
  step. PERC H740P controllers supports RAID mode and Enhanced HBA
  mode. When the controller is in Enhanced HBA, it creates single disk
  RAID0 virtual disks of NON-RAID physical disks. Hence the request
  for VD creation with supported RAID fails due to no available
  physical disk. This patch converts the PERC H740P RAID controllers
  to RAID mode if enhanced HBA mode found enabled See bug bug 2007711
  (https://storyboard.openstack.org/#!/story/2007711) for more details

* Fixes the deprecated "idrac" hardware interface implementation
  "__init__" methods to call their base class "__init__" methods
  before emitting a log message warning about their deprecation. For
  more information, see story 2008197
  (https://storyboard.openstack.org/#!/story/2008197).

* Allows configuring IPMI cipher suite via the new "driver_info"
  parameter "ipmi_cipher_suite" to enable operators to navigate
  "ipmitool" behavior changes around supported ciphers.

* When configured to use json-rpc, the "[DEFAULT].host"
  configuration option to ironic-conductor can now be set to an IPv6
  address. Previously it could only be an IPv4 address or a DNS name.

* Fixes the issue that when the MAC address of a port group is not
  set and been attached to instance, the landed bond port cannot get
  IP address due to inconsistent MAC address between the tenant port
  and the initially allocated one in the config drive.

* Fixes wiping the agent secret token on manual power off or reboot.
  Also makes sure to remove the agent URL since it may potentially
  change.

* Fixes cleaning and managed inspection not respecting the
  "default_boot_mode" configuration option.

* Fixes cleaning and managed inspection not following the standard
  boot mode handling logic, particularly, not trying to assert the
  requested boot mode if the driver allows it.

* Adds handling of Redfish BMC's which lack a
  "BootSourceOverrideMode" flag, such that it is no longer a fatal
  error for a deployment if the BMC does not support this field. This
  most common on BMCs which feature only a partial implementation of
  the "ComputerSystem" resource "boot", but may also be observable on
  some older generations of BMCs which recieved updates to have
  partial Redfish support.

* The fix for story 2008252
  (https://storyboard.openstack.org/#!/story/2008252) synced the boot
  mode after changing the boot device because Supermicro nodes reset
  the boot mode if not included in the boot device set. However this
  can cause a problem on Dell nodes when changing the mode uefi->bios
  or bios->uefi, see story 2008712
  (https://storyboard.openstack.org/#!/story/2008712) for details.
  Restrict the syncing of the boot mode to Supermicro.

* When Ironic configures the BootSourceOverrideTarget setting via
  Redfish, on Supermicro BMCs it must always configure
  BootSourceOverrideEnabled or that will revert to default (Once) on
  the BMC, see story 2008547
  (https://storyboard.openstack.org/#!/story/2008547) for details.
  This is different than what is currently implemented for other BMCs
  in which the BootSourceOverrideEnabled is not configured if it
  matches the current setting (see story 2007355
  (https://storyboard.openstack.org/#!/story/2007355)).

  This requires that node.properties['vendor'] be 'supermicro' which
  will be set by Ironic from the Redfish system response or can be set
  manually.

* After changing the boot device via Redfish, check that the boot
  mode being reported matches what is configured and, if not, set it
  to the configured value.  Some BMCs change the boot mode when the
  device is set via Redfish, see story 2008252 for details.

* Introduces lazy-loading of ports, portgroups, volume connections
  and volume targets in task manager to fix performance issues. For
  periodic tasks which create a task manager object but don't require
  the aforementioned data (e.g. power sync), this change should reduce
  the number of database interactions by around two thirds, speeding
  up overall execution.

* Removes stale agent tokens when rebooting nodes using API. This
  prevents lookup failures for nodes that get rebooted between fast-
  track operations.

* Fixes an issue of powering off with the "idrac-wsman" management
  interface while the execution of a clear job queue cleaning step is
  proceeding. Prior to this fix, the clean step would fail when
  powering off a node.

* Fixes timeout in fast-track mode with "redfish-virtual-media" when
  running one operation after another (e.g. cleaning after
  inspection).


Other Notes
***********

* Adds a "detect_vendor" management interface method to the "ipmi"
  hardware type. This method is being promoted as a higher level
  interface as the fundimental need to be able to have logic aware of
  the hardware vendor is necessary with vendor agnostic drivers where
  slight differences require slightly different behavior.

Changes in ironic 15.0.1..15.0.2
--------------------------------

f33bc52b0 Remove grenade jobs from old stable branches
c68e50e6c Update the clear job id's constant
8d6cf57bb Make test-setup.sh compatible with mysql8
86a855d61 Delete unavailable py2 package
54376836e update grub2 file name
72fd48b9c Restrict syncing of boot mode to Supermicro
2e4e87556 For Supermicro BMCs set enable when changing boot device
4df73e47e Refactor vendor detection and add Redfish implementation
8bf3f4747 IPMI: Handle vendor set boot device differences
97390e427 Allow unsupported redfish set_boot_mode
691211b10 Lazy-load node details from the DB
5e2eeb311 [Trivial] Fix testing of volume connector exception
0da73cdd3 Fix broken configdrive_use_object_store
8c0568f34 Enable swift temporary URLs in grenade and provide a good error message
c3c6cda65 DRAC: Fix a failure to create virtual disk
85a1e3d23 CI: switch the multinode job to tempest-multinode-full-base
b2ae2af3f Fixes the issue that instance bond port can't get IP address
a6f38ab05 Sync boot mode when changing the boot device via Redfish
cfc681817 Use assertCountEqual instead of assertItemsEqual
2248f2ac7 json-rpc: surround IPv6 address with [] in conductor URL
a7cfcd181 clean up mac address with the pxe configuration files
6ef6180bd Prevent timeouts when using fast-track with redfish-virtual-media
96a719e4e opt: Enhance old stable branches to use latest python-ibmcclient
d48b39430 CI: Making some of the older jobs more specific
7ce314804 CI: Additional minor job changes to improve CI reliability
c15d6fd70 Fix a race condition in the hash ring code
e5f886e8c Use correct error handler instead of calling process_event('fail')
20de88441 Fix deprecated 'idrac' interface '__init__'s
3943bd143 CI: Patch to fix CI jobs in bugfix/stable branches
b9a02e9ab CI: Remove the build check for pre-build ramdisks only
ac2d4c086 Allow configuring IPMI cipher suite
d9183a0a3 Also wipe agent token on manual power off or reboot
041f1b89e Handle default_boot_mode during cleaning/inspection with PXE/iPXE
b4c6d7be4 Do not assume that prepare_image is the last command to run
b67ac0c40 Handle an older agent with agent_token
2b740a0c7 Increase memory of tinyipa vms
145d68e8f Ansible deploy - Ignore invalid devices
bce1d33e5 Wipe agent token during reboot or power off


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

devstack/lib/ironic                                |   9 +-
.../include/configure-ironic-api-mod_wsgi.inc      |  10 +-
.../install/include/configure-ironic-api.inc       |   2 +-
driver-requirements.txt                            |   2 +-
ironic/common/hash_ring.py                         |  28 ++--
ironic/common/json_rpc/client.py                   |   5 +-
ironic/common/neutron.py                           |   6 +-
ironic/common/pxe_utils.py                         |  16 +-
ironic/common/swift.py                             |   7 +-
ironic/conductor/deployments.py                    |   3 +-
ironic/conductor/manager.py                        |   7 +
ironic/conductor/task_manager.py                   |  72 ++++++++-
ironic/conductor/utils.py                          |  67 +++++++-
ironic/drivers/base.py                             |  18 +++
ironic/drivers/modules/agent.py                    |  46 +++---
ironic/drivers/modules/agent_client.py             |  45 +++++-
.../ansible/playbooks/library/root_hints.py        |   6 +
ironic/drivers/modules/boot_mode_utils.py          |   5 +-
ironic/drivers/modules/deploy_utils.py             |   3 +
ironic/drivers/modules/drac/inspect.py             |   1 +
ironic/drivers/modules/drac/management.py          |   5 +-
ironic/drivers/modules/drac/power.py               |   1 +
ironic/drivers/modules/drac/raid.py                | 166 ++++++++++++++++++-
ironic/drivers/modules/drac/vendor_passthru.py     |   1 +
ironic/drivers/modules/ibmc/utils.py               |  10 +-
ironic/drivers/modules/ilo/management.py           |   9 +-
ironic/drivers/modules/ilo/raid.py                 |   6 +-
ironic/drivers/modules/ipmitool.py                 | 138 +++++++++++++---
ironic/drivers/modules/network/common.py           |   4 +-
ironic/drivers/modules/network/neutron.py          |   6 +-
ironic/drivers/modules/pxe_base.py                 |   3 +-
ironic/drivers/modules/redfish/management.py       |  62 +++++++-
.../unit/api/controllers/v1/test_allocation.py     |   4 +-
.../unit/api/controllers/v1/test_conductor.py      |   4 +-
.../api/controllers/v1/test_deploy_template.py     |   4 +-
.../unit/api/controllers/v1/test_portgroup.py      |   4 +-
.../api/controllers/v1/test_volume_connector.py    |   4 +-
.../unit/api/controllers/v1/test_volume_target.py  |   4 +-
.../unit/drivers/modules/drac/test_management.py   |   4 +-
.../unit/drivers/modules/ilo/test_management.py    |   8 +-
.../unit/drivers/modules/irmc/test_inspect.py      |  17 --
.../unit/drivers/modules/network/test_common.py    |  24 +--
.../unit/drivers/modules/network/test_neutron.py   |  92 ++++++++++-
.../drivers/modules/redfish/test_management.py     | 101 ++++++++++--
.../unit/drivers/modules/test_agent_client.py      |  58 +++++++
.../unit/drivers/modules/test_boot_mode_utils.py   |  11 ++
.../unit/drivers/modules/test_deploy_utils.py      |  31 ++++
.../drivers/modules/xclarity/test_management.py    |   2 +-
.../run.yaml                                       |   2 +-
.../notes/agent-uuid-5d86bc18849acda3.yaml         |   5 +
...ble-device-name-filtering-0adfca7d8ba4cbcc.yaml |   9 ++
...figdrive_use_object_store-93cfd7dc27d90003.yaml |   5 +
...ix-grub2-config-file-name-88e689a982a21684.yaml |   7 +
...andle-older-agent-command-5930124fd03bb327.yaml |   6 +
...uefi-disk-pxe-persistance-0d871825591918b5.yaml |  37 +++++
releasenotes/notes/hash-ring-6ce212ab86c2592d.yaml |   5 +
.../idrac-add-ehba-support-10b90c92b8865364.yaml   |  15 ++
...-idrac-interface-__init__-362696b389c86d5d.yaml |   8 +
.../notes/ipmi-cipher-suite-499097740f7c86ee.yaml  |  18 +++
.../notes/json-rpc-ipv6-host-30eca350f34bc091.yaml |   6 +
.../notes/portgroup-mac-649ed31c3525e4f0.yaml      |   7 +
.../notes/power-off-token-0403e8a054f31125.yaml    |   5 +
.../notes/pxe-boot-mode-9084ccf35e54bbc0.yaml      |   9 ++
...ride-not-present-handling-92e7263617e467c4.yaml |   9 ++
...fter-device-to-supermicro-218e8cb57735c685.yaml |  11 ++
...-redfish-override-enabled-aa51686ed33d3061.yaml |  15 ++
...r-changing-redfish-device-f60ef90ba5675215.yaml |   8 +
.../taskmanager-lazy-load-32a14526c647c2f0.yaml    |   9 ++
.../notes/token-reboot-b48b5981a58a30ae.yaml       |   5 +
...clear-job-id-constant-fix-c69cf96c55364bb3.yaml |   7 +
.../notes/vmedia-fast-track-903076c33c4aca04.yaml  |   9 ++
tools/test-setup.sh                                |   4 +-
zuul.d/ironic-jobs.yaml                            |  48 ++++--
zuul.d/project.yaml                                |  17 +-
108 files changed, 2034 insertions(+), 393 deletions(-)


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

diff --git a/driver-requirements.txt b/driver-requirements.txt
index 2d8c9671c..f47c0b783 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -20 +20 @@ ansible>=2.7
-python-ibmcclient>=0.1.0,<0.2.0
+python-ibmcclient>=0.1.0,!=0.2.1,<0.3.0






More information about the Release-announce mailing list