[release-announce] ironic 15.0.0 (ussuri)

no-reply at openstack.org no-reply at openstack.org
Thu Apr 30 09:29:53 UTC 2020

We are chuffed to announce the release of:

ironic 15.0.0: OpenStack Bare Metal Provisioning

This release is part of the ussuri release series.

The source is available from:


Download the package from:


Please report issues through:


For more details, please see below.



The Ironic Developers are proud to announce the release of Ironic
15.0! This release contains a number of changes that have been sought
by operators and users of Ironic for some time, including support for
UEFI booting a software RAID system, improved Ironic/Ironic Python
Agent security, multi-tenancy constructs, a hardware retirement
mechanism, stateful DHCPv6, and numerous fixes. We sincerely hope you

New Features

* Adds REST API endpoints for indicator management. Three new
  endpoints, for listing, reading and setting the indicators, reside
  under the "/v1/nodes/<node_ident>/management/indicators" location.

* Adds support of "agent token" which serves as a mechanism to
  secure the normally unauthenticated API endpoints in ironic which
  are used in the mechanics of baremetal provisioning. This feature is
  optional, however operators may require this feature by changing the
  "[DEFAULT]require_agent_token" setting to "True".

* Adds "is_allocation_owner" policy rule, which can be applied to
  allocation get/update/delete rules. Also adds
  "baremetal:allocation:list" and "baremetal:allocation:list_all"
  rules for listing owned allocations and all allocations. Default
  rules are unaffected, so default behavior is unchanged.

* Adds a new configuration option "[console]port_range", which
  specifies the range of ports can be consumed for the IPMI serial
  console. The default value is "None" for backwards compatibility. If
  the "ipmi_terminal_port" is not specified in the driver information
  for a node, a free port will be allocated from the configured port
  range for further use.

* For baremetal operations on DHCPv6-stateful networks multiple IPv6
  addresses can now be allocated for neutron ports created for
  provisioning, cleaning, rescue or inspection. The new parameter
  "[neutron]/dhcpv6_stateful_address_count" controls the number of
  addresses to allocate (Default: 4).

* Adds functionality with neutron integration to support dual-stack
  (IPv4 and IPv6 environment configurations). This enables ironic to
  look up the attached port(s) and supply DHCP options in alignment
  with the protocol version allocated on the port.

* Implemented the "BIOS interface" for the "idrac" hardware type.
  Primarily, implemented "factory_reset" and "apply_configuration"
  clean and deploy steps, as asynchronous operations. For more
  details, see story 2007400

* The "ilo-virtual-media" boot interface now supports managing boot
  for in-band inspection. This enables using virtual media instead of
  PXE for in-band inspection.

* Adds the capability for the "instance_info\image_checksum" value
  to be optional in stand-alone deployments if the
  "instance_info\image_os_hash_algo" and
  "instance_info\image_os_hash_value" fields are populated.

* Makes management interface of "redfish" hardware type not change
  the current boot frequency if the current setting is the same as the
  desired one. The goal is to avoid touching a potentially faulty BMC
  option whenever possible.

* Adds a new "[ipmi]debug" option that allows users to explicitly
  turn IPMI command debugging on, as opposed to relying upon the
  system debug setting "[DEFAULT]debug". Users wishing to continue to
  log this output should set "[ipmi]debug" to "True" in their

* Changes neutron port updates to use auth values from Ironic's
  neutron conf, preventing issues that can arise when a non-admin user
  manages Ironic nodes. A check is added to the port update function
  to verify that the user can actually see the port. This adds an
  additional Neutron request call to all port updates.

* Adds a "lessee" field to nodes. This field is exposed to policy,
  so if a policy file permits, a lessee will have access to specified
  node APIs.

* Adds "baremetal:node:update_extra" and
  "baremetal:node:instance_info" policies to allow finer-grained
  policy control over node updates. In order to use standalone Ironic
  to provision a node, a user must be able to update "instance_info"
  (and "extra" if using metalsmith), and a lessee should not be able
  to update all node attributes.

* The "redfish_system_id" property of redfish hardware type has been
  made optional. If not specified in "driver_info", and the target BMC
  manages a single ComputerSystem, ironic will assume that system.
  Otherwise, ironic will fail requiring explicit "redfish_system_id"
  specification in "driver_info".

* To allow use of the "neutron" network interface in combination
  with "flat" provider networks where no actual switch management is
  done. The "local_link_connection" field on ports is extended to
  support the "network_type" field.

* Target devices for software RAID can now be specified in the form
  of device hints (same as for root devices) in the "physical_disks"
  parameter of a logical disk configuration. This requires ironic-
  python-agent from the Ussuri release series.

* Adds a "root_prefix" parameter to the sushy context based on the
  path of "redfish_address". Defaults to sushy "root_prefix" default
  ("/redfish/v1/"). This is needed if the Redfish API is not located
  in the default "/redfish/v1/" endpoint.

* Adds support for bootable software RAID with UEFI boot mode.

* Passwords for "rescue" operation are now hashed for transmission
  to the "ironic-python-agent". This functionality requires "ironic-
  python-agent" version "6.0.0".

  The setting "[conductor]rescue_password_hash_algorithm" now defaults
  to "sha256", and may be set to "sha256", or "sha512".

Known Issues

* The "ansible" deployment interface does not support use of an
  "agent token" at this time.

Upgrade Notes

* The minimum supported version of "Ansible" is now "2.7". All
  support for previous Ansible versions is no longer maintained.

* The default value of "[deploy]/default_boot_option" is changed
  from "netboot" to "local".

* Due to the default boot option change, partition images without
  "grub2" will be unable to be deployed without the "boot_option" for
  the node to be explicitly set to "netboot".

* The required minimum version of the "sushy" python Redfish API
  client library is now version "3.2.0".

* Removes compatibility with deploy interfaces that do not use
  deploy steps.

* The "[pxe]ip_version" setting may no longer be required depending
  on neutron integration.

* Operators that used the "[DEFAULT]my_ip" setting with an IPv6
  address may wish to explore migrating to the "[DEFAULT]my_ipv6"
  setting. Setting both values enables the appropriate IP addresses
  based on protocol version for PXE/iPXE.

* If "[DEFAULT]force_raw_images" is set to "true", then MD5 will not
  be utilized to recalculate the image checksum. This requires the
  "ironic-python-agent" ramdisk to be at least version 3.4.0.

* Debug logging control has been moved to the "[ipmi]debug"
  configuration setting as opposed to the "conductor" "[DEFAULT]debug"
  setting as the existing "ipmitool" output can be extremely
  misleading for users. Operators who wish to continue to log
  "ipmitool" verbose output in their logs should explicitly set the
  "[ipmi]debug" command to True.

* The dependency on "oslo.i18n" is now optional. If you would like
  messages from ironic to be translated, you need to install it

* The guru meditation reporting functionality is now optional and
  the "oslo.reports" package is no longer a part of requirements.
  Install it manually if you need this feature.

* The configuration option "[pxe]ipxe_enabled" was deprecated and
  now has been removed, thus the support for iPXE from the "pxe"
  interface was removed. To use iPXE, the boot interface should be
  migrated to "ipxe" or other boot interfaces capable of booting from

Deprecation Notes

* Some deploy interfaces use the "continue_node_deploy" RPC call to
  notify the conductor when they're ready to leave the "deploy" core
  deploy step. Currently ironic allows a node to be either in "wait
  call-back" or "deploying" state when entering this call. This is
  deprecated, and in the next release a node will have to be in the
  "wait call-back" ("DEPLOYWAIT") state for this call.

Security Issues

* Image checksum recalculation when images are forced to raw images,
  are now calculated using "SHA3-256" if MD5 was selected. This is now

* Operators wishing to enforce all rescue passwords to be hashed
  should use the "[conductor]require_rescue_password_hashed" setting
  and set it to a value of "True".

  This setting will be changed to a default of "True" in the Victoria
  development cycle.

* The secret token that is used for IPA verification will be
  generated using the secrets module to be in compliance with the
  "FIPS 140-2" standard.

Bug Fixes

* Fixes an issue with the agent client code where checks of the
  agent command status had no logic to prevent an intermittent or
  transient connection failure from causing the entire operation to

* Fixes 'Invalid parameter value for SpanLength' when configuring
  RAID using Python 3. This passed incorrect data type to iDRAC, e.g.,
  instead of *2* it passed *2.0*. See story 2004265

* Fixes RAID configuration using *idrac-wsman* RAID interface where
  node remains in 'clean wait' provisioning state forever. See story
  2007567 (https://storyboard.openstack.org/#!/story/2007567).

* Fixes an issue where a node may be locked from changes if a
  conductor's hostname case is changed before restarting the conductor

* Fixes an issue in the "ironic-python-agent" client code where a
  command exception may not be captured in the interaction with the
  agent rest API. The client code would return the resulting error
  message and a static error code. We now look with-in the error to
  detect if the error may be a compatability error to raise the
  appropriate exception for fallback logic to engage.

* Improves interoperability with Redfish BMCs by untying node boot
  mode change from other boot parameters change (such as boot device,
  boot frequency).

* Fixes vague node "last_error" field reporting upon deploy step
  failure by providing the exception error message in addition to the
  step that failed.

* The 'no address available' problem seen when network booting on
  DHCPv6-stateful networks is fixed with the support for allocating
  multiple IPv6 addresses. See bug: 1861032

* Fixes an agent command issue in the bootloader installation
  process that can present itself as a connection timeout under heavy
  IO load conditions. Now installation commands have an internal
  timeout which is double the conductor wide "[agent]command_timeout".
  For more information, see bug 2007483

* Use SHA256 for comparing file contents instead of MD5. This
  improves FIPS compatibility.

* Fixes a bug in the "idrac" hardware type where when creating one
  or more virtual disks on a RAID controller that supports passthru
  mode (PERC H730P), the cleaning step would finish before the job to
  create the virtual disks actually completed. This could result in
  the client attempting to perform another action against the iDRAC
  that creates a configuration job, and that action would fail since
  the job to create the virtual disk would still be executing. This
  patch fixes this issue by only allowing the cleaning step to finish
  after the job to create the virtual disk completes. See bug bug
  2007285 (https://storyboard.openstack.org/#!/story/2007285) for more

* Certain RAID controllers (PERC H730P) require physical disks to be
  switched from non-RAID (JBOD) mode to RAID mode to be included in a
  virtual disk.  When this conversion happens, the available free
  space on the physical disk is reduced due to some space being
  allocated to RAID mode housekeeping. If the user requests a virtual
  disk (a RAID 1 for example) with a size close to the max size of the
  physical disks when they are in JBOD mode, then creation of the
  virtual disk following conversion of the physical disks from JBOD to
  RAID mode will fail since there is not enough space due to the space
  used by RAID mode housekeeping. This patch works around this issue
  by recalculating the RAID volume size after physical disk conversion
  has completed and the free space on the converted drives is known.
  Note that this may result in a virtual disk that is slightly smaller
  than the requested size, but still the max size that the drives can
  support. See bug bug 2007359
  (https://storyboard.openstack.org/#!/story/2007359) for more details

* Fixes state report via Guru Meditation Reports that did not work
  previously because of empty "log_dir" and no way to configure this
  configuration option.

* Fixed a bug where rebooting a node managed by the "idrac" hardware
  type when using the WS-MAN power interface sometimes fails with a
  "The command failed to set RequestedState" error.  See bug 2007487
  (https://storyboard.openstack.org/#!/story/2007487) for details.

* If a node is in mid-deployment or cleaning and its conductor dies,
  ironic will move that node into a failed state. However, this wasn't
  being done if those nodes were also in maintenance. This has been
  fixed. See story 2007098
  (https://storyboard.openstack.org/#!/story/2007098) for more

* Now that HUAWEI ironic 3rd party CI is back, the "ibmc" hardware
  type driver is supported.

* Fixes an issue where a node may be locked from changes if a
  conductor's hostname case is changed before restarting the conductor
  service. clean up the reservation once the conductor stopped.

* Renames misleadingly named "images.create_isolinux_image_for_uefi"
  function into "images.create_esp_image_for_uefi". The new name
  reflects what's actually going on under the hood.

Other Notes

* The "[conductor]power_state_change_timeout" default value has been
  extended to "60" seconds from "30" seconds. This is due to some API
  interfaces with Redfish, may cache the power state and thus may take
  longer than thirty seconds to update after a change has been
  requested. Please see here (https://github.com/metal3-io/ironic-
  image/issues/143) for more information.

* The rootwrap filter file called "ironic-lib.filters" is no longer
  part of Ironic. The same file is available from the ironic-lib
  module which is already an install requirement.

Changes in ironic 14.0.0..15.0.0

1bb5e80ae Add ironic-python-agent-builder to grenade projects and use netboot
753bb1907 Update python-dracclient version
b417d0ffa Don't break UEFI install with older IPAs
2007fa64d Fix supported sushy-oem-idrac version
66a0533d0 Implements: Reactive HUAWEI ibmc driver
bfeef067a Fix agent_client handling of embedded errors
524f8aa79 In-band deploy steps: correctly wipe driver_internal_info
5950b7041 Restore missing node.save() in agent_base.py
5cb4bd613 Add link to other Redfish parms to iDRAC doc
b49319137 Log when IPA fallback occurs on bootloader install
2e276459b Delay validating deploy templates until we get all steps
4795c4a8b Support executing in-band deploy steps
805e004e9 Upgrade flake8-import-order version to 0.17.1
6397777ea Stop configuring install_command in tox.
f8f9740a0 Prepare release notes/docs for 15.0 release
04931a16e Ironic 15.0 prelude
7f814058f DRAC: Added redfish management interface issue
27a0b54b6 Fix SpanLength calculation for DRAC RAID configuration
519edb48f Fix RAID configuration with idrac-wsman interface
03a927cab Revert "Generalize ISO building for virtual media driver"
ced3e7a8e Add ironic 15.0 release mapping
dcc049768 Fixes unusable Guru meditation report
fb7d8ce57 Don't use wsme test webapp for patch tests
dffc71287 Centralise imports of wsme types
3a58d81f6 Update iDRAC doc about soft power off timeout
cb86bd308 Implement the bios-interface for idrac-wsman driver
ff2030ce9 Improve the command status checks in the agent's process_next_step
6a73f7fdd Change [deploy]/default_boot_option to local
b63403606 Update iDRAC doc about vendor passthru timeout
cc29461d2 Use trailing slash in the agent command URL
36944fa39 Fix missing print format in log messages
0587df6e4 Extend timeout on CI job with automated cleaning
95a3e1bdf Fix issue where server fails to reboot
9f75bbd93 Add my new address to .mailmap
cf412bc81 "dual stack" support for PXE/iPXE
c4d9984c5 Generalize ISO building for virtual media driver
4f62e8e87 Remove six minions
1f18a2820 Increase VM RAM value in local.conf example
861f35b03 Release reservation when stoping the ironic-conductor service
45a9fbdfa Update jobs description
927d3c89f Change default ram value
d6361bee0 Added node multitenancy doc
d4dbc6e3a Support burning configdrive into boot ISO
81b93abf2 [doc] Remove the device selection limitation for Software RAID
335895a8e Add sushy-cli to client libraries release list
78f904978 Fix AttributeError in check allowed port fields
c428a51dd Fix gunicorn name on Py3 at CentOS7 in devstack
602a467a0 Add node lessee field
65b5ac6a7 Software RAID: Pass the boot mode to the IPA
d150aa287 Refactor AgentBase.heartbeat and process_next_step
dd5adf68a [doc] Images need some metadata for software RAID
855b654cb Drop netaddr - use netutils.is_valid_ipv6()
d9db0b454 Allow INSPECTWAIT state for lookup
aad54c245 Improve `redfish` set-boot-device behaviour
5be4c4f5c Improve `redfish` set-boot-mode implementation
30f2f0c08 Change multinode job to voting
163c8346a Cleanup Python 2.7 support
d15d2f09f Use auth values from neutron conf when managing Neutron ports
566461954 Fetch netmiko session log
69739715c Doc - IPv6 Provisioning
cb3185274 Additional IP addresses to IPv6 stateful ports
c40d221fc Add network_type to port local_link_connection
1d9c8283b Make oslo.i18n an optional dependency
9f93694b9 Make oslo.reports an optional dependency
d5c293a44 Do not autoescape all Jinja2 templates
6a1d453ef Make deploy step failure logging indicate the error
1faa3397a Fix the remaining hacking issues
a3d7d73a6 Bump hacking to 3.0.0
4829df296 Extend install_bootloader command timeout
80cdb9abd Document deploy_boot_mode and boot_option for standalone deployments
80e49538c Remove future usage
6c6dd2c84 Fix enabled_hardware_types from idrac-wsman to idrac
88d489a53 Document our policies for stable branches
242775ae1 Retry agent get_command_status upon failures
b6136e13f Add troubleshooting on IPMI section
bc654814f Default IRONIC_RAMDISK_TYPE to dib
16bce7f18 Generalize clean step functions to support deploy steps
8e472a07b Raise human-friendly messages on attempt to use pre-deploy steps drivers
fcaefdbe7 Hash the rescue_password
84e8b11a6 DRAC: Fix a failure to create virtual disk bug
35b77ddb3 [doc] Add documentation for retirement support
5b07374fd Add info on how to enable ironic-tempest-plugin
f359d1841 Follow-up releasenote use_secrets
263fd021b Add indicators REST API endpoints
1425adbb0 Do not use random to generate token
deca07de3 Signal agent token is required
bee537a4a Support centos 7 rootwrap data directory
8dc2eebef Refactoring: split out wrap_ipv6
fb79ea2c4 Refactoring: move iSCSI deploy code to iscsi_deploy.py
6e9901583 Clean up nits from adding additional node update policies
cc1632a82 Allow specifying target devices for software RAID
9fd0aa859 Documentation clarifications for software RAID
bfb41571b Drop rootwrap.d/ironic-lib.filters file
cc17246d2 Expand user-image doc
1e514b644 Move ipmi logging to a separate option
31439718c Change readfp to read_file
fbf92e612 Make image_checksum optional if other checksum is present
529c3ff06 Remove compatibility with pre-deploy steps drivers
4383303df Extend power sync timeout for Ericsson SDI
2b3bef7d1 Skip clean steps from 'fake' interfaces in the documentation
8377e1a06 Rename ironic-tox-unit-with-driver-libs-python3
3d2d04c84 Send our token back to the agent
6121fbf10 Enable agent_token for virtual media boot
16a2473b8 Add separate policies for updating node instance_info and extra
5cb69916c Follow up to console port allocation
06c599726 Change force_raw_images to use sha256 if md5 is selected
ae3a14e65 Make reservation checks caseless
7a15df60c [doc] Missing --name option
823a01688 Bump minimum supported ansible version to 2.7
2293c7dfa Set abstract for ironic-base
4d3f1b40e Refactoring: move generic agent clean step functions to agent_base
530ec9d0b Docs: split away user image building and highlight whole disk images
3f3fc7dca Redfish: Add root_prefix to Sushy
5cebea361 Cleanup docs building
9be7380e1 Rename `create_isolinux_image_for_uefi` function as misleading
34d34b3a9 Finalize removal of ipxe_enabled option
6ba983b61 Start removing ipxe support from the pxe interface
bb3b2349f Pre-shared agent token
5e4a617b4 DRAC: Fix RAID create_config clean step
8b9349d47 Expose allocation owner to additional policy checks
7cb251716 Project Contributing updates for Goal
5ffef36fd Refactoring: rename agent_base_vendor to agent_base
8982ef574 Use FIPS-compatible SHA256 for comparing files
263c3c607 Revert "Move ironic-standalone to non-voting"
e1e89f883 Move ironic-standalone to non-voting
c99347fae Make `redfish_system_id` property optional
caa73a110 Lower tempest concurrency
dc6f92c97 Refactoring: finish splitting do_node_deploy
b3721ce4f Automatic port allocation for the serial console
4ac3cfbf5 Remove the [pxe]ipxe_enabled configuration option
8be57492f [Trivial] Remove redundant brackets
b44eb6f34 Fix bash comparisons for grenade multinode switch
dd18c7054 Nodes in maintenance didn't fail, when they should have
70709648d Implement managed in-band inspection boot for ilo-virtual-media

Diffstat (except docs and test files)

.mailmap                                           |   1 +
CONTRIBUTING.rst                                   |  10 +-
api-ref/source/baremetal-api-v1-nodes.inc          |  19 +
api-ref/source/conf.py                             |  26 +-
api-ref/source/parameters.yaml                     |   6 +
api-ref/source/samples/node-create-response.json   |   1 +
api-ref/source/samples/node-show-response.json     |   1 +
.../samples/node-update-driver-info-response.json  |   1 +
.../samples/nodes-list-details-response.json       |   2 +
devstack/lib/ironic                                |  49 +-
devstack/upgrade/upgrade.sh                        |   2 +-
...ode-contribution-guide.rst => contributing.rst} | 125 ++-
driver-requirements.txt                            |   8 +-
etc/ironic/rootwrap.d/ironic-lib.filters           |  28 -
ironic/api/controllers/base.py                     |  10 +-
ironic/api/controllers/link.py                     |   5 +-
ironic/api/controllers/v1/allocation.py            |  81 +-
ironic/api/controllers/v1/bios.py                  |  11 +-
ironic/api/controllers/v1/chassis.py               |  12 +-
ironic/api/controllers/v1/collection.py            |   5 +-
ironic/api/controllers/v1/conductor.py             |  13 +-
ironic/api/controllers/v1/deploy_template.py       |  34 +-
ironic/api/controllers/v1/driver.py                |  20 +-
ironic/api/controllers/v1/node.py                  | 435 ++++++++---
ironic/api/controllers/v1/notification_utils.py    |   6 +-
ironic/api/controllers/v1/port.py                  |  63 +-
ironic/api/controllers/v1/portgroup.py             |  38 +-
ironic/api/controllers/v1/ramdisk.py               |  56 +-
ironic/api/controllers/v1/types.py                 |  65 +-
ironic/api/controllers/v1/utils.py                 | 119 ++-
ironic/api/controllers/v1/versions.py              |  14 +-
ironic/api/controllers/v1/volume.py                |   8 +-
ironic/api/controllers/v1/volume_connector.py      |  26 +-
ironic/api/controllers/v1/volume_target.py         |  28 +-
ironic/api/types.py                                |  29 +
ironic/api/wsgi.py                                 |   2 +-
ironic/cmd/__init__.py                             |   2 +-
ironic/cmd/api.py                                  |  16 +-
ironic/cmd/conductor.py                            |  30 +-
ironic/cmd/dbsync.py                               |   2 -
ironic/cmd/status.py                               |   1 +
ironic/common/driver_factory.py                    |  16 +-
ironic/common/exception.py                         |   8 +-
ironic/common/glance_service/service_utils.py      |   4 +-
ironic/common/i18n.py                              |  19 +-
ironic/common/images.py                            | 160 +++-
ironic/common/neutron.py                           | 110 ++-
ironic/common/policy.py                            |  54 +-
ironic/common/pxe_utils.py                         |  68 +-
ironic/common/release_mappings.py                  |  24 +-
ironic/common/states.py                            |  15 +-
ironic/common/utils.py                             |  18 +-
ironic/conductor/allocations.py                    |   2 +-
ironic/conductor/base_manager.py                   |  17 +-
ironic/conductor/cleaning.py                       |   5 +
ironic/conductor/deployments.py                    | 215 +++---
ironic/conductor/manager.py                        | 374 ++++++---
ironic/conductor/rpcapi.py                         | 109 ++-
ironic/conductor/steps.py                          |  69 +-
ironic/conductor/task_manager.py                   |   4 +-
ironic/conductor/utils.py                          | 185 ++++-
ironic/conf/agent.py                               |   6 +-
ironic/conf/conductor.py                           |  14 +-
ironic/conf/console.py                             |   7 +
ironic/conf/default.py                             |  26 +-
ironic/conf/deploy.py                              |   8 +-
ironic/conf/ipmi.py                                |   6 +
ironic/conf/neutron.py                             |  10 +
ironic/conf/pxe.py                                 |  16 +-
...7122cc9_add_extra_column_to_deploy_templates.py |   6 +-
.../5674c57409b9_replace_nostate_with_available.py |   8 +-
.../versions/b2ad35726bb0_add_node_lessee.py       |  32 +
.../cd2c80feb331_add_node_retired_field.py         |   6 +-
ironic/db/sqlalchemy/api.py                        |  17 +-
ironic/db/sqlalchemy/models.py                     |   7 +-
ironic/dhcp/base.py                                |  12 +-
ironic/dhcp/neutron.py                             |  48 +-
ironic/drivers/base.py                             |   2 +-
ironic/drivers/drac.py                             |   6 +
ironic/drivers/ibmc.py                             |   2 -
ironic/drivers/modules/agent.py                    |  88 +--
.../{agent_base_vendor.py => agent_base.py}        | 820 +++++++++++++-------
ironic/drivers/modules/agent_client.py             | 203 ++++-
ironic/drivers/modules/ansible/deploy.py           |  14 +-
.../playbooks/callback_plugins/ironic_log.py       |   2 +-
ironic/drivers/modules/console_utils.py            |  66 +-
ironic/drivers/modules/deploy_utils.py             | 403 +---------
ironic/drivers/modules/drac/bios.py                | 376 +++++++++
ironic/drivers/modules/drac/power.py               |  80 +-
ironic/drivers/modules/drac/raid.py                | 143 +++-
ironic/drivers/modules/ilo/boot.py                 |  25 +-
ironic/drivers/modules/ilo/management.py           |  10 +-
ironic/drivers/modules/ilo/power.py                |   4 +-
ironic/drivers/modules/inspector.py                |   2 +-
ironic/drivers/modules/ipmitool.py                 |  48 +-
ironic/drivers/modules/ipxe.py                     | 300 --------
ironic/drivers/modules/irmc/boot.py                |   7 +
ironic/drivers/modules/iscsi_deploy.py             | 315 +++++++-
ironic/drivers/modules/network/common.py           |   2 +-
ironic/drivers/modules/network/flat.py             |   8 +-
ironic/drivers/modules/pxe.py                      | 293 +------
ironic/drivers/modules/pxe_base.py                 | 294 +++++++
ironic/drivers/modules/redfish/boot.py             |  72 +-
ironic/drivers/modules/redfish/inspect.py          | 123 +--
ironic/drivers/modules/redfish/management.py       |  49 +-
ironic/drivers/modules/redfish/utils.py            |  78 +-
ironic/drivers/modules/snmp.py                     |  21 +-
ironic/drivers/modules/storage/cinder.py           |   6 +-
ironic/drivers/modules/storage/external.py         |  12 +-
ironic/drivers/raid_config_schema.json             |   6 +-
ironic/hacking/checks.py                           |  15 +-
ironic/objects/node.py                             |  31 +-
.../unit/api/controllers/v1/test_allocation.py     |  76 +-
.../api/controllers/v1/test_deploy_template.py     |   2 +-
.../api/controllers/v1/test_notification_utils.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/ansible/test_deploy.py    |  23 -
.../drivers/modules/drac/test_periodic_task.py     |  37 +-
.../unit/drivers/modules/ilo/test_management.py    |  10 +-
.../drivers/modules/intel_ipmi/test_intel_ipmi.py  |  54 +-
.../unit/drivers/modules/network/test_common.py    |  12 +-
.../unit/drivers/modules/network/test_flat.py      |  26 +-
.../unit/drivers/modules/network/test_neutron.py   |  40 +-
.../unit/drivers/modules/redfish/test_boot.py      |  49 +-
.../drivers/modules/redfish/test_management.py     |  49 +-
.../unit/drivers/modules/redfish/test_utils.py     |  20 +
.../unit/drivers/modules/storage/test_cinder.py    |   7 +-
.../unit/drivers/modules/storage/test_external.py  |  12 +-
...est_agent_base_vendor.py => test_agent_base.py} | 841 +++++++++++++++------
.../unit/drivers/modules/test_agent_client.py      | 101 ++-
.../unit/drivers/modules/test_console_utils.py     |  41 +
.../unit/drivers/modules/test_deploy_utils.py      | 726 +-----------------
.../unit/drivers/modules/test_iscsi_deploy.py      | 594 ++++++++++++++-
lower-constraints.txt                              |  11 +-
.../run.yaml                                       |   3 +
playbooks/legacy/grenade-dsvm-ironic/run.yaml      |   5 +
.../notes/add-indicator-api-8c816b3828e6b43b.yaml  |   6 +
...gent-command-status-retry-f9b6f53a823c6b01.yaml |   6 +
.../agent-token-support-0a5b5aa1585dfbb5.yaml      |  19 +
...cation-added-owner-policy-c650074e68d03289.yaml |   7 +
.../notes/bug-2004265-cd9056868295f374.yaml        |   7 +
.../bug-2007567-wsman-raid-48483affdd9f9894.yaml   |   6 +
.../bump-min-ansible-ver-a78e7885c0e9d361.yaml     |   5 +
...s-conductor-restart-check-f70005fbf65f6bb6.yaml |   5 +
...ault-boot-option-to-local-8c326077770ab672.yaml |   8 +
...er-sync-timeout-extension-fa5e7b5fdd679d84.yaml |   9 +
..._embedded_ipa_error_codes-c8fdfaa9e6a1ed06.yaml |   9 +
.../console-port-allocation-bb07c43e3890c54c.yaml  |   9 +
...ontinue-node-deploy-state-63d9dc9cdcf8e37a.yaml |   9 +
.../decouple-boot-params-2b05806435ad21e5.yaml     |  10 +
.../notes/deploy-step-error-d343e8cb7d1b2305.yaml  |   6 +
.../deploy-steps-required-aa72cdf1c0ec0e84.yaml    |   4 +
...v6-stateful-address-count-0f94ac6a55bd9e51.yaml |  14 +
...onic-lib-rootwrap-filters-f9224173289c1e30.yaml |   6 +
.../notes/dual-stack-ironic-493ebc7b71263aaa.yaml  |  16 +
...nstall-bootloader-timeout-8fce9590bf405cdf.yaml |   8 +
releasenotes/notes/fifteen-0da3cca48dceab8b.yaml   |  11 +
.../notes/fips-hashlib-bca9beacc2b48fe7.yaml       |   4 +
.../fix-create-configuration-0e000392d9d7f23b.yaml |  15 +
...sion-before-raid-creation-ea1f7eb425f79f2f.yaml |  22 +
releasenotes/notes/fix-gmr-37332a12065c09dc.yaml   |   6 +
.../idrac-fix-reboot-failure-c740e765ff41bcf0.yaml |   7 +
...drac-wsman-bios-interface-b39a51828f61eff6.yaml |   8 +
.../ilo-managed-inspection-8b549c003224e011.yaml   |   6 +
...ksum-recalculation-sha256-fd3d5b4b0b757e86.yaml |  11 +
.../image_checksum_optional-381acf9e441d2a58.yaml  |   7 +
...e-redfish-set-boot-device-e38e9e9442ab5750.yaml |   7 +
.../notes/ipmi-debug-1c7e090c6cc71903.yaml         |  13 +
.../neutron-port-update-598183909d44396c.yaml      |   8 +
.../node-in-maintenance-fail-afd0eace24fa28be.yaml |   8 +
.../notes/node-lessee-4fb320a597192742.yaml        |   5 +
...tance-info-extra-policies-862b2a70b941cf39.yaml |   8 +
...ptional-redfish-system-id-3f6e8b0ac989cb9b.yaml |   9 +
.../notes/oslo-i18n-optional-76bab4d2697c6f94.yaml |   5 +
.../oslo-reports-optional-59469955eaffdf1d.yaml    |   6 +
...k-connection-network-type-71103d919e27fc5d.yaml |   7 +
.../notes/raid-hints-c27097ded0137f7c.yaml         |   7 +
.../reactive-ibmc-driver-d2149ca81a198090.yaml     |   5 +
.../redfish-add-root-prefix-03b5f31ec6bbd146.yaml  |   8 +
...rvation-on-conductor-stop-6ebbcdf92da57ca6.yaml |   6 +
.../remove-ipxe-enabled-opt-61d106f01c46acab.yaml  |   7 +
.../rename-iso-builder-func-46694ed6ded84f4a.yaml  |   6 +
.../software-raid-with-uefi-5b88e6c5af9ea743.yaml  |   4 +
...t_to_hash_rescue_password-0915927e41e6d845.yaml |  23 +
...secrets_to_generate_token-55af0f43e5a80b9e.yaml |   5 +
requirements.txt                                   |   6 +-
setup.cfg                                          |  10 +-
setup.py                                           |   8 -
test-requirements.txt                              |   5 +-
tools/check-releasenotes.py                        |   2 -
tools/config/ironic-config-generator.conf          |   1 +
tox.ini                                            |  19 +-
zuul.d/ironic-jobs.yaml                            |  95 ++-
zuul.d/legacy-ironic-jobs.yaml                     |   1 +
zuul.d/project.yaml                                |  28 +-
271 files changed, 11089 insertions(+), 5685 deletions(-)

Requirements updates

diff --git a/driver-requirements.txt b/driver-requirements.txt
index c9874f12f..b8d91d0bc 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -10 +10 @@ python-scciclient>=0.8.0
@@ -14 +14 @@ python-xclarityclient>=0.1.6
@@ -17 +17 @@ sushy>=2.0.0
@@ -23 +23 @@ python-ibmcclient>=0.1.0
diff --git a/requirements.txt b/requirements.txt
index fff36d71b..da87b3037 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6 +6 @@ SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT
-alembic>=0.8.10 # MIT
+alembic>=0.9.6 # MIT
@@ -13 +13 @@ python-glanceclient>=2.8.0 # Apache-2.0
-keystoneauth1>=3.15.0 # Apache-2.0
+keystoneauth1>=3.18.0 # Apache-2.0
@@ -24 +23,0 @@ oslo.rootwrap>=5.8.0 # Apache-2.0
-oslo.i18n>=3.15.3 # Apache-2.0
@@ -28 +26,0 @@ oslo.policy>=1.30.0 # Apache-2.0
-oslo.reports>=1.18.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index ab53cb70f..497bcdc99 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -4 +4 @@
-hacking>=1.0.0,<1.1.0 # Apache-2.0
+hacking>=3.0.0,<3.1.0 # Apache-2.0
@@ -12,0 +13 @@ iso8601>=0.1.11 # MIT
+oslo.reports>=1.18.0 # Apache-2.0
@@ -21 +22 @@ bashate>=0.5.1 # Apache-2.0
-flake8-import-order>=0.13 # LGPLv3
+flake8-import-order>=0.17.1 # LGPLv3

More information about the Release-announce mailing list