We are thrilled to announce the release of: ironic 17.0.0: OpenStack Bare Metal Provisioning This release is part of the wallaby 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. 17.0.0 ^^^^^^ Prelude ******* The Ironic community is proud to release Ironic 17.0! Where if it were developer years instead of major versions, we would all be very afraid since it already has access to the car keys. This release of Ironic includes numerous advancements which extend an operator's ability to customize and further extend their deployment to meet their needs. * Redfish enhancements including Out of Band RAID configuration management and automatic setting of Secure Boot on nodes deployed using "redfish". * Deployment enhancements including UEFI Partition Image handling, per-instance per-deployments of default interface selections, user requestable "deploy_steps" at deploy time, IPA file injection, and support for setting a node's boot mode via "instance_info". * Support for "system" scoped Role Based Access controls *and* "project" scoped access is available by default for associated nodes when the "node" "owner" or "lessee" fields are set. This effort alone added over 1,500 new unit tests. * Operator friendly fixes such as memory over-consumption guard for memory intensive tasks, vendor hardware aware handling to help address issues such as different settings being needed to invoke UEFI, and "lazy" loading of database attributes to reduce the overall database load. Along with all of this massive amount of work, a number of bugs were fixed while we were along the road trip of this development cycle. We sincerely hope you enjoy it! New Features ************ * It is now possible to configure a priority for both the delete and create configuration RAID cleaning steps which are disabled by default. * Adds "import_configuration", "export_configuration" and "import_export_configuration" steps to "idrac-redfish" management interface. These steps allow to use configuration from another system as template and replicate that configuration to other, similarly capable, systems. Currently, this feature is experimental. * Adds support for passing a "kernel_append_param" setting to the "ilo-virtual-media" and "ilo-uefi-https" boot interfaces using the configuration parameter "[ilo]/kernel_append_param" with the "ilo" and "ilo5" hardware types. * Adds support for the discovery of PXE Enabled NICs using the "idrac- redfish" inspect interface with the "idrac" hardware type. With this feature, a port's "pxe_enabled" status will be recorded on the bare metal port. * Adds support to manage certificates to the "ilo5" hardware type. A new optional boolean driver_info parameter "ilo_add_certificates" is introduced which can be used by the user to request addition of certificates to the iLO with "ilo-uefi-https" boot interface. * Adds the "[deploy]enable_nvme_secure_erase" option which allows the operator to enable NVMe format option for all nodes being managed by the conductor. * Add "anaconda" deploy interface to Ironic. This driver will deploy the OS using anaconda installer and kickstart file instead of IPA. To support this feature a new configuration group "anaconda" is added to Ironic configuration file along with "default_ks_template" configuration option. The deploy interface uses heartbeat API to communicate. The kickstart template must include %pre %post %onerror and %traceback sections that should send status of the deployment back to Ironic API using heartbeats. An example of such calls to hearbeat API can be found in the default kickstart template. To enable anaconda to send status back to Ironic API via heartbeat "agent_status" and "agent_status_message" are added to the heartbeat API. Use of these new parameters require API microversion 1.72 or greater. * Adds support for fast-tracking to "ansible" deploy interface. * Allows providing a list of IPMI cipher suite versions via the new configuration option "[ipmi]/cipher_suite_versions". The configuration is only used when "ipmi_cipher_suite" is not set in "driver_info". * Adds a new "disable_ramdisk" parameter to the manual cleaning API. If set to "true", IPA won't get booted for cleaning. Only steps explicitly marked as compatible can be executed this way. The parameter is available in the API version 1.70. * Provides operator ability to override URL settings required for provisioning/cleaning in the event of virtual media based deployment. These scenarios tend to require more delineation than more traditional deployments as they often have a different environmental security requirements. Set these two new configuration options using an IP address that is available to these nodes (both the ramdisk and the BMCs): [deploy] external_http_url = <routable URL of the HTTP server> external_callback_url = <routable URL of bare metal API> * Adds new GPU dynamic capabilities to "ilo" drivers inspection. gpu_<vendor>_count: Integer gpu_<gpu_device_name>_count: Integer gpu_<gpu_device_name>: Boolean * Enhance "idrac-wsman" inspect hardware interface to report an additional GPU device namely GV100GL [Tesla V100 PCIe 16GB]. With this enhancement, following GPU devices are reported * TU104GL [Tesla T4] * GV100GL [Tesla V100 PCIe 16GB] * Adds basic support for managing RAID configuration via the Redfish out-of-band (OOB) management protocol to the "idrac" hardware type by adding new interface named "idrac-redfish". For this iDRAC firmware greater than 4.40.00.00 is required. The "idrac" hardware type now supports "idrac-wsman", "idrac", "idrac-redfish", and "no- raid" interfaces in given priority order. * Allows node "*_interface" values to be overridden by values in a node "instance_info" field. This gives non-administrative users a temporary method of setting interface values. * The network data schema is now configurable via the new configuration options "[api]network_data_schema". * Adds capability to use "project" scoped requests in concert with "system" scoped requests for a composite Role Based Access Control (RBAC) model. As Ironic is mainly an administrative service, this capability has only been extended to API endpoints which are not purely administrative in nature. This consists of the following API endpoints: nodes, ports, portgroups, volume connectors, volume targets, and allocations. * Project "scoped" requests for baremetal allocations, will automatically record the "project_id" of the requestor as the "owner" of the node. * Adds support for automatic creation of ports for "redfish" enabled bare metal nodes using prior to ironic-inspector introspection. This feature is a part of "redfish" management interface. * Supplying configuration to the agent using the "redfish-virtual- media" boot interface now works through USB instead of floppy by default. Modern hardware (and even virtual machines) has limited support for floppies. * Adds support for pre-built ISO images to the "redfish-virtual- media" boot interface and its derivatives. * Adds a "redfish" native "raid_interface" to the "redfish" hardware type. See story 2003514 (https://storyboard.openstack.org/#!/story/2003514) for details. Note that common RAID cases have been tested, but cases that are more complex or rely on vendor-specific implementation details may not work as desired due to capability limitations. * Adds support for managing an iDRAC -- reset, clear job queue, and reset to known good state -- via the Redfish out-of-band (OOB) management protocol to the "idrac" hardware type. This is offered by new "idrac-redfish" management hardware interface implementation cleaning steps: "reset_idrac", "clear_job_queue", and "known_good_state". "known_good_state" both resets an iDRAC and clears its job queue. * Adds "[conductor]clean_step_priority_override" configuration parameter which allows the operator to define a custom order in which the cleaning steps are to run. * The Baremetal API, provided by the "ironic-api" process, now supports use of "system" scoped "keystone" authentication for the following endpoints: nodes, ports, portgroups, chassis, drivers, driver vendor passthru, volume targets, volume connectors, conductors, allocations, events, deploy templates * Introduces lazy-loading of ports, portgroups, volume connections and volume targets in task manager. 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. * Adds support for multipath volumes. If the volume properties have multiple portals, then it will generate multiple iscsi urls and append them together for use in the generated ipxe file. Known Issues ************ * The addition of both "project" and "system" scoped Role Based Access controls does add additional database queries when linked resources are accessed. Example, when attempting to access a "port" or "portgroup", the associated node needs to be checked as this helps govern overall object access to the object for "project" scoped requests. This does not impact "system" scoped requests. Operators who adopt project scoped access may find it necessary to verify or add additional database indexes in relation to the node "uuid" column as well as "node_id" field in any table which may recieve heavy project query scope activity. The "ironic" project anticipates that this will be a future work item of the project to help improve database performance. Upgrade Notes ************* * The "ilo-virtual-media" and "ilo-uefi-https" boot interfaces does not use "[pxe]pxe_append_params" anymore. To pass kernel parameters use new configuration parameter "[ilo]/kernel_append_param". * Legacy policy rules have been deprecated. Operators are advised to review and update any custom policy files in use. Please see Secure Role Based Access Controls for more information. * The functionality of using a port.extra "vif_port_id" value to signal and control a VIF attachment has been removed to support changing the permission model and access control policy. Use of "vif_port_id" outside of the VIF attachment/detachment workflow has been deprecated since the Ocata development cycle. * Deprecated policy rules are not expressed via a default policy file generation from the source code. The generated default policy file indicates the new default policies with notes on the deprecation to which "oslo.policy" falls back to, until the "[oslo_policy]enforce_scope" and "[oslo_policy]enforce_new_defaults" have been set to "True". Please see the Victoria policy configuration (https://docs.openstack.org/ironic/victoria/configura tion/policy.html) documentation to reference prior policy configuration. * Operators are encouraged to move to "system" scope based authentication by setting "[oslo_policy]enforce_scope" and "[oslo_policy]enforce_new_defaults". This requires a migration from using an "admin project" with the "baremetal_admin" and "baremetal_observer". System wide administrators using "system" scoped "admin" and "reader" accounts superceed the deprecated model. Deprecation Notes ***************** * Deprecates ATA specific "agent_continue_if_ata_erase_failed" agent's option which is replaced with "agent_continue_if_secure_erase_failed". The new option supports both ATA and NVMe secure erase. In order to ensure a smooth migration to the new configuration option, the operators need to upgrade Ironic Python Agent image to Wallaby release prior to upgrading Ironic Conductor to Xena. * Pre-RBAC support rules have been deprecated. These consist of: * admin_api * is_member * is_observer * is_node_owner * is_node_lessee * is_allocation_owner These rules will likely be removed in the Xena development cycle. Operators are advised to review any custom policy rules for these rules and move to the Secure Role Based Access Controls (https://docs.openstack.org/ironic/latest/admin/secure-rbac.html) model. * The node's "driver_info" parameter "config_via_floppy" of the "redfish-virtual-media" boot interface has been renamed to "config_via_removable". The old alias is deprecated. * Use of an "admin project" with ironic is deprecated. With this the custom roles, "baremetal_admin" and "baremetal_observer" are also deprecated. Please migrate to using a "system" scoped account with the "admin" and "reader" roles, respectively. Security Issues *************** * Ability to create an allocation has been restricted by a new policy rule "baremetal::allocation::create_pre_rbac" which prevents creation of allocations by any project administrator when operating with the new Role Based Access Control model. The use and enforcement of this rule is disabled when "[oslo_policy]enforce_new_defaults" is set which also makes the population of a "owner" field for allocations to become automatically populated. Most deployments should not encounter any issues with this security change, and the policy rule will be removed when support for the legacy "baremetal_admin" custom role has been removed. * Fixes an issue where ironic was not properly labeling dynamicly built virtual media ramdisks with the signifier flag so the ramdisk understands it was booted from virtual media. Bug Fixes ********* * When using the Neutron DHCP driver, Ironic would only use the first fixed IP address to determine what IP versions are use on the port. Now, it checks for all the IP addresses and adds DHCP options for all IP versions. * Rejects "configdrive" that is not a JSON, a URL or a base64 string. Previously invalid JSON supplied to ironicclient could end up accepted as a configdrive, which would cause a failure much later. * 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 the missing "boot_method" ramdisk parameter for dynamicly build virtual media payloads. This value must be set to "vmedia" for the ramdisk running on virtual media to understand it is executing from virtual media. This was fixed for cases where it is used with the "redfish-virtual-media" based boot interfaces as well as the "ilo-virtual-media" boot interface, which is where dynamic virtual media deployment/cleaning ramdisk generation is supported. * Fixes "idrac-wsman" BIOS "apply_configuration" and "factory_reset" clean and deploy steps to fail correctly in case of error when checking completed jobs. Before the fix when BIOS job failed, then node clean or deploy failed with timeout instead of actual error in cleaning or deploying step. * 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. Other Notes *********** * Clean steps can now be marked with "requires_ramdisk=False" to make them compatible with the new "disable_ramdisk" argument of the manual cleaning API. * The API version of the Bare Metal API provided by the "ironic-api" service has been incremented to "1.71" to signify that the API supports System and Project scoped Role Based Access Controls, which is purely informational in nature, as the version itself cannot be used to change the API behavior for access controls. In excess of 1500 unit tests were added as part of the effort to implement Role Based Access Controls to help ensure the effort did not break the API behavior. Changes in ironic 16.2.0..17.0.0 -------------------------------- 288b8fd88 Add agent_status and agent_status_message params to heartbeat 8bd25a988 Restrict syncing of boot mode to Supermicro 601f6d51f Add iDRAC management via Redfish to idrac HW type 1523ae1ce Generic way to configure clean step priorites 12d1dd530 Fix configuration generation for ironic doc pages 4afbf7479 Fix Bandit check 4bd1c40bd Always add 'boot_method' vmedia in redfish/ilo vmedia boot 457d0cd70 Add import, export configuration to idrac-redfish d913ef639 Move configuration mold utilities fc457a49d [doc] Warning about out-of-sync ESPs for UEFI software RAID 86c34114d [doc] Update available software RAID levels. b029fb377 Automaticaly set cipher suite 9da8f418e Fix webserver_verify_ca config documentation 24be3c228 Allow using per-site network_data schema 15e20fe29 Add configuration mold storage 7d82d7f3d DRAC : idrac-redfish inspect updates pxe port 8f474bfe5 update grub2 file name 918f3c33c redfish boot_interfaces, ipmitool -> pxe 1abff50db redfish-virtual-media: allow USB devices instead of floppies 133dac255 Allow overriding an external URL for virtual media 83ce7c426 Fix idrac-wsman BIOS step async error handling f96ce6981 Follow up of Use OOB inspection to fetch MACs for IB inspection 9d3de26fb Validate the kickstart template and file before use 880bd639f Add anaconda support in the pxe boot driver 8cfde7447 Allow running RAID cleaning steps with in-band cleaning d55929fc7 Support pre-built deploy/rescue ISO in Redfish 80d4a0c51 Version 17.0 mapping/doc updates 8e79fafc8 Add prelude for Ironic 17.0. 752568eec Add known iDRAC virtual media boot issue 25efd0c8d Update idrac-redfish RAID release note f4ff15938 Remove extra/vif_port_id 67394c3cd Revise release notes for 17.0 release 9f221a7d4 Allow unsupported redfish set_boot_mode 26040d456 Add anaconda configuration and template 952695be3 Add Redfish RAID interface to idrac HW type e6863c6b7 Follow-up to RBAC allocation changes e5b391c32 Increment API version for Secure RBAC 9220f97ed Add runtime gpu capabilities to ilo inspection 426353c3f Deprecate legacy policies, update project scoped docs d6dd05ab1 Enable Reuse of Zuul Job in 3rd Party CI Environment 7552c489e Add iRMC Driver Support to DevStack Code 30a85bd0c API to force manual cleaning without booting IPA 642bc983b Allow ansible deploys to be fast-tracked 7ae3919dc Trivial: add a missing argument to an exception 88673f1e9 Allocation support for project scoped RBAC ebaa35993 Mark multinode non-voting due to high failure rate d8a0b0c27 Don't try to use attempts=None with tenacity dccff98a3 [doc] Add initial system-scoped text to secure-rbac f2e8c031c Switch to JSON RPC from ironic-lib 5c36615a9 Update dev quickstart docs 5f85a8966 Update Redfish RAID release note 6ba1ecad1 Allow users to configure priority for {create,delete}_configuration 342878ca6 Add CentOS7 for supported ramdisk for dhcpless deploy 7e1c08c40 RBAC Follow-up: Review follow-up. 0b920d2a0 Enforce autospec in test_console_utils 49fcbd491 Rework the standalone guide 472ffca26 docs: move overriding interfaces to the standalone documentation 5360c786a Update iDRAC doc with idrac-redfish-virtual-media 383afc2d8 Update iDRAC doc on Redfish vendor passthru interface a165fe326 Allow instance_info to override node interface 0354940e4 Allow support for multipath volumes 94fae9ac2 Enforce autospec in test_portgroup a8b5137db Revert "Update iDRAC doc with missing interfaces" 7f6b24c70 Follow-up on project scoped trait tests 5dff46a70 Project scope driver vendor pass-through e870bd34d Volume targets/connectors Project Scoped RBAC 00eb6dcfa Enforce autospec in test_port b0696ea0a Enforce autospec in test_volume_connector b4cae9b82 Enforce autospec in test_volume_target d7f4da237 Add Redfish RAID management to Ironic e9dfe5dda Port/Portgroup project scoped access f1641468b Project Scoping Node endpoint aa42582ac Add support for using NVMe specific cleaning 807a6d2be Prepare to use tinycore 12 for tinyipa 82cab603b Lazy-load node details from the DB 755918343 Adds config parameter kernel_append_param for iLO 20acfc26e secure-rbac - minor follow-up for project scoped tests 367cdcd66 Add both IPv4 and IPv6 DHCP options if interface has both 61c5b3fd2 [Trivial] Fix testing of volume connector exception decd72334 Switch iLO and iRMC to the new secure boot framework 7abac806a devstack: a safeguard for disabled tempurls 5533077c7 Enable swift temporary URLs in grenade and provide a good error message f541d517c [trivial] Remove default parameter from execute df69b7d14 Initial Project scoped tests eabb72b6b RBAC System Scope: observer -> reader 27a889854 Implement system scoped RBAC for the deploy templates APIs 046e99c0b Implement system scoped RBAC for the event APIs d5b5356d6 [trivial] fix typos in conductor f18fec232 Enforce autospec in test_driver 20a4f4aad Review feedback follow-up on Node System Scoped RBAC d146064cb Implement system scoped RBAC for the allocation APIs e1e35e874 Implement system scoped RBAC for conductor APIs 5ed58df55 Implement system scoped RBAC for volume APIs 69b28ca99 Implement system scoped RBAC for utility APIs ff883486e Implement system scoped RBAC for node and driver passthru 9e773d96c Implement system scoped RBAC for baremetal drivers eb8d7d6a8 Implement system scoped RBAC for chassis 4fe64c970 Implement system scoped RBAC for port groups 34edc6444 Implement "system" scoped RBAC for ports b0d8d1406 Implement "system" scoped RBAC for the node endpoint b66471e39 Add support for using NVMe specific cleaning 8e458d89b Trivial: fix incorrect ordering in iLO tests 52c01f87c Enforce autospec in test_notification_utils module 6ed75bc6c Enforce autospec in test_node 16e3c6662 Correct release mappings for 16.2 73bdebd12 Fix broken configdrive_use_object_store 6e09a008a Replace pysendfile with os.sendfile cf5deb77a Validate configdrive string format 437cae984 Enforce autospec in test_chassis b0607a266 Replace retrying with tenacity 414f0ca24 Switch multinode jobs to 512M RAM bb30f9945 Add some tuning documentation 7c8d1e1e7 Move the IPv6 job to the experimental pipeline e3ccb9ec2 Address some rbac review feedback in merged patches 189b5e40c devstack: support installing ironic-lib from source in DIB IPA e36d7af09 Report the slowest tests after a test run 05df3d7aa Use OOB inspection to fetch MACs for IB inspection 7d4c1214f Add support to manage certificates in iLO 94ba2641e Update oslo.policy requirement to version 3.6.2 1aea2040d More GPU support in idrac-wsman inspect interface fb3f6726d [doc-only] Add BFV basic flow and networking context Diffstat (except docs and test files) ------------------------------------- .../source/baremetal-api-v1-node-management.inc | 5 + api-ref/source/parameters.yaml | 8 + devstack/lib/ironic | 20 + driver-requirements.txt | 6 +- ironic/api/controllers/v1/allocation.py | 141 +- ironic/api/controllers/v1/bios.py | 8 +- ironic/api/controllers/v1/node.py | 284 ++- ironic/api/controllers/v1/port.py | 62 +- ironic/api/controllers/v1/portgroup.py | 103 +- ironic/api/controllers/v1/ramdisk.py | 33 +- ironic/api/controllers/v1/utils.py | 415 +++- ironic/api/controllers/v1/versions.py | 8 +- ironic/api/controllers/v1/volume_connector.py | 61 +- ironic/api/controllers/v1/volume_target.py | 87 +- ironic/common/context.py | 3 + ironic/common/driver_factory.py | 33 +- ironic/common/exception.py | 8 + ironic/common/glance_service/image_service.py | 17 +- ironic/common/glance_service/service_utils.py | 7 + ironic/common/image_service.py | 11 +- ironic/common/json_rpc/__init__.py | 20 - ironic/common/json_rpc/client.py | 207 -- ironic/common/json_rpc/server.py | 293 --- ironic/common/molds.py | 112 + ironic/common/neutron.py | 23 +- ironic/common/policy.py | 2016 ++++++++++++---- ironic/common/pxe_utils.py | 270 ++- ironic/common/release_mappings.py | 30 +- ironic/common/rpc_service.py | 6 +- ironic/common/swift.py | 7 +- ironic/common/utils.py | 30 +- ironic/conductor/allocations.py | 13 +- ironic/conductor/cleaning.py | 51 +- ironic/conductor/deployments.py | 3 +- ironic/conductor/manager.py | 24 +- ironic/conductor/rpcapi.py | 33 +- ironic/conductor/steps.py | 63 +- ironic/conductor/task_manager.py | 98 +- ironic/conductor/utils.py | 7 +- ironic/conf/__init__.py | 6 +- ironic/conf/anaconda.py | 36 + ironic/conf/api.py | 4 + ironic/conf/conductor.py | 13 + ironic/conf/default.py | 22 + ironic/conf/deploy.py | 47 +- ironic/conf/drac.py | 7 +- ironic/conf/ilo.py | 9 + ironic/conf/ipmi.py | 5 + ironic/conf/json_rpc.py | 61 - ironic/conf/molds.py | 41 + ironic/conf/opts.py | 21 +- ironic/conf/redfish.py | 10 + ironic/db/api.py | 31 +- ironic/db/sqlalchemy/api.py | 73 +- ironic/dhcp/neutron.py | 40 +- ironic/drivers/base.py | 26 +- ironic/drivers/drac.py | 5 +- ironic/drivers/generic.py | 3 +- ironic/drivers/modules/agent.py | 18 + ironic/drivers/modules/agent_base.py | 34 +- ironic/drivers/modules/agent_client.py | 32 +- ironic/drivers/modules/agent_power.py | 16 +- ironic/drivers/modules/ansible/deploy.py | 46 +- ironic/drivers/modules/deploy_utils.py | 43 +- ironic/drivers/modules/drac/bios.py | 20 +- ironic/drivers/modules/drac/inspect.py | 133 +- ironic/drivers/modules/drac/job.py | 11 +- ironic/drivers/modules/drac/management.py | 459 +++- ironic/drivers/modules/drac/raid.py | 164 ++ ironic/drivers/modules/ibmc/utils.py | 11 +- ironic/drivers/modules/ilo/boot.py | 93 +- ironic/drivers/modules/ilo/common.py | 173 +- ironic/drivers/modules/ilo/inspect.py | 7 + ironic/drivers/modules/ilo/management.py | 32 + ironic/drivers/modules/image_utils.py | 144 +- ironic/drivers/modules/inspector.py | 18 +- ironic/drivers/modules/ipmitool.py | 78 + ironic/drivers/modules/ipxe_config.template | 6 + ironic/drivers/modules/irmc/boot.py | 42 +- ironic/drivers/modules/irmc/common.py | 21 + ironic/drivers/modules/irmc/management.py | 32 + ironic/drivers/modules/iscsi_deploy.py | 9 +- ironic/drivers/modules/ks.cfg.template | 37 + ironic/drivers/modules/network/common.py | 12 +- ironic/drivers/modules/network/flat.py | 3 +- ironic/drivers/modules/network/neutron.py | 2 +- ironic/drivers/modules/pxe.py | 118 +- ironic/drivers/modules/pxe_base.py | 33 +- ironic/drivers/modules/pxe_config.template | 5 + ironic/drivers/modules/redfish/boot.py | 129 +- ironic/drivers/modules/redfish/inspect.py | 62 +- ironic/drivers/modules/redfish/management.py | 39 +- ironic/drivers/modules/redfish/raid.py | 1145 +++++++++ ironic/drivers/modules/redfish/utils.py | 80 +- ironic/drivers/modules/redfish/vendor.py | 2 +- ironic/drivers/modules/storage/cinder.py | 11 +- ironic/drivers/redfish.py | 7 + ironic/objects/portgroup.py | 18 +- ironic/objects/volume_connector.py | 13 +- ironic/objects/volume_target.py | 19 +- .../unit/api/controllers/v1/test_allocation.py | 87 +- .../api/controllers/v1/test_notification_utils.py | 7 +- .../unit/api/controllers/v1/test_portgroup.py | 225 +- .../api/controllers/v1/test_volume_connector.py | 56 +- .../unit/api/controllers/v1/test_volume_target.py | 55 +- .../drivers/ipxe_config_boot_from_iso.template | 6 + ...e_config_boot_from_volume_extra_volume.template | 6 + ...ipxe_config_boot_from_volume_multipath.template | 62 + ...nfig_boot_from_volume_no_extra_volumes.template | 6 + .../unit/drivers/ipxe_config_timeout.template | 6 + .../unit/drivers/modules/drac/test_inspect.py | 216 +- .../unit/drivers/modules/drac/test_management.py | 646 ++++- .../unit/drivers/modules/irmc/test_inspect.py | 17 - .../unit/drivers/modules/network/test_common.py | 150 +- .../unit/drivers/modules/network/test_flat.py | 23 +- .../unit/drivers/modules/network/test_neutron.py | 84 +- .../unit/drivers/modules/redfish/test_boot.py | 143 +- .../unit/drivers/modules/redfish/test_inspect.py | 119 + .../drivers/modules/redfish/test_management.py | 100 +- .../unit/drivers/modules/redfish/test_raid.py | 862 +++++++ .../unit/drivers/modules/redfish/test_utils.py | 29 +- .../unit/drivers/modules/test_agent_client.py | 18 +- .../unit/drivers/modules/test_console_utils.py | 81 +- .../unit/drivers/modules/test_deploy_utils.py | 32 +- .../unit/drivers/modules/test_iscsi_deploy.py | 8 +- .../unit/drivers/third_party_driver_mock_specs.py | 2 + .../add-clean-steps-priority-88d7de5973500a7d.yaml | 4 + ...d-config-mold-steps-idrac-1773d81953209964.yaml | 8 + .../add-dual-stack-dhcp-opts-6dc18ae10aeb599a.yaml | 5 + ...d-kernel-param-config-ilo-9b2cee8b0447f82e.yaml | 12 + ...xe-nic-support-in-redfish-5359897135df1348.yaml | 7 + ...d-support-to-manage_certs-b6615e15f697bc26.yaml | 7 + .../adds-nvme-erase-switch-fa91e867e45ede3c.yaml | 14 + ...ns-restricted-rbac-create-2847943150656432.yaml | 13 + ...anaconda-deploy-interface-c04932f6f469227a.yaml | 17 + .../notes/ansible-fast-track-cbecb132b6ff2b14.yaml | 4 + .../cipher_suite_versions-c64644860d3c220d.yaml | 6 + .../notes/configdrive-format-1b11f6068bd742cd.yaml | 6 + ...figdrive_use_object_store-93cfd7dc27d90003.yaml | 5 + .../notes/disable-ramdisk-5156a009812fbb17.yaml | 13 + .../notes/external-ip-5ec9b7b55a90cec4.yaml | 13 + ...ix-grub2-config-file-name-88e689a982a21684.yaml | 7 + ...-vmedia-boot-method-label-8008f49ace96f1cc.yaml | 15 + ...async-step-error-handling-80cd30c54c71c595.yaml | 8 + .../gpu_dynamic_capabilities-b56b90549882b6c2.yaml | 7 + ...drac-add-more-gpu-support-c3e24d8471ed6759.yaml | 9 + ...-add-redfish-raid-support-414aad5e633a160f.yaml | 9 + ...e-info-interface-override-287c7fcff1081469.yaml | 7 + .../network_data_schema-9342edf3c47b2a66.yaml | 5 + .../prelude-for-seventeen-638544be837c54fa.yaml | 34 + .../project-scoped-rbac-063c44ba593bb82a.yaml | 45 + .../redfish-autocreate-ports-53712a46dadd8203.yaml | 6 + ...ride-not-present-handling-92e7263617e467c4.yaml | 9 + .../notes/redfish-config-usb-3e9a7543b2912ae7.yaml | 11 + .../notes/redfish-deploy-iso-60873289278bf28f.yaml | 5 + .../redfish-raid-interface-e362e7a0e7140962.yaml | 10 + .../redfish_mgmt_clean_steps-c983a8858835046d.yaml | 9 + .../notes/releasenote-b3b25c13ea1e2844.yaml | 6 + .../remove-extra-vif-port-id-ea4e59176c2065fd.yaml | 8 + ...fter-device-to-supermicro-218e8cb57735c685.yaml | 11 + ...bac-api-version-increment-1785544f54a487b3.yaml | 10 + ...tem-scoped-authentication-28e3651de250bea8.yaml | 32 + .../taskmanager-lazy-load-32a14526c647c2f0.yaml | 9 + .../notes/volume-multipath-63b96f8331e771ae.yaml | 7 + requirements.txt | 7 +- setup.cfg | 3 + tools/config/ironic-config-generator.conf | 1 + tox.ini | 17 +- zuul.d/ironic-jobs.yaml | 82 +- zuul.d/project.yaml | 18 +- 250 files changed, 19107 insertions(+), 4885 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index 55d076e36..457040ed4 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -7 +7 @@ -proliantutils>=2.10.0 +proliantutils>=2.11.0 @@ -14 +14 @@ python-xclarityclient>=0.1.6 -sushy>=3.6.0 +sushy>=3.7.0 @@ -23 +23 @@ python-ibmcclient>=0.2.2,<0.3.0 -sushy-oem-idrac<2.0.0 +sushy-oem-idrac>=2.1.0,<3.0.0 diff --git a/requirements.txt b/requirements.txt index df346381b..ca59703cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13 +13 @@ keystoneauth1>=4.2.0 # Apache-2.0 -ironic-lib>=4.3.0 # Apache-2.0 +ironic-lib>=4.6.1 # Apache-2.0 @@ -17 +16,0 @@ stevedore>=1.20.0 # Apache-2.0 -pysendfile>=2.0.0;sys_platform!='win32' # MIT @@ -25 +24 @@ oslo.middleware>=3.31.0 # Apache-2.0 -oslo.policy>=3.6.0 # Apache-2.0 +oslo.policy>=3.6.2 # Apache-2.0 @@ -39 +38 @@ oslo.messaging>=5.29.0 # Apache-2.0 -retrying!=1.3.0,>=1.2.3 # Apache-2.0 +tenacity>=6.2.0 # Apache-2.0