[release-announce] ironic 20.0.0 (yoga)

no-reply at openstack.org no-reply at openstack.org
Thu Feb 24 15:24:28 UTC 2022


We are excited to announce the release of:

ironic 20.0.0: OpenStack Bare Metal Provisioning

This release is part of the yoga release series.

The source is available from:

    https://opendev.org/openstack/ironic

Download the package from:

    https://tarballs.openstack.org/ironic/

Please report issues through:

    https://storyboard.openstack.org/#!/project/943

For more details, please see below.

20.0.0
^^^^^^


New Features
************

* The configuration options "enabled_power_interfaces" and
  "enabled_management_interfaces" are now empty by default. If left
  empty, their values will be calculated based on
  "enabled_hardware_types".

* The Bare Metal service is now capable of calculating the default
  value for any "enabled_***_interfaces" based on
  "enabled_hardware_types".

* Fast track mode can now be enabled or disabled per node:

     baremetal node set <node> --driver-info fast_track=true

* Adds support for "idrac-redfish" RAID and management clean steps
  to be run without IPA when disabling ramdisk during cleaning.

* Introduces a new explicit "instance_info" parameter "image_type",
  which can be used to distinguish between partition and whole disk
  images instead of a "kernel"/"ramdisk" pair.

  Adding "kernel" and "ramdisk" is no longer necessary for partition
  images if "image_type" is set to "partition" and local boot is used.

* Manually copying the initial grub config for grub network boot is
  no longer necessary, as this file is now written to the TFTP root
  directory on conductor startup. A custom template can be used to
  generate this file with config option "[pxe]initial_grub_template".

* The new "[glance] swift_account_prefix" parameter has been added.
  This parameter be set according to the "reseller_prefix" parameter
  in "proxy-server.conf" of Swift.

* Now the export configuration step from the "idrac-redfish"
  management interface does not export iDRAC BMC connection settings
  to avoid overwriting those in another system when using unmodified
  configuration mold in import step. For import step it is still
  possible to add these settings back manually.


Upgrade Notes
*************

* Bootloader installation failures are now fatal for whole disk
  images. Previously these failures were ignored to facilitate
  backwards compatibility with older Ironic Python Agents, however we
  can now rely on having a sufficiently modern IPA.

* The configuration option "[inspector]power_off" is now ignored for
  nodes that have fast-track enabled. These nodes are never powered
  off.

* Foreign keys are now enabled when SQLite is used as a database.


Bug Fixes
*********

* No longer validates boot interface parameters when adopting a node
  that uses local boot.

* Fixes pagination for the following collections:

     /v1/allocations
     /v1/chassis
     /v1/conductors
     /v1/deploy_templates
     /v1/nodes/{node}/history

  The "next" link now contains a valid URL.

* Fix Node Console Duplicate Sol Session. This patch adds "sol
  deactivate" action before start node console, to make sure the
  current console connection always a success. See story 2009762
  (https://storyboard.openstack.org/#!/story/2009762).

* Fixed an issue where duplicate extra DHCP options was passed in
  the port update request to the Networking service. The duplicate
  DHCP options caused an error in the Networking service and node
  provisioning would fail. See bug: 2009774
  (https://storyboard.openstack.org/#!/story/2009774).

* Fixed an issue where provisioning/cleaning would fail on IPv6
  routed provider networks. See bug: 2009773
  (https://storyboard.openstack.org/#!/story/2009773).

* Fixes validation of input argument "firmware_images" of "redfish"
  hardware type clean step "update_firmware". Now it validates the
  argument at the beginning of clean step. Prior to this fix issues
  were determined at the time of executing firmware update or not at
  all (for example, mistyping optional field 'wait').

* Fixes "redfish" hardware type "update_firmware" cleaning step to
  work with Sushy version 4.0.0 or greater.

* Fixes hardware type "redfish" RAID interface deploy steps when
  completion requires rebooting system for non-immediate configuration
  application. Prior to this fix, such nodes would remain in "wait
  call-back" state indefinitely.

* Fixes the determination of a failed RAID configuration task in the
  "redfish" hardware type. Prior to this fix, the tasks that have
  failed were reported as successful.

* Fixes an issue where clients would get a 404 due to the node
  pagination breaking at max_limit due to an uninitialised
  resource_url.

* Fixes an issue where clients would get a 404 due to the port and
  portgroups pagination breaking at max_limit due to an uninitialised
  resource_url.

* Fixes the "initrd" kernel parameter when booting ramdisk directly
  from Swift/RadosGW using iPXE. Previously it was always
  "deploy_ramdisk", even when the actual file name is different.

* Inspection no longer fails when one of the NICs reports NIC
  address that is not a valid MAC (e.g. a WWN).

* The image cache now respects the "Cache-Control: no-store" header
  for HTTP(s) images.

* File images are no longer cached in the image cache to avoid
  unnecessary consumption of the disk space.

* Services ("ironic", "ironic-api", "ironic-conductor") now
  correctly return a non-zero exit code on start-up failures.

* The "ironic" and "ironic-conductor" services now wait for the
  conductor manager to start before notifying systemd about the
  successful start-up.


Other Notes
***********

* The "fake-hardware" hardware types now explicitly declares support
  for all generic interface implementations, so that they can be used
  in the defaults calculation.

Changes in ironic 19.0.0..20.0.0
--------------------------------

7ac480412 Build the new cirros image even when netboot is the default
bbceca562 CI: use a custom cirros partition image instead of the default
3b6e54ca0 [doc][trivial] Fixing typos in RBAC documentation
538c3d3ff Fix release mapping (19.1 -> 20.0)
cfa47c54b Update some releasenotes for 19.1 release
a7cbf3f6a Add release mappings for 19.0 and 19.1 bugfix
f4f76e7fd iRMC: Fix instructions for boot interface
c975eaa8c Set correct initrd_filename for iPXE when using Swift
34a582a01 [trivial] Fix typo in policy error message
1f509c5bd Fix the benchmark job
f67bbeb9f Clean up jobs with legacy names
6f389138f Re-enable the standalone job
720b42d53 Avoid non-Stream CentOS and temporary disable the standalone job
a813c769e Explicit parameter to distinguish partition/whole-disk images
374d5e5a3 deploy_utils: only check glance for image properties kernel/ramdisk
365a4545f Fix DevStack plugin ipxe-snponly-x86_64.efi name
e851d6346 Add additional ramdisk tests
2c58ab370 Wait for conductor start before notifying systemd
e841fa054 Return non-zero exit code on failures
cde42678b Make account prefix of Swift confgurable
55144d3bd Fix resource_url in the remaining resources
69e6152ac Add idrac-redfish clean steps to not require ramdisk
a2160f13a Fix Node Console Duplicate Sol Session
ce6a28d0d Migrates docs from wiki
503e36582 Inspector: better error message on DiscoveryFailure
2ac740e09 Set resource_url when getting all ports or portgroups
69227c66c Set resource_url when getting all nodes
89cf1e7f6 Update idrac-redfish export configuration step
9308c0a0b Do not fail inspection on invalid MAC
b824ea7fa Fix validating input for redfish update_firmware
c3805b2be Use mtools mcopy in create_vfat_image
c4721da2d Add dhcp options for each ip_version once
7043a414a ImageCache: respect Cache-Control: no-store
3404dc913 Ensure 'port' is up2date after binding:host_id
6b5fcf8f4 [doc] Add note about shellinabox console enable error
e43791c64 [doc] Fix broken link in "Node Deployment"
ca6499b62 Make bootloader installation failures fatal for whole disk images
196d8f7fc Fix redfish RAID failed tasks
b66d371fd Use driver_internal_info methods for other drivers
c2d98c229 Use driver_internal_info methods for drac driver
6b7ede028 Use driver_internal_info methods for ilo driver
7047eb8db Use driver_internal_info methods for redfish driver
85c0dd492 Use driver_internal_info methods for driver utils
6fed0964a Fix Redfish RAID deploy steps
cfcea55cf Automatically configure enabled_***_interfaces
d4b99401a Derive FakeHardware from GenericHardware
454ad9566 Update RAID docs
f4c37bf11 Fix Mock objects as specs
4b93ecd5d Enable foreign keys in SQLite
4eb79f15f Re-add python 3.6/3.7 in classifier
17fda9145 [doc] Adoption with Nova
9076f185c Fix redfish update_firmware for newer Sushy
e37af4593 Document single process Ironic
d342b07dd Adoption: do not validate boot interface when local booting
3f76724df Write initial grub config on startup
45e8adc1d Move place_loaders_for_boot to boot driver __init__
00c056618 Ensure desired permissions on all written pxe files
82c8afb6a [doc] Add parameters for burn-in log files
24184a449 CI: reduce api worker processes to 1
2a6cdf4b2 Allow enabling fast-track per node
79311c88d Use more granular lock in BaseDriverFactory


Diffstat (except docs and test files)
-------------------------------------

bindep.txt                                         |   9 +-
devstack/files/bindep.txt                          |   4 +
devstack/lib/ironic                                |  84 ++++++----
devstack/tools/ironic/scripts/cirros-partition.sh  |  69 ++++++++
.../include/configure-ironic-singleprocess.inc     |  48 ++++++
driver-requirements.txt                            |   2 +-
ironic/api/controllers/v1/allocation.py            |   4 +-
ironic/api/controllers/v1/chassis.py               |   8 +-
ironic/api/controllers/v1/collection.py            |   8 +-
ironic/api/controllers/v1/conductor.py             |   2 +-
ironic/api/controllers/v1/deploy_template.py       |   1 +
ironic/api/controllers/v1/node.py                  |  22 +--
ironic/api/controllers/v1/port.py                  |  11 +-
ironic/api/controllers/v1/portgroup.py             |   7 +-
ironic/api/controllers/v1/ramdisk.py               |  15 +-
ironic/api/controllers/v1/volume_connector.py      |   2 +-
ironic/api/controllers/v1/volume_target.py         |   2 +-
ironic/cmd/api.py                                  |   2 +-
ironic/cmd/conductor.py                            |   8 +-
ironic/cmd/singleprocess.py                        |   7 +-
ironic/common/driver_factory.py                    | 128 +++++++++-----
ironic/common/glance_service/image_service.py      |   9 +-
ironic/common/image_service.py                     |   9 +-
ironic/common/images.py                            |  33 ++--
ironic/common/neutron.py                           |   3 +-
ironic/common/policy.py                            |   2 +-
ironic/common/pxe_utils.py                         |  46 ++++-
ironic/common/release_mappings.py                  |  42 ++++-
ironic/common/rpc_service.py                       |  22 +++
ironic/common/utils.py                             |  17 +-
ironic/conductor/base_manager.py                   |  35 +---
ironic/conductor/deployments.py                    |   8 +-
ironic/conductor/manager.py                        |  19 +--
ironic/conductor/utils.py                          |  25 ++-
ironic/conf/default.py                             |   4 +-
ironic/conf/glance.py                              |   5 +
ironic/conf/inspector.py                           |   3 +-
ironic/conf/pxe.py                                 |   5 +
ironic/db/sqlalchemy/__init__.py                   |  16 ++
ironic/dhcp/neutron.py                             |   6 +-
ironic/drivers/fake_hardware.py                    |  33 ++--
ironic/drivers/modules/agent.py                    |  17 +-
ironic/drivers/modules/agent_base.py               |  87 ++++------
ironic/drivers/modules/agent_power.py              |  18 +-
.../playbooks/roles/configure/tasks/main.yaml      |   4 +-
.../playbooks/roles/prepare/tasks/main.yaml        |   2 +-
ironic/drivers/modules/boot_mode_utils.py          |   8 +-
ironic/drivers/modules/deploy_utils.py             | 122 ++++++++------
ironic/drivers/modules/drac/bios.py                |  43 +++--
ironic/drivers/modules/drac/management.py          |  51 +++---
ironic/drivers/modules/drac/power.py               |   4 +-
ironic/drivers/modules/drac/raid.py                |  92 +++++-----
ironic/drivers/modules/ilo/bios.py                 |  20 +--
ironic/drivers/modules/ilo/boot.py                 |  28 +---
ironic/drivers/modules/ilo/common.py               |   8 +-
ironic/drivers/modules/ilo/management.py           |  22 +--
ironic/drivers/modules/ilo/raid.py                 |  24 +--
ironic/drivers/modules/image_cache.py              |  33 ++--
ironic/drivers/modules/initial_grub_cfg.template   |   7 +
ironic/drivers/modules/inspect_utils.py            |   7 +
ironic/drivers/modules/inspector.py                |  16 +-
ironic/drivers/modules/ipmitool.py                 |  31 ++--
ironic/drivers/modules/ipxe.py                     |   4 +
ironic/drivers/modules/irmc/bios.py                |   4 +-
ironic/drivers/modules/irmc/boot.py                |  20 +--
ironic/drivers/modules/irmc/management.py          |  11 +-
ironic/drivers/modules/master_grub_cfg.txt         |   7 -
ironic/drivers/modules/pxe.py                      |   7 +
ironic/drivers/modules/redfish/bios.py             |  23 ++-
ironic/drivers/modules/redfish/firmware_utils.py   |  58 +++++++
ironic/drivers/modules/redfish/management.py       |  18 +-
ironic/drivers/modules/redfish/raid.py             |  97 +++++------
ironic/drivers/utils.py                            |  17 +-
ironic/objects/node.py                             |  12 ++
.../unit/api/controllers/v1/test_allocation.py     |  16 +-
.../unit/api/controllers/v1/test_conductor.py      |  12 +-
.../api/controllers/v1/test_deploy_template.py     |  13 +-
.../unit/api/controllers/v1/test_portgroup.py      |   2 +
.../api/controllers/v1/test_volume_connector.py    |   2 +
.../unit/api/controllers/v1/test_volume_target.py  |   2 +
.../drivers/ipxe_config_boot_from_ramdisk.template |  47 ++++++
.../unit/drivers/modules/drac/test_management.py   |   2 +
.../unit/drivers/modules/ibmc/test_management.py   |  70 +++++---
.../drivers/modules/ilo/test_firmware_processor.py |  69 +++++---
.../unit/drivers/modules/network/test_noop.py      |   3 +-
.../drivers/modules/redfish/test_firmware_utils.py |  88 ++++++++++
.../drivers/modules/redfish/test_management.py     |  12 +-
.../unit/drivers/modules/redfish/test_raid.py      |  84 ++++++++++
.../unit/drivers/modules/test_agent_client.py      |  57 ++++---
.../unit/drivers/modules/test_deploy_utils.py      | 151 +++++++++++++----
.../unit/drivers/modules/test_inspect_utils.py     |   9 +-
.../unit/drivers/modules/xclarity/test_common.py   |   6 +-
.../notes/adopt-validation-7249ceb57016f0e4.yaml   |   5 +
releasenotes/notes/api-none-3fdca1ccbb64d9b0.yaml  |  12 ++
.../notes/auto-ifaces-fdb8c680eab711f4.yaml        |   9 +
.../bootloader-install-fatal-6f1b9fed1d2c0ee4.yaml |   7 +
.../notes/bug-2009762-403eac24c4823d2d.yaml        |   7 +
.../notes/fake-interfaces-9778071f6379227b.yaml    |   6 +
.../fast-track-per-node-1fc62918e03fd74a.yaml      |  10 ++
...plcate-extra-dhcp-options-4edb729cb5bcf552.yaml |   8 +
...g-routed-provider-network-bbd0c46559f618ac.yaml |   6 +
...irmware-images-validation-9b5b2fd28314ce66.yaml |   8 +
...-redfish-firmware-upgrade-7ef2fcb6bfd74e67.yaml |   5 +
...redfish-raid-deploy-steps-e9ee1ea3d1f2a475.yaml |   7 +
...redfish-raid-failed-tasks-02487c4698dea176.yaml |   6 +
...x_pagination_resource_url-42fb4023fde9da2b.yaml |   5 +
...nation_resource_url_ports-8d2696a6a7ab012f.yaml |   6 +
...steps-not-require-ramdisk-699e169af39b0dd6.yaml |   5 +
.../notes/image-type-ac259a90393bdd2c.yaml         |   9 +
.../notes/initial_grub-566688b16f773fcf.yaml       |   7 +
.../notes/initrd_filename-ac68e96f1c9fb576.yaml    |   6 +
.../notes/invalid-mac-b0e3d99f23afeb30.yaml        |   5 +
releasenotes/notes/no-cache-df7caa45f3d8b6d7.yaml  |   8 +
.../notes/service-exit-77bcf3a538fab4bc.yaml       |   5 +
.../notes/service-wait-e85cbe7978f61764.yaml       |   5 +
releasenotes/notes/sqlite-fk-8c87a308a02d49bf.yaml |   4 +
.../swift_account_prefix-dbc9e68890bff47c.yaml     |   6 +
...sh-management-export-conf-9fb17273c4d9a050.yaml |   9 +
releasenotes/source/icehouse.rst                   |  33 ++++
releasenotes/source/index.rst                      |   6 +-
releasenotes/source/juno.rst                       |  25 +++
releasenotes/source/kilo.rst                       |  64 +++++++
setup.cfg                                          |   2 +
tools/benchmark/generate-statistics.py             |   2 +
zuul.d/ironic-jobs.yaml                            |  20 +--
zuul.d/project.yaml                                |   8 +-
184 files changed, 2930 insertions(+), 1288 deletions(-)


Requirements updates
--------------------

diff --git a/driver-requirements.txt b/driver-requirements.txt
index ffcb3e2ab..5239fe73c 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -20 +20 @@ python-ibmcclient>=0.2.2,<0.3.0
-sushy-oem-idrac>=3.0.1,<4.0.0
+sushy-oem-idrac>=4.0.0,<5.0.0






More information about the Release-announce mailing list