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