We exuberantly announce the release of: ironic 14.0.0: OpenStack Bare Metal Provisioning This release is part of the ussuri 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. 14.0.0 ^^^^^^ New Features ************ * Adds "instance_info/kernel_append_params" property support to "redfish" hardware type. If given, this property overrides "[redfish]/kernel_append_params" ironic option. The rationale for adding this property is to allow passing node-specific kernel parameters to instance kernel. One of the use-cases for this is to pass node static network configuration to the kernel. * Adds support for node retirement by adding a "retired" property to the node. If set, a node moves upon automatic cleaning to "manageable" (rather than "available"). The new property also blocks the "provide" keyword, i.e. nodes cannot move from "manageable" to "available". Furthermore, there is an additional optional field "retirement_reason" to store the reason for the node's retirement. * Adds an "owner" field to allocations. Depending on policy, a non- admin can then create an allocation and have the owner set to their project. Allocation processing will then ensure that only nodes with the same owner are matched. * Adds support for specifying vendor_data when building config drives. Starting with API version 1.59, a JSON based "configdrive" parameter to "/v1/nodes/<node>/states/provision" can include the key "vendor_data". This data will be built into the configdrive contents as "vendor_data2.json". * Adds "idrac" hardware type support of a virtual media boot interface implementation that utilizes the Redfish out-of-band (OOB) management protocol and is compatible with the integrated Dell Remote Access Controller (iDRAC) baseboard management controller (BMC). It is named "idrac-redfish-virtual-media". The "idrac" hardware type declares support for that new interface implementation, in addition to all boot interface implementations it has been supporting. The highest priority boot interfaces remain the same. It now supports the following boot interface implementations, listed in priority order from highest to lowest: "ipxe", "pxe", and "idrac-redfish-virtual-media". To use the new boot interface, install the "sushy-oem-idrac" Python package. For more information, see story 2006570 (https://storyboard.openstack.org/#!/story/2006570). * It's now possible to force booting for in-band inspection to be managed by ironic by setting the new "[inspector]require_managed_boot" option to "True". In-band inspection will fail if the node's driver does not support managing boot for it. * The "pxe" and "ipxe" boot interfaces, as well as all in-tree network interfaces, now support managing in-band inspection boot. * Allows reading the "root_device" from "instance_info", overriding the value in "properties". This enables per-instance root device settings and requires the Ussuri release of ironic-python-agent. * Adds an "is_node_owner" policy rule. This rule can be used with node policy rules in order to expose specific node APIs to a project ID specified by a node's "owner" field. Default rules are unaffected, so default behavior is unchanged. * A port is owned by its associated node's owner. This owner is now exposed to policy checks, giving Ironic admins the option of modifying the policy file to allow users specified by a node's owner field to perform API actions on that node's associated ports through the "is_node_owner" rule. * The "redfish-virtual-media" boot interface now supports managing boot for in-band inspection. This enables using virtual media instead of PXE for in-band inspection. * Software RAID is no longer limited to images which have the root file system in the first partition. Upgrade Notes ************* * Changes the minimum version of Ansible for use with the "ansible" "deploy_interface" to version 2.5. * Python 2.7 support has been dropped. Last release of Ironic to support Python 2.7 is OpenStack Train. The minimum version of Python now supported by Ironic is Python 3.6. * For the managed in-band inspection to work, make sure that the Bare Metal Introspection endpoint (either in the service catalog or in the "[inspector]endpoint_override" configuration option) is not set to localhost. Alternatively, set the "[inspector]callback_endpoint_override" option to a value with a real IP address. * The argument "agent_version" of the heartbeat interface is now mandatory to all interfaces that inherit from HeartbeatMixin. * Operators using custom PXE/iPXE/Grub templates should update them to remove an explicit mention of "ipa-api-url". This field is now a part of "pxe_append_params" when required. * The configuration option "[agent]heartbeat_timeout" was deprecated before ocata release and now removed, please use "[api]ramdisk_heartbeat_timeout" instead. * The configuration option "[glance]glance_num_retries" was deprecated and now removed, please use "[glance]num_retries" instead. * The configuration option "[disk_utils]iscsi_verify_attempts" was deprecated in Train and it's now removed from ironic-lib. Please use the "[iscsi]verify_attempts" option instead. * For Software RAID, the IPA no longer assumes that the root file system of the deployed image is in the first partition. Instead, it will use the UUID passed from the conductor. Operators need hence to make sure that the conductor has the correct UUID (which either comes from the "rootfs_uuid" field in the image metadata or from the "root_uuid_or_disk_id" in the node's "internal_driver_info".) Deprecation Notes ***************** * The "ibmc" hardware type has been deprecated. While the Huawei team setup Third-Party CI for the driver's inclusion into ironic, the CI unfortunately went down around the time the United States of America announced commerce restrictions against Huawei. Unfortunantely, without third party CI and no contacts to maintain the driver, the ironic community is left with little choice but to deprecate and ultimately remove the driver. * The Fujitsu "irmc" hardware type has been deprecated. The Third Party CI for the driver stopped responding on or around July 7th, 2019. As such, we cannot claim fixes or changes to the driver are in a working state. We have heard from the Fujitsu team that they intend to return "irmc" CI to working order, and as such should that occur this deprecation will be revoked. Security Issues *************** * Node secrets (such as BMC credentials) are no longer logged when JSON RPC is used and DEBUG logging is enabled. * Prevents additional updates of an agent "callback_url" through the agent heartbeat "/v1/heartbeat/<node_uuid>" endpoint as the "callback_url" should remain stable through the cleaning, provisioning, or rescue processes. Should anything such as an unexpected agent reboot cause the "callback_url", heartbeat operations will now be ignored. More information can be found at story 2006773 (https://storyboard.openstack.org/#!/story/2006773). Bug Fixes ********* * Makes "ironic.api.wsgi" compatible with WSGI containers that cannot use an executable WSGI entry point. For example, with gunicorn: gunicorn -b 0.0.0.0:6385 'ironic.api.wsgi:initialize_wsgi_app(argv=[])' * Now passing proper flags during clean up of iPXE boot environments, so that no leftovers are left after node tear down. * Fixes a bug in the "idrac" hardware type where configuration job for RAID "delete_configuration" cleaning step gets created even when there are no virtual disks or hotspares/dedicated hotspares present on any controller. See bug 2006562 (https://storyboard.openstack.org/#!/story/2006562) for details. * Fixes a bug in the "idrac" hardware type where a race condition can occur on a host that has a mix of controllers where some support realtime mode and some do not. The approach is to use only realtime mode if all controllers support realtime. This removes the race condition. See bug 2006502 (https://storyboard.openstack.org/#!/story/2006502) for details. * Corrects logic in the entry path of node cleaning and deployment processes to prohibit "agent_url" from being preemptively removed if "fast_track" is enabled and in use. This allows fast track cleaning and deployment operations to succeed. * Fixes issue where the resource list API returned results with requested fields only until the API "MAX_LIMIT". After the API "MAX_LIMIT" is reached the API started ignoring user requested fields. This fix will make sure that the next url generated by the pagination code will include the user requested fields as query parameter. * Fixes an issue that when "ipxe" interface is in use with "[pxe]ipxe_enabled" set to false, the PXE configuration is not handled properly which prevents the machine from performing a successful iPXE boot. * Fixes virtual media boot when served using a local HTTP server, i.e. "[redfish]use_swift" is "false". * Fixes drive sensors information collection in "redfish" management interface. Prior to this fix, wrong Redfish schema has been used for Drive resource what has been causing exception and ultimately sensor data collection failure. * Fixes a possible console lockup issue (https://storyboard.openstack.org/#!/story/2006514) in case of PID file not being yet created while daemon start has call already returned success return code. * Fixes a bug in the "idrac" hardware type where executing the "clear_job_queue" clean step, pending non-BIOS config jobs (E.g. create/delete virtual disk) were not being deleted before job execution. See bug 2006580 (https://storyboard.openstack.org/#!/story/2006580) for details. * Fixes an issue with fasttrack where a recent security related change to prevent the "agent_url" field from being updated in a node, to functionally prevent fast_track from succeeding as the node would fail with an exception indicating the "agent_url" could not be found. The required "agent_url" value is now preserved when the fast track feature is enabled as the running ramdisk is not shut down. * Fixes a minor issue with "get_boot_option" logic that did not account for Software RAID. This can erroniously cause the deployment to take the the incorrect deployment path and attempt to install a boot loader. * Add timeout when querying agent for commands status. Without it, node can lock up for a quite long time and ironic will not allow to perform any operations with it. * Fixes incorrect parsing of "ibmc_address" with a port but without a schema in the "ibmc" hardware type on Python 3.8. * When using the PERC H730P RAID controller, physical disks must be put into RAID mode prior to creating a virtual disk that includes them. If one or more physical disks are in JBOD/Non-RAID mode when creating a virtual disk from them, then the iDRAC will return an error. This patch ensures that the physical disks being included in a virtual disk are converted to RAID mode prior to creating the virtual disk. * Hardware type "idrac" converts physical drives from "RAID" to "JBOD" mode after RAID "delete_configuration" cleaning step through raid interface. This ensures that the individual disks freed by deleting the virtual disks are visible to the OS. * Support for some hardware, including some Dell EMC servers, is broken when using the Redfish hardware type with sushy 1.9.0. The minimum version for the sushy library is now 2.0.0. See story 2006702 (https://storyboard.openstack.org/#!/story/2006702) for more information. * Fixes an issue where a provisioned or allocated node could have its owner changed. For backwards compatibility, we preserve the ability to do so for a provisioned node through the use of the "baremetal:node:update_owner_provisioned" policy rule. We always prevent the update if the node is associated with an allocation that specifies an owner. * Fixes a bug with the grub ramdisk boot template handling, such that the template now properly references the user provided kernal and ramdisk. Previously the deployment ramdisk and kernel was referenced in the template. * When installing a whole disk image using iscsi, set up the bootloader even if a root partition can not be found. The bootloaders will be located on the disk. Other Notes *********** * Boot and network interface implementations can now manage boot for in-band inspection by implementing the new methods: * "BootInterface.validate_inspection" * "NetworkInterface.validate_inspection" * "NetworkInterface.add_inspection_network" * "NetworkInterface.remove_inspection_network" Previously only ironic-inspector itself could manage boot for it. This change opens a way for non-PXE implementations of in-band inspection. Changes in ironic 13.0.0..14.0.0 -------------------------------- 78c3af414 Fix up release notes for 14.0.0 25db12607 Actually use ironic-python-agent from source in source builds 351779a00 Update release mappings for Ussuri 0f4b9e38a tell reno to ignore the kilo branch 627b0c0cd Update API version history for v1.61 fb54c01c1 Split cleaning-related functions from manager.py into a new module d94931840 Split deployment-related functions from manager.py into a new module 1366bde2d Disable debug output in doc building 1e7447a17 Fix jsonpatch related tests f61624e06 Fix ipxe interface to perform ipxe boot without ipxe_enabled enabled 90b747ac6 Fix typo in setup-network.sh script 3ecaadbb3 Support node retirement 4504bd5a8 Make ironic-api compatible with WSGI containers other than mod_wsgi d614d86ee Don't require root partition when installing a whole disk image 0c6521804 Clean up api controller base classes 92fee4053 Deprecate irmc hardware type f192f2c45 Subclass wsme.exc.ClientSideError cc7a9c29c Use str type instead of wsme.types.text 20142434b Use bionic job for bifrost integration 9050098e3 Follow up to root device hints in instance_info 7e825a28c Deprecate ibmc 2bf981982 Fix incorrect ibmc_address parsing on Python 3.8 0a94391e3 Fix entry paths for cleaning and deployment 6da62945b Fix API docs for target_power_state response 9be5b3729 Document using CentOS 8 DIB IPA images for Ussuri and newer 8f2ddc0b2 Lower RAM for DIB jobs to 2 GiB df047e07c Remove reference to deprecated [disk_utils]iscsi_verify_attempts d906fc2bb Add node info and exc name when getting rootfs info from Glance c3955e68a Fix fast_track + agent_url update fix 8c3ab7de0 CI: make the metalsmith job voting and gating ca355adb7 devstack: install bindep for diskimage-builder 42dc9787e Allow reading root_device from instance_info 7bd643dee Add a missing versionadded for configdrive[vendor_data] 373f428fc Make qemu hook running with python3 ca0c9ff88 Refactor glance retry code to use retrying lib 183d4eae6 Fix duplicated words issue like "are are placed" f110afc4f devstack: switch to using CentOS 8 DIB ramdisks by default e171bc258 Remove the deprecated [glance]glance_num_retries 70ca54555 Fix missing job_id parameter in the log message 721aab48d Fix get_boot_option logic for software raid 6f16a2268 Allow node owners to administer associated ports 697048b47 Explicitly use ipxe as boot interface for iPXE testing fcbf25aec Replace disk-image-create with ironic-python-agent-builder 82b17f0b0 Remove those switches for python2. b09179086 Fix invalid assertIsNone statements 968f7876f Add librsvg2* to bindep 78c121a5d Stop using six library 9a6344d03 Add notes on the pxe template for aarch64 f0f3cb840 Enforce running tox with correct python version based on env d0d221361 Tell the multinode subnode and grenade to use /opt 7b4e10c06 Disable automated clean on newer jobs f4d2a3127 Extend service timeout da704d9ec Tune down multinode concurrency f22ab4488 Restrict ability to change owner on provisioned or allocated node fd064a4f6 Correct power state handling for managed in-band inspection 7a7e9689a Implement managed in-band inspection boot for redfish-virtual-media 2e33669b4 redfish-vmedia: correctly pass ipa-debug 200959b90 Add a CI job to UEFI boot over Redfish virtual media 59e766b3f Fix use of urlparse.urljoin 66f9abdc7 Import importlib directly bd5a12f75 Increasing BUILD_TIMEOUT value for multinode job b293eb1af Remove deprecated ironic-agent element 3fbb560af Add owner to allocations and create relevant policies 570317e40 CI: do not enable rescue on indirect jobs 950acaaf1 Update nova os-server-external-events response logic f772e8658 DRAC: Drives conversion from raid to jbod 3e6cf8423 Changed to bug fix to follow-on idrac job patch. 2d5a8cf96 Fixes issue with checking whether ISO is passed 8a0b1a39f docs: add a missing heading dcd701b4a Add a CI job to legacy boot over Redfish virtual media 10abf8834 Fix UEFI NVRAM collision in devstack 9a5e6ead2 Remove references to 'firewall_driver' 3eb1ca633 Make redfish CI jobs pulling sushy-tools from git b6035d613 Prevent localhost from being used as ironic-inspector callback URL 71c03410a Add an ironic-inspector job with managed boot 33a84d94e Add timeout when querying agent's command statuses daa26b85d docs: update the local development quickstart to use JSON RPC b869b46c6 Drop python 2.7 support and testing 6ad4833b0 Remove unused migration tests e9824d11d Wire in in-band inspection for PXE boot and neutron-based networking c5dfa1bd9 Foundation for boot/network management for in-band inspection 605f74457 Add `instance_info/kernel_append_params` to `redfish` e8f212040 Add indicator management to redfish hw type 68a5e31a5 Mock out the correct greenthread sleep method 2231a9344 Don't install syslinux-nonlinux on rhel7 c7a42bdbf Ensure text-only console in devstack 8e39fe9d4 Pass correct flags during PXE cleanup in iPXEBoot 6ec967738 Drop [agent]heartbeat_timeout 954117902 Remove old online migration codes 931c12598 Block ability update callback_url 61a3e833f Stop supporting incompatible heartbeat interfaces 8253826e8 Allow node owners to administer nodes f8c4f7b1e Fix variable name in cleanup_baremetal_basic_ops func 2c6722199 Switch legacy jobs to Py3 1e25f60fd Ensure `isolinux.bin` is present and configured in devstack 2a6b74b55 Fix `snmp` unit test db31628de Backward compatibility for the ramdisk_params change 7ebad2e34 Allow vendor_data to be included in a configdrive dict d114c75d8 Improve iDrac Documentation 08fe4af48 Correct handling of ramdisk_params in (i)PXE boot defc4a876 Software RAID: Identify the root fs via its UUID from image metadata bba990c7e Change integration jobs to run under Python3 89c30cb92 Using loop instead of with_X a38b1c834 CI: add ironic-python-agent-builder to the multinode job 3fa039724 Update release with information about zuul job ddcc7cc5e Add virtual media boot section to the docs a2472c151 CI: limit rescue testing to only two jobs 3ab93f0c8 Mask secrets when logging in json_rpc 453485bf0 Use new shiny Devices class instead of old ugly Device 3db445ab5 Switch to ussuri job e36f72d36 Do not ignore 'fields' query parameter when building next url 0ab2c08e4 Update sushy library version 43dd29d81 Minor string formatting follow-up to idrac jbod patch 5d5cd90dd Document systemd-nspawn as a nice trick for patching a ramdisk 8e3f682e2 DRAC: Drives conversion from JBOD to RAID 8dc0a9641 Setup ipa-builder before building ramdisk e339c30a5 Fix EFIBOOT image upload in devstack a2ae57c45 Fix drive sensors collection in `redfish` mgmt interface 0ad6f8758 Add Redfish vmedia boot interface to idrac HW type cf074202e Change MTU logic to allow for lower MTUs automatically 4be3fcef2 DRAC: Fix a bug for clear_job_queue clean step with non-BIOS pending job d0489b55e Documentation for iLO hardware type deploy steps 8cc6dbdd8 ironic-tempest-functional-python3 unused variables a25589b20 docs: use openstackdocstheme extlink extension 2364c8b24 grub configuration should use user kernel & ramdisk 61c836470 Raising minimum version of oslo.db e4f3b7b81 DRAC: Fix a bug for delete_config with multiple controllers a5297da94 Use correct function to stop service dab47f9ce Fix devstack installation failure fb83cfb76 DRAC: Fix a bug for job creation when only required 78e763c61 Add a CI job with a DIB-built ramdisk efa21d2e3 Remove old online migrations and new models f533f42ca Remove earliest version from releasing docs, update examples b8fa188a2 Change log level based on node status e11285c6b enable_python3_package should not be necessary anymore 225ca979c Update doc for CI 8024fcc39 Add versions to release notes series dae6caca5 Document pre-built ramdisk images (including DIB) de85baaa9 Run DIB with tracing enabled and increase the DHCP timeout f2c243732 Improve documentation about releasing deliverables eb10eace8 Update master for stable/train efc2d5fcd Read in non-blocking fashion when starting console 2d2a2e49a Add logic to determine Ironic node is HW or not into configure_ironic_dirs Diffstat (except docs and test files) ------------------------------------- api-ref/source/baremetal-api-v1-allocation.inc | 15 + .../source/baremetal-api-v1-node-management.inc | 3 + api-ref/source/baremetal-api-v1-nodes.inc | 5 + api-ref/source/parameters.yaml | 20 +- .../source/samples/allocation-create-response.json | 1 + .../source/samples/allocation-show-response.json | 1 + .../source/samples/allocation-update-response.json | 1 + .../source/samples/allocations-list-response.json | 2 + api-ref/source/samples/node-create-response.json | 2 + api-ref/source/samples/node-show-response.json | 2 + .../samples/node-update-driver-info-response.json | 2 + .../samples/nodes-list-details-response.json | 4 + bindep.txt | 3 + devstack/files/debs/ironic | 1 + devstack/files/hooks/qemu.py | 9 +- devstack/files/rpms/ironic | 1 + devstack/lib/ironic | 133 +- devstack/plugin.sh | 5 - devstack/settings | 6 +- devstack/tools/ironic/scripts/setup-network.sh | 2 +- devstack/tools/ironic/templates/vm.xml | 9 +- .../include/configure-ironic-api-mod_wsgi.inc | 17 + .../refarch/small-cloud-trusted-tenants.rst | 24 +- driver-requirements.txt | 9 +- ironic/api/controllers/base.py | 23 +- ironic/api/controllers/link.py | 8 +- ironic/api/controllers/root.py | 7 +- ironic/api/controllers/v1/__init__.py | 11 +- ironic/api/controllers/v1/allocation.py | 89 +- ironic/api/controllers/v1/bios.py | 8 +- ironic/api/controllers/v1/chassis.py | 11 +- ironic/api/controllers/v1/collection.py | 9 +- ironic/api/controllers/v1/conductor.py | 13 +- ironic/api/controllers/v1/deploy_template.py | 18 +- ironic/api/controllers/v1/driver.py | 76 +- ironic/api/controllers/v1/event.py | 3 +- ironic/api/controllers/v1/node.py | 389 +-- ironic/api/controllers/v1/port.py | 83 +- ironic/api/controllers/v1/portgroup.py | 27 +- ironic/api/controllers/v1/ramdisk.py | 23 +- ironic/api/controllers/v1/state.py | 8 +- ironic/api/controllers/v1/types.py | 42 +- ironic/api/controllers/v1/utils.py | 187 +- ironic/api/controllers/v1/versions.py | 8 +- ironic/api/controllers/v1/volume.py | 3 +- ironic/api/controllers/v1/volume_connector.py | 16 +- ironic/api/controllers/v1/volume_target.py | 18 +- ironic/api/controllers/version.py | 12 +- ironic/api/hooks.py | 5 +- ironic/api/middleware/parsable_error.py | 7 +- ironic/api/wsgi.py | 5 +- ironic/cmd/dbsync.py | 13 - ironic/common/exception.py | 13 +- ironic/common/fsm.py | 9 +- ironic/common/glance_service/image_service.py | 49 +- ironic/common/glance_service/service_utils.py | 7 +- ironic/common/image_service.py | 22 +- ironic/common/json_rpc/client.py | 6 +- ironic/common/json_rpc/server.py | 8 +- ironic/common/keystone.py | 11 +- ironic/common/neutron.py | 24 + ironic/common/nova.py | 5 +- ironic/common/policy.py | 45 +- ironic/common/pxe_utils.py | 31 +- ironic/common/release_mappings.py | 26 +- ironic/common/swift.py | 19 +- ironic/common/utils.py | 48 +- ironic/conductor/allocations.py | 2 + ironic/conductor/base_manager.py | 3 +- ironic/conductor/cleaning.py | 276 ++ ironic/conductor/deployments.py | 402 +++ ironic/conductor/manager.py | 771 +---- ironic/conductor/task_manager.py | 26 +- ironic/conductor/utils.py | 100 +- ironic/conf/api.py | 1 - ironic/conf/drac.py | 8 +- ironic/conf/glance.py | 2 - ironic/conf/inspector.py | 17 + ironic/conf/iscsi.py | 6 +- ironic/conf/neutron.py | 12 + ironic/conf/redfish.py | 10 +- ironic/db/api.py | 5 +- .../cd2c80feb331_add_node_retired_field.py | 33 + .../versions/ce6c4b3cf5a2_add_allocation_owner.py | 32 + ironic/db/sqlalchemy/api.py | 34 +- ironic/db/sqlalchemy/models.py | 6 +- ironic/dhcp/base.py | 4 +- ironic/drivers/base.py | 57 +- ironic/drivers/drac.py | 8 + ironic/drivers/hardware_type.py | 5 +- ironic/drivers/ibmc.py | 2 + ironic/drivers/irmc.py | 2 + ironic/drivers/modules/agent.py | 55 +- ironic/drivers/modules/agent_base_vendor.py | 68 +- ironic/drivers/modules/agent_client.py | 5 +- ironic/drivers/modules/agent_config.template | 2 +- ironic/drivers/modules/ansible/deploy.py | 16 +- .../playbooks/callback_plugins/ironic_log.py | 2 +- .../modules/ansible/playbooks/library/facts_wwn.py | 2 +- .../playbooks/roles/discover/tasks/main.yaml | 2 +- ironic/drivers/modules/console_utils.py | 51 +- ironic/drivers/modules/deploy_utils.py | 61 +- ironic/drivers/modules/drac/boot.py | 161 + ironic/drivers/modules/drac/job.py | 31 +- ironic/drivers/modules/drac/management.py | 29 +- ironic/drivers/modules/drac/raid.py | 221 +- ironic/drivers/modules/ibmc/management.py | 2 + ironic/drivers/modules/ibmc/power.py | 2 + ironic/drivers/modules/ibmc/utils.py | 11 +- ironic/drivers/modules/ibmc/vendor.py | 2 + ironic/drivers/modules/ilo/boot.py | 2 +- ironic/drivers/modules/ilo/common.py | 10 +- ironic/drivers/modules/ilo/firmware_processor.py | 6 +- ironic/drivers/modules/ilo/management.py | 6 +- ironic/drivers/modules/image_cache.py | 7 +- ironic/drivers/modules/inspector.py | 210 +- ironic/drivers/modules/ipmitool.py | 5 +- ironic/drivers/modules/ipxe.py | 63 +- ironic/drivers/modules/ipxe_config.template | 2 +- ironic/drivers/modules/irmc/bios.py | 2 + ironic/drivers/modules/irmc/boot.py | 8 +- ironic/drivers/modules/irmc/common.py | 5 +- ironic/drivers/modules/irmc/inspect.py | 2 + ironic/drivers/modules/irmc/power.py | 2 + ironic/drivers/modules/irmc/raid.py | 5 +- ironic/drivers/modules/iscsi_deploy.py | 36 +- ironic/drivers/modules/network/common.py | 1 + ironic/drivers/modules/network/flat.py | 76 +- ironic/drivers/modules/network/neutron.py | 143 +- ironic/drivers/modules/network/noop.py | 7 + ironic/drivers/modules/pxe.py | 63 +- ironic/drivers/modules/pxe_base.py | 8 +- ironic/drivers/modules/pxe_config.template | 2 +- ironic/drivers/modules/pxe_grub_config.template | 6 +- ironic/drivers/modules/redfish/boot.py | 41 +- ironic/drivers/modules/redfish/management.py | 215 +- ironic/drivers/modules/redfish/utils.py | 7 +- ironic/drivers/modules/snmp.py | 4 +- ironic/drivers/modules/storage/cinder.py | 9 +- ironic/drivers/utils.py | 3 +- ironic/objects/allocation.py | 28 +- ironic/objects/fields.py | 3 +- ironic/objects/node.py | 35 +- ironic/objects/port.py | 54 +- ironic/objects/portgroup.py | 31 - .../unit/api/controllers/v1/test_allocation.py | 218 +- .../unit/api/controllers/v1/test_conductor.py | 20 +- .../api/controllers/v1/test_deploy_template.py | 31 +- .../unit/api/controllers/v1/test_portgroup.py | 27 +- .../api/controllers/v1/test_volume_connector.py | 29 +- .../unit/api/controllers/v1/test_volume_target.py | 25 +- ...e_config_boot_from_volume_extra_volume.template | 2 +- ...nfig_boot_from_volume_no_extra_volumes.template | 2 +- .../unit/drivers/ipxe_config_timeout.template | 2 +- .../unit/drivers/modules/ansible/test_deploy.py | 44 +- .../unit/drivers/modules/drac/test_management.py | 133 +- .../drivers/modules/ilo/test_firmware_processor.py | 13 +- .../unit/drivers/modules/network/test_flat.py | 77 +- .../unit/drivers/modules/network/test_neutron.py | 144 +- .../unit/drivers/modules/network/test_noop.py | 8 + .../unit/drivers/modules/redfish/test_bios.py | 3 +- .../unit/drivers/modules/redfish/test_boot.py | 96 +- .../drivers/modules/redfish/test_management.py | 126 +- .../unit/drivers/modules/redfish/test_power.py | 3 +- .../unit/drivers/modules/test_agent_base_vendor.py | 75 +- .../unit/drivers/modules/test_agent_client.py | 15 +- .../unit/drivers/modules/test_console_utils.py | 73 +- .../unit/drivers/modules/test_deploy_utils.py | 25 + .../unit/drivers/modules/test_iscsi_deploy.py | 14 +- .../drivers/modules/xclarity/test_management.py | 6 +- .../unit/drivers/modules/xclarity/test_power.py | 6 +- .../unit/drivers/third_party_driver_mock_specs.py | 19 +- lower-constraints.txt | 7 +- .../run.yaml | 2 + playbooks/legacy/grenade-dsvm-ironic/run.yaml | 1 + ...add-kernel-params-redfish-72b87075465c87f6.yaml | 9 + .../add_retirement_support-23c5fed7ce8f97d4.yaml | 9 + .../allocation-owner-policy-162c43b3abb91c76.yaml | 7 + .../notes/ansible-loops-de0eef0d5b79a9ff.yaml | 5 + releasenotes/notes/any-wsgi-8d6ccb0590104146.yaml | 7 + .../notes/cleanup-ipxe-f1349e2ac9ec2825.yaml | 5 + .../configdrive-vendordata-122049bd7c6e1b67.yaml | 8 + .../notes/deprecate-ibmc-9106cc3a81171738.yaml | 11 + .../notes/deprecate-irmc-031f55c3bb1fb863.yaml | 10 + .../notes/drop-py-2-7-5140cb76e321cdd1.yaml | 6 + .../fix-commit-to-controller-d26f083ac388a65e.yaml | 8 + ...with-multiple-controllers-06fc3fca94ba870f.yaml | 9 + ...fix-fast-track-entry-path-467c20f97aeb2f4b.yaml | 7 + ...lds-missing-from-next-url-fd9fddf8e70b65ea.yaml | 8 + ...rface-without-opt-enabled-4fa2f83975295e20.yaml | 6 + releasenotes/notes/fix-path-a3a0cfd2c135ace9.yaml | 5 + .../fix-sensors-storage-ed5d5bbda9b46645.yaml | 7 + ...hellinabox-pipe-not-ready-f860c4b7a1ef71a8.yaml | 7 + ...ng_non_bios_job_execution-4b22e168ac915f4f.yaml | 10 + ...nt-failure-with-fasttrack-f1fe05598fbdbe4a.yaml | 9 + ...-option-for-software-raid-baa2cffd95e1f624.yaml | 6 + ...t-commands-status-timeout-ecbac91ea149e755.yaml | 6 + releasenotes/notes/ibmc-38-169438974508f62e.yaml | 5 + ...-add-redfish-boot-support-036396b48d3f71f4.yaml | 21 + ...s-conversion-jbod-to-raid-1a229627708e10b9.yaml | 11 + ...s-conversion-raid-to-jbod-de10755d1ec094ea.yaml | 8 + .../inspection-boot-network-59fd23ca62b09e81.yaml | 19 + .../notes/inspector-pxe-boot-9ab9fede5671097e.yaml | 12 + ...instance-info-root-device-0a5190240fcc8fd8.yaml | 6 + .../notes/jsonrpc-logging-21670015bb845182.yaml | 5 + .../min-sushy-version-change-3b697530e0c05dee.yaml | 7 + ...gent-version-in-heartbeat-4e6806b679c53ec5.yaml | 5 + .../notes/node-owner-policy-d7168976bba70566.yaml | 6 + .../node-owner-policy-ports-1d3193fd897feaa6.yaml | 8 + .../node-owner-provision-fix-ee2348b5922f7648.yaml | 9 + ...ck-url-from-being-updated-41d50b20fb236e82.yaml | 10 + ...b-use-user-kernel-ramdisk-7d572fe130932605.yaml | 5 + .../notes/ramdisk-params-6083bfaa7ffa9dfe.yaml | 6 + ...edfish-managed-inspection-936341ffa8e1f22a.yaml | 6 + ...e-agent-heartbeat-timeout-abf8787b8477bae7.yaml | 6 + ...remove-glance-num-retries-24898fc9230d9497.yaml | 5 + ...ove-iscsi-verify-attempts-ede5b56b0545da08.yaml | 6 + ...ware_raid_use_rootfs_uuid-f61eb671d696d251.yaml | 13 + ...k-scsi-install-bootloader-f7e791d82da476ca.yaml | 6 + releasenotes/source/index.rst | 1 + releasenotes/source/train.rst | 6 + reno.yaml | 4 + requirements.txt | 7 +- setup.cfg | 3 +- tox.ini | 25 +- zuul.d/ironic-jobs.yaml | 129 +- zuul.d/project.yaml | 27 +- 345 files changed, 11489 insertions(+), 5544 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index beb542186..c9874f12f 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -10 +10 @@ python-scciclient>=0.8.0 -python-dracclient>=3.0.0,<4.0.0 +python-dracclient>=3.1.0,<4.0.0 @@ -14 +14 @@ python-xclarityclient>=0.1.6 -sushy>=1.9.0 +sushy>=2.0.0 @@ -17 +17 @@ sushy>=1.9.0 -ansible>=2.4 +ansible>=2.5 @@ -20,0 +21,3 @@ python-ibmcclient>=0.1.0 + +# Dell EMC iDRAC sushy OEM extension +sushy-oem-idrac<=0.1.0 diff --git a/requirements.txt b/requirements.txt index 44c4d681b..fff36d71b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22 +22 @@ oslo.context>=2.19.2 # Apache-2.0 -oslo.db>=4.27.0 # Apache-2.0 +oslo.db>=4.40.0 # Apache-2.0 @@ -32 +32 @@ oslo.upgradecheck>=0.1.0 # Apache-2.0 -oslo.utils>=3.33.0 # Apache-2.0 +oslo.utils>=3.38.0 # Apache-2.0 @@ -38 +37,0 @@ rfc3986>=0.3.1 # Apache-2.0 -six>=1.10.0 # MIT @@ -50 +49 @@ tooz>=1.58.0 # Apache-2.0 -openstacksdk>=0.31.2 # Apache-2.0 +openstacksdk>=0.37.0 # Apache-2.0