We are pumped to announce the release of: ironic-python-agent 9.8.0: Ironic Python Agent Ramdisk This release is part of the caracal release series. The source is available from: https://opendev.org/openstack/ironic-python-agent Download the package from: https://tarballs.openstack.org/ironic-python-agent/ Please report issues through: https://storyboard.openstack.org/#!/project/openstack/ironic- python-agent For more details, please see below. 9.8.0 ^^^^^ New Features ************ * Introducing basic authentication and configurable authentication strategy support for image and image checksum download processes. This feature introduces 3 new variables that could be set (either via oslo.config or image_info) to select the authentication strategy an provide credentials for HTTP(S) basic authentication. The 3 variables are structured in way that 1 of them 'image_server_auth_strategy' (string) provides the ability to select between authentication strategies by specifying the name of the strategy. Currently the only supported authentication strategy is the 'http-basic' which will make IPA use HTTP(S) basic authentication also known as the 'RFC 7617' standard. The other 2 variables 'image_server_password' and 'image_server_user' provide username and password credentials for image download processes. The 'image_server_password' and 'image_server_user' are not strategy specific and could be reused for any username + password based authentication strategy, but for the moment these 2 variables are only used for the 'http-basic' strategy. 'image_server_basic_auth' not just enables the feature but enforces checks on the values of the 2 related credentials. When the 'http-basic' strategy is enabled for image server download workflow the download logic will make sure to raise an exception in case any of the credentials are None or an empty string. Values coming from 'image_info' are prioritized over values coming from the 'oslo.config' framework and the 2 different credential source can't be mixed. Passing 1 or 2 out of the 3 from and source and the remaining values from an other source will result in a exception. * Adds numa_node id when collecting pci device info during inspection. * The Nvidia Mellanox "clean steps" to facilitate firmware updates of their network devices, are now available as deploy steps and service steps as well. Deprecation Notes ***************** * Removed the partial-implementation of image caching. This method was never used by Ironic, and was a vestige of a feature which was never completed. Image caching, if it were to be implemented today, would not use this method anyway. Bug Fixes ********* * Fixes a failure case where downloads would not be retried when the checksum fails verification. the agent now includes the checksum activity as part of the file download operation, and will automatically retry downloads when the checksum fails in accordance with the existing download retry logic. This is largely in response to what appears to be intermittent transport failures at lower levels which we cannot otherwise detect. * The default timeout value for the agent to lookup itself in an Ironic deployment has been extended to 600 seconds from 300 seconds. This is to provide better stability for Ironic deployments under heavy load which may be unable to service new requests. This is particularly true when the backing database is SQLite for Ironic due to the limited write concurrency of the database. * Fix the logic to detect the right parent device for a given multipath device. * Fixes the error handling of multipathd service startup/discovery process. IPA handles both scenario when the multipathd service is already started and the scenario when the service has not been started and in the second scenario IPA will try to start the service. IPA is not checking whether multipathd is running already and not, it will start the multipathd service even it is already running and expects 0 error code even if the service is already running. It has been noticed that with certain combinations of distros and multipathd versions the error code is not 0 when IPA tries to start multipathd when an instance of multipathd is already running. When the expected return code is not 0 that causes an exception and that will cause the multipath device discovery to terminate prematurely and if the selected root device is a multipath device then IPA won't be able to provision. This fix discards the exception that is caused by the non 0 error code returned by the multipathd startup process. In case there is a genuine issue with the multipath service, that would be caught when the actual multipath device listing command is executed (multipath -ll). * Fixes an issue with rebuilding instances on Software RAID with RAIDed ESP partitions. Changes in ironic-python-agent 9.7.0..9.8.0 ------------------------------------------- 0a29206 Handle different device outputs for multipath 7a52314 fix multipathd error handling release notes 26be55f Test coverage for efi_utils.get_boot_record 3d42298 Remove standby.cache_image support 76ad062 Get numa_node info when collecting pci devices info 13537db improve multipathd error handling dbf3e54 Replace shlex module with helper function cb61a8d Retry on checksum failures 7096178 implement basic-auth support for user-image download process 25704d2 Add additional mock tests to unit tests for read only devices. Change ordering to ensure mock tests work correctly. db9545e Update master for stable/2023.2 f86975d Add mlnx deploy_step entry to enable deploy time firmware 4efcce5 Extend the lookup timeout to 600 seconds 286d667 Conditional creation of RAIDed ESP for UEFI Software RAID Diffstat (except docs and test files) ------------------------------------- ironic_python_agent/config.py | 27 +- ironic_python_agent/extensions/standby.py | 163 ++++++++--- ironic_python_agent/hardware.py | 23 +- ironic_python_agent/hardware_managers/mlnx.py | 5 +- ironic_python_agent/inspector.py | 14 +- ironic_python_agent/partition_utils.py | 132 ++++----- ironic_python_agent/raid_utils.py | 112 ++++--- ...uth-for-user-image-server-150835e7567444da.yaml | 27 ++ .../cache-image-removal-3b5a80a6038a320b.yaml | 5 + ...dering-download-completed-91cca9fef34d8cf5.yaml | 11 + ...extend-ipa-lookup-timeout-05ee5b1372792dbe.yaml | 9 + ...x-multipath-parent-device-e85afad63159250c.yaml | 5 + .../notes/get_numa_node-eeab34a92739b6f6.yaml | 3 + ...-now-available-for-deploy-4a4226ffaae888f3.yaml | 6 + ...rror_handling_improvement-1669d0de4bfdbe95.yaml | 19 ++ .../rebuild_on_esp_raid-33f359bdf5ccaa09.yaml | 5 + releasenotes/source/2023.2.rst | 6 + releasenotes/source/index.rst | 1 + 26 files changed, 952 insertions(+), 363 deletions(-)