We are excited to announce the release of: ironic 19.0.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. 19.0.0 ^^^^^^ New Features ************ * Adds support for running "management.clear_job_queue", "management.reset_idrac" and "management.known_good_state" methods as verify steps on iDRAC hardware type, for both "idrac-wsman" and "idrac-redfish" interfaces. In order to use this feature, "[conductor]verify_step_priority_override" needs to be used to set non-zero step priorities for the desired verify steps. * Adds support for verify steps - a mechanism for running optional, actions pre-defined in the driver while the node is in transition from enroll to managable state, prior to inspection. * Adds a new executable "ironic" that starts both API and conductor in the same process. Calls between the API and conductor instances in the same process are not routed through the RPC. * The "ipxe" boot interface is now enabled by default. * Adds a new configuration option "[pxe]ipxe_fallback_script" which allows iPXE boot to fall back to e.g. ironic-inspector iPXE script. * ISO images provided via "instance_info/boot_iso" or "instance_info/deploy_iso" are now cached in a similar way to normal instance images. Set "[deploy]iso_master_path" to an empty string to disable. * All image caches are now cleaned up periodically, not only when used. Set "[conductor]cache_clean_up_interval" to tune the interval or disable. * The "redfish" hardware type is now enabled by default along with all its supported hardware interfaces. * Adds a new "none" RPC transport that can be used together with the combined "ironic" executable to completely disable the RPC bus. * Adds new configuration option: "[snmp]power_action_delay" This option will add a delay in seconds before a snmp power on and after power off. Which may be needed with some PDUs as they may not honor toggling a specific power port in rapid succession without a delay. This option may be useful if the attached physical machine has a substantial power supply to hold it over in the event of a brownout. * The default deployment boot mode is *now* UEFI. Legacy BIOS is still supported, however operators who require BIOS nodes will need to set their nodes, or deployment, appropriately. Upgrade Notes ************* * The "ipxe" boot interface is now enabled and will have priority over "pxe" by default. If you rely on the default value of the "enabled_boot_interfaces" option to not contain "ipxe", you need to set it explicitly. * The default boot mode has been changed and is *now* UEFI. Operators who were explicitly relying upon BIOS based deployments in the past, may wish to consider setting an explicit node level override for the node to only utilize BIOS mode. This can be configured at a conductor level with the "[deploy]default_boot_mode". Options to set this at a node level can be found in the Ironic Installation guide - Advanced features (https://docs.openstack.org/ironic/latest/install/advanced.html #boot-mode-support) documentation. Bug Fixes ********* * Fixes a bug in the anaconda deploy interface where the "ks_options" key was not found when rendering the default kickstart template. * Fixes an issue where PXEAnacondaDeploy interface's deploy() method did not return states.DEPLOYWAIT so the instance went straight to "active" instead of "wait call-back". * Fixes an issue where the anaconda deploy interface mistakenly expected "squashfs_id" instead of "stage2_id" property on the image. * Fixes the heartbeat mechanism in the default kickstart template ks.cfg.template as the heartbeat API only accepts "POST" and expects a mandatory "callback_url" parameter. * Fixes handling of tarball images in anaconda deploy interface. Allows user specified file extensions to be appended to the disk image symlink. Users can now set the file extensions by setting the "disk_file_extension" property on the OS image. This enables users to deploy tarballs with anaconda deploy interface. * Fixes an issue where automated cleaning was not supported when anaconda deploy interface is used. * Fixes "idrac-wsman" management interface "set_boot_device" method that would fail deployment when there are existing jobs present with the error: "Failed to change power state to ''power on'' by ''rebooting''. Error: DRAC operation failed. Reason: Unfinished config jobs found: <list of existing jobs>. Make sure they are completed before retrying." Now there can be non-BIOS jobs present during deployment. This will still fail for cases when there are BIOS jobs present. In such cases it's advised to use the "idrac-redfish" interface that does not have this limitation when setting boot device. * Fixes "File name too long" in the image caching code when a URL contains a long query string. * Fixes an issue with a node's instance_info interface override caused when Ironic uses the interface attribute directly. Does so by adding a "get_interface" method to a node, and updating the Ironic code to use it where needed. * Fixes an issue where the port value is not converted to int type when nodes are managed by the "irmc" hardware type. * Fixes an issue where cleaning continuously repeats due to the value of "fgi_status" not being updated correctly when obtaining the RAID configuration status of nodes managed by the "irmc" hardware type. * When configuring RAID on iRMC machines through ironic, polling is not set when RAID is created. After creating the RAID, set up polling will notify ironic to wait for the RAID configuration to complete before proceeding to the next step instead of check IPA. * Fixes connection caching issues with Redfish BMCs where AccessErrors were previously not disqualifying the cached connection from being re-used. Ironic will now explicitly open a new connection instead of using the previous connection in the cache. Under normal circumstances, the "sushy" redfish library would detect and refresh sessions, however a prior case exists where it may not detect a failure and contain cached session credential data which is ultimately invalid, blocking future access to the BMC via Redfish until the cache entry expired or the "ironic-conductor" service was restarted. For more information please see story 2009719 (https://storyboard.openstack.org/#!/story/2009719). * Removing *?filename=file.iso* suffix from the virtual media image URL when the image is a regular file due to incompatibility with SuperMicro X12 machines which do not accept special characters such as *=* or *?* in the URL. Historically, this suffix was being added to improve compatibility with those BMCs which require *.iso* suffix in the URL while using swift as the image store. Old behaviour will remain for swift backed images. * Fixes restricted allocation creation for old policy defaults. This involves a check that ensures that the user is not trying to create an allocation with an owner other than themselves. This check is updated to also see if the user is actually trying to set an allocation owner. Other Notes *********** * The agent deploy and cleaning code no longer uses an RPC call to the same conductor when proceeding to the next deploy or clean step. Changes in ironic 18.2.0..19.0.0 -------------------------------- cdc3b9538 CI: Lower test VM memory by 200MB b37ee7c91 devstack: provide a default for OS_CLOUD 019ed2d7b Add "none" RPC transport that disables the RPC bus 9a6f2d101 All-in-one Ironic service with a local RPC bus 80fccd80c Trivial: minor follow-up to redfish fix 5f35896bf Prepare for bugfix release 18d016f79 Avoid RPC notify_conductor_resume_{deploy,clean} in agent_base 3e225d2cd Trivial: log current state when continuing cleaning f97e9340e Add missing mode setting on pxe created directories f85f64913 Install isolinux on devstack e51c6b930 Fix markup syntax d5eb6ee56 Refactor driver_internal_info updates to methods 1439af27b Remove redfish cache entry upon errors 3f990beb9 Refactor common configuration bits from service commands 44ac50779 Remove isfile check from place_loaders_for_boot 7ca27601d Remove default option from create iso image 028448afe Add a unit test job with Sushy from source 2ddd8ef2c Do not assume sushy constants are strings - part 2 ccb46fefd Updating yoga tested python versions in classifier fdc6424de Clarify driver load error message 9b4631ae0 Use test_with_retry to get the tap device name 350c2f7a5 CI: Fix devstack plugin with RBAC changes 47b98d44c Use default test dir a249c025d Fix some of the SRBAC tests dbc24610d Add an option to create inspector-compatible boot.ipxe 545a222a0 Reduce the number of small functions in pxe_utils 93fd147b6 Stop relying on explicit values of Redfish constants fc24275ba [iRMC] Convert the type of irmc_port to int 815705bc7 Fix RedfishManagement.get_mac_addresses and related functions 16aad76a6 Create node get_interface method 5ab94f37f Enable iPXE boot interface by default 76e99a30f Enable Redfish by default 323344e07 [Trivial] Clarify conditions under which power recovery is attempted 4f0893804 Avoid handling a deploy failure twice b1d08ae80 Fix idrac-wsman deploy with existing non-BIOS jobs 4bb7e5373 Document commands to leave WAIT states 287425e15 Add description to the mod_wsgi part b2ef1051d Add platform:rpm shim, grub packages to bindep df99dea00 Fix various issues in the anaconda deploy interface 0ca0383ba Trivial: do not stop None rpcserver 42b03703a Fix restricted allocation creation for old policy defaults 2ff7f553c changed code for memory burin vm-bytes, 75 to 75% dc3fefe6a Add a description of stopping ironic-api.service c1a067c14 Add Xena versions to release notes 8e8c1b087 There is no aim, we do deploy/manage baremetal. 7d85694fd Do not use any parts of image URL in temporary file names beb96870f Remove redundant node_periodic tests 567aa056a node_periodics: encapsulate the interface class check cf1b42ea3 Add a helper for node-based periodics 7f9badb54 Add and document high-level helpers for async steps f205e7d2b Remove debian packages file for devstack 371313214 SRBAC - Prepare for additional services 044091c14 Retool devstack plugin to use pxe loaders configuration e05f74c62 Do not append filename parameter to image URL when using local file e8382db6b Update the list of supported database filters c7a6c69f1 Follow up to Add support for verify steps 330693306 add snmp power action delay dec673784 Demote three warning messages 807b93456 Make iDRAC management steps verify steps 2b55c8d38 CI: Change CI ipxe file to snponly 493b4f0ca Yoga: Change default boot mode to uefi b385d9ae5 Add support for verify steps 3c96af2d2 Fix iDRAC configuration mold docs 535c28b67 Document recovery from power faults c1e355011 Remove legacy rpm install list and use bindep c52e685e5 Update release doc 61fb3eee5 PXE: avoid trailing dots in exception messages a547cbcb0 require_exclusive_lock: log traceback that lead to an error db4b4c08d Clean up caches periodically eb8657f0d Update iDRAC doc for idrac-redfish RAID 4775fb3d9 Devstack: don't scan /opt, /etc looking for isolinux b617e4346 [iRMC] Set polling after RAID is built 8a5c672fa [iRMC] Avoid repeatedly resuming clean after creating raid configuration 816dbfdad Add Python3 yoga unit tests 016c1f860 Update master for stable/xena 93e57fd72 Use an ImageCache for provided boot/deploy ISO images c80d2f295 Refactor: move base_iso handling from create_boot_iso Diffstat (except docs and test files) ------------------------------------- api-ref/source/samples/api-root-response.json | 2 +- bindep.txt | 2 + devstack/common_settings | 4 +- devstack/files/bindep.txt | 98 +++++ devstack/files/debs/ironic | 41 --- devstack/files/rpms/ironic | 25 -- devstack/lib/ironic | 195 ++++++---- .../include/configure-ironic-api-mod_wsgi.inc | 19 + driver-requirements.txt | 3 - ironic/api/controllers/root.py | 4 +- ironic/api/controllers/v1/allocation.py | 6 +- ironic/api/wsgi.py | 3 +- ironic/cmd/api.py | 19 +- ironic/cmd/conductor.py | 19 +- ironic/cmd/dbsync.py | 2 +- ironic/cmd/singleprocess.py | 52 +++ ironic/common/driver_factory.py | 4 +- ironic/common/exception.py | 7 +- ironic/common/images.py | 25 +- ironic/common/neutron.py | 2 +- ironic/common/pxe_utils.py | 135 +++---- ironic/common/rpc.py | 10 + ironic/common/rpc_service.py | 22 +- ironic/common/service.py | 42 ++- ironic/conductor/cleaning.py | 22 +- ironic/conductor/deployments.py | 63 ++-- ironic/conductor/manager.py | 204 +++++------ ironic/conductor/periodics.py | 164 +++++++++ ironic/conductor/rpcapi.py | 210 +++++++---- ironic/conductor/steps.py | 90 ++++- ironic/conductor/task_manager.py | 13 + ironic/conductor/utils.py | 145 ++++---- ironic/conductor/verify.py | 25 ++ ironic/conf/conductor.py | 14 + ironic/conf/default.py | 19 +- ironic/conf/deploy.py | 26 +- ironic/conf/pxe.py | 11 +- ironic/conf/snmp.py | 10 + ironic/db/api.py | 24 +- ironic/db/sqlalchemy/api.py | 2 + ironic/drivers/base.py | 89 ++++- ironic/drivers/modules/agent.py | 10 +- ironic/drivers/modules/agent_base.py | 68 ++-- ironic/drivers/modules/ansible/deploy.py | 6 +- ironic/drivers/modules/boot.ipxe | 10 + ironic/drivers/modules/boot_mode_utils.py | 18 +- ironic/drivers/modules/deploy_utils.py | 52 ++- ironic/drivers/modules/drac/bios.py | 62 +--- ironic/drivers/modules/drac/inspect.py | 4 +- ironic/drivers/modules/drac/management.py | 67 ++-- ironic/drivers/modules/drac/raid.py | 96 ++--- ironic/drivers/modules/ilo/bios.py | 8 +- ironic/drivers/modules/ilo/inspect.py | 3 +- ironic/drivers/modules/ilo/management.py | 16 +- ironic/drivers/modules/ilo/raid.py | 4 +- ironic/drivers/modules/image_cache.py | 9 +- ironic/drivers/modules/image_utils.py | 113 +++--- ironic/drivers/modules/inspect_utils.py | 16 +- ironic/drivers/modules/inspector.py | 30 +- ironic/drivers/modules/irmc/common.py | 3 + ironic/drivers/modules/irmc/raid.py | 137 ++++--- ironic/drivers/modules/ks.cfg.template | 12 +- ironic/drivers/modules/pxe.py | 8 +- ironic/drivers/modules/pxe_base.py | 46 +-- ironic/drivers/modules/ramdisk.py | 3 +- ironic/drivers/modules/redfish/bios.py | 6 +- ironic/drivers/modules/redfish/boot.py | 4 +- ironic/drivers/modules/redfish/inspect.py | 3 +- ironic/drivers/modules/redfish/management.py | 150 +++----- ironic/drivers/modules/redfish/raid.py | 125 ++----- ironic/drivers/modules/redfish/utils.py | 37 +- ironic/drivers/modules/snmp.py | 2 + ironic/objects/node.py | 44 +++ .../unit/api/controllers/v1/test_allocation.py | 37 +- .../unit/drivers/modules/ansible/test_deploy.py | 1 + .../unit/drivers/modules/drac/test_inspect.py | 2 +- .../unit/drivers/modules/drac/test_management.py | 14 +- .../drivers/modules/irmc/test_periodic_task.py | 59 ++- .../unit/drivers/modules/redfish/test_inspect.py | 15 +- .../drivers/modules/redfish/test_management.py | 178 ++------- .../unit/drivers/modules/redfish/test_raid.py | 4 +- .../unit/drivers/modules/redfish/test_utils.py | 72 +++- .../unit/drivers/modules/test_boot_mode_utils.py | 15 +- .../unit/drivers/modules/test_deploy_utils.py | 53 ++- .../unit/drivers/modules/test_inspect_utils.py | 13 +- .../unit/drivers/third_party_driver_mock_specs.py | 67 ---- lower-constraints.txt | 3 +- .../add-idrac-verify-steps-50c1a0f0fe299922.yaml | 9 + .../add-verify-steps-support-2b34a74e86f89cb4.yaml | 6 + releasenotes/notes/allinone-190ae91884d81154.yaml | 6 + ...anaconda-deploy-interface-bfa2cfca22b04680.yaml | 25 ++ ...th-existing-non-bios-jobs-78aa2195d0c3016f.yaml | 16 + .../notes/image-cache-size-28a9072901b98edf.yaml | 5 + ...fo-interface-override-fix-043df41199529892.yaml | 7 + .../notes/ipxe-default-628380290fbdbab6.yaml | 10 + .../notes/ipxe-fallback-a10c8ce422caa429.yaml | 5 + ...rt-the-value-of-irmc-port-63c90450b5a77203.yaml | 5 + ...repeatedly-resuming-clean-020f0dfc2e30d7bc.yaml | 6 + ...-polling-after-raid-build-5f78ee3e93a92553.yaml | 8 + releasenotes/notes/iso-cache-5330b63c9e3a02db.yaml | 7 + .../notes/no-deploy-rpc-dec8ee1d0326d1ad.yaml | 5 + .../notes/periodic-clean-up-29c33d2516bf16ec.yaml | 5 + ...on-cache-pool-accesserror-743e39a2f017b990.yaml | 13 + .../notes/redfish-default-c7b2268606172bba.yaml | 5 + ...ame-param-from-vmedia-url-bf4773ede44f2206.yaml | 10 + ...d-allocation-creation-fix-a70dfcbcb9996602.yaml | 7 + releasenotes/notes/rpc-none-f05dac657eef4b66.yaml | 5 + ...mp_add_power_action_delay-eba6c3a9cbd6ada3.yaml | 8 + .../uefi-is-now-the-default-562b0d68adc59008.yaml | 16 + releasenotes/source/index.rst | 1 + releasenotes/source/xena.rst | 6 + requirements.txt | 3 +- setup.cfg | 4 +- .../benchmark/do_not_run_create_benchmark_data.py | 2 +- tools/benchmark/generate-statistics.py | 2 +- tox.ini | 1 - zuul.d/ironic-jobs.yaml | 64 +++- zuul.d/project.yaml | 6 +- 156 files changed, 4169 insertions(+), 2231 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index d5285a3df..ffcb3e2ab 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -13,3 +12,0 @@ python-xclarityclient>=0.1.6 -# The Redfish hardware type uses the Sushy library -sushy>=3.10.0 - diff --git a/requirements.txt b/requirements.txt index 9c4e1dc47..ea11b920d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16 +16 @@ pytz>=2013.6 # MIT -stevedore>=1.20.0 # Apache-2.0 +stevedore>=1.29.0 # Apache-2.0 @@ -45,0 +46 @@ openstacksdk>=0.48.0 # Apache-2.0 +sushy>=3.10.0
participants (1)
-
no-reply@openstack.org