[release-announce] ironic 18.1.0 (xena)

no-reply at openstack.org no-reply at openstack.org
Thu Jul 22 13:19:29 UTC 2021


We are overjoyed to announce the release of:

ironic 18.1.0: OpenStack Bare Metal Provisioning

This release is part of the xena 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.

18.1.0
^^^^^^


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

* The anaconda deploy interface now handles config drive. The config
  drive contents are written to the disk in the
  /var/lib/cloud/seed/config_drive directory by the driver via
  kickstart files %post section. cloud-init picks up the the config
  drive information and processes them. Because the config drive is
  extracted on to disk as plain text files, tools like glean do not
  work with this deploy interface.

* The configuration option "[deploy]ramdisk_image_download_source"
  now supports a new value "swift". If set, and if "boot_iso" or
  "deploy_iso" is a Glance image, the image is exposed via a Swift
  temporary URL. For other types of images the new value works the
  same way as the existing "http" value.

* The "ilo-virtual-media" deploy interface now supports "file:///"
  URLs for "boot_iso" and "deploy_iso".

* The "ilo-virtual-media" deploy interface now supports the
  "[deploy]ramdisk_image_download_source" configuration option.

* Adds "boot_mode" and "secure_boot" fields to node. These indicate
  the boot mode (bios/uefi) and secure boot state (True/False)
  detected in the most recent power sync or during transition to the
  "manageable" state. If underlying driver does not support detecting
  these, they shall be populated with null values. These fields are
  also available under a node's states endpoint: *
  "/v1/nodes/{node_ident}/states"

* For the "ramdisk" deploy interface, the
  "ramdisk_image_download_source" option can now be provided in the
  node's "instance_info" in addition to the global configuration.

* Provides new vendor passthru methods for Redfish to create, delete
  and get subscriptions for BMC events.


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

* The query pattern for the database when lists of nodes are
  retrieved has been changed to a more efficient pattern at scale,
  where a list of nodes is generated, and then additional queries are
  executed to composite this data together. This is from a model where
  the database client in the conductor was having to deduplicate the
  resulting data set which is overall less efficent.

* The default UEFI iPXE bootloader, "[pxe]uefi_ipxe_bootfile_name"
  used by the "ipxe" boot interface, has been changed from "ipxe.efi"
  to "snponly.efi". This is because most deployments actually need to
  use "snponly.efi" as it contains support for the UEFI integrated
  network stack, where as "ipxe.efi" does not and only contained
  compiled in network drivers, for UEFI, there happen to be few as the
  UEFI standard requires networking to be handled by the UEFI
  firmware.

* Since "ilo-virtual-media" deploy interface now respects the
  "[deploy]ramdisk_image_download_source" configuration options, its
  default caching behavior has changed. Now HTTP
  "boot_iso"/"deploy_iso" are cached locally and served from the
  conductor's HTTP server instead of passing them directly to the BMC.
  Glance images are also cached locally. To revert to the previous
  behavior, set the "[deploy]ramdisk_image_download_source" option to
  "swift".

* The minimum requirement for the "oslo.db" library is now version
  9.1.0 to address duplicate key error changes in MySQL 8.0.19.
  oslo.db version 9.1.0 fixes issue of idrac driver node inspection
  for inspect interface as idrac-redfish. Issue was introduced since
  MySQL 8.0.19 where duplicate key error information is extended to
  include the table name in the key.

  For more information, see story 2008901
  (https://storyboard.openstack.org/#!/story/2008901).


Deprecation Notes
*****************

* The "driver_info" property "ilo_boot_iso" has been renamed to just
  "boot_iso".

* The following "driver_info" parameters have been renamed with
  deprecation:

  * "ilo_deploy_kernel" -> "deploy_kernel"

  * "ilo_deploy_ramdisk" -> "deploy_ramdisk"

  * "ilo_deploy_iso" -> "deploy_iso"

  * "ilo_rescue_kernel" -> "rescue_kernel"

  * "ilo_rescue_ramdisk" -> "rescue_ramdisk"

  * "ilo_rescue_iso" -> "rescue_iso"

  * "ilo_bootloader" -> "bootloader"

* The "driver_info" properties "irmc_deploy_iso" and
  "irmc_rescue_iso" have been renamed to just "deploy_iso" and
  "rescue_iso".

* The "instance_info" property "irmc_boot_iso" has been renamed to
  just "boot_iso".

* The "[pxe]ip_version" setting has been deprecated and is
  anticipated to be removed in the Y* release of OpenStack. This
  option effectively has had no operational impact since the Ussuri
  release of OpenStack where dual stack IPv4 and IPv6 support was
  added to Ironic.


Critical Issues
***************

* Fixes upgrade failure caused by the missing version of
  "BIOSSetting" database objects.


Security Issues
***************

* Fixes an issue with the "/v1/nodes/detail" endpoint where an
  authenticated user could explicitly ask for an "instance_uuid"
  lookup and the associated node would be returned to the user with
  sensitive fields redacted in the result payload if the user did not
  explicitly have "owner" or "lessee" permissions over the node. This
  is considered a low-impact low-risk issue as it requires the API
  consumer to already know the UUID value of the associated instance,
  and the returned information is mainly metadata in nature. More
  information can be found in Storyboard story 2008976
  (https://storyboard.openstack.org/#!/story/2008976).


Bug Fixes
*********

* Skips port creation during redfish inspect for devices reported
  without a MAC address.

* Fixes potential cache coherency issues by caching the AgentClient
  per task, rather than globally.

* Fixes an issue with the "/v1/nodes/detail" endpoint where requests
  for an explicit "instance_uuid" match would not follow the standard
  query handling path and thus not be filtered based on policy
  determined access level and node level "owner" or "lessee" fields
  appropriately. Additional information can be found in story 2008976
  (https://storyboard.openstack.org/#!/story/2008976).

* Slow database retrieval of nodes has been addressed at the lower
  layer by explicitly passing and handling only the requested fields.
  The result is excess discarded work is not performed, making the
  overall process more efficent. This is particullarly beneficial for
  OpenStack Nova's syncronization with Ironic.

* Fixes configuring Redfish RAID using "interface_type" when error
  "failed to find matching physical disks for all logical disks"
  occurs.

* The "ilo-virtual-media" deploy interface no longer requires the
  Image service backend to be Swift for Glance images in "boot_iso"
  and "deploy_iso".

* Improves record retrieval performance for baremetal nodes by
  enabling ironic to not make redundant calls as part of generating
  API result sets for the baremetal nodes endpoint.

* Fixes handling of single-value (non-key-value) parameters in the
  "[inspector]extra_kernel_params" configuration options.

* Allows reboot to hard disk following iso ramdisk deploy. Re-uses
  the "force_persistent_boot_device" driver_info option which can be
  set to "Never" in order to set the virtual media to one time boot.

* The "ramdisk" deploy interface no longer requires a fake
  "image_source" value to be provided when "boot_iso" is not used.

* Removes unused local images after ejecting a virtual media device
  via the "eject_vmedia" vendor passthru call of the "redfish" vendor
  interface.

* In Redfish RAID clean and deploy steps skip non-RAID storage
  controllers for RAID operations. In Redfish systems that do not
  implement "SupportedRAIDTypes" they are still processed and could
  result in unexpected errors.

* Fixes an issue of powering off with the "idrac-wsman" management
  interface while the execution of a clear job queue cleaning step is
  proceeding. Prior to this fix, the clean step would fail when
  powering off a node.

* Fixes issue arose during inspection of iDRAC node with inspect-
  interface as idrac-redfish. Earlier, inspection of node was getting
  failed with error "port already exists". This issue arose since
  MySQL 8.0.19 where duplicate key error information is extended to
  include the table name in the key. Previously, duplicate key error
  information included only the key value and key name.

  For more information, see story 2008901
  (https://storyboard.openstack.org/#!/story/2008901).

* Fixes overriding "agent_verify_ca" with "False" via "driver_info".


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

* The default database query pattern has been changed which will
  result in additional database queries when compositing lists of
  "nodes" by separately querying "traits" and "tags". Previously this
  was a joined query which requires deduplication of the result set
  before building composite objects.

* Deprecation warnings for the legacy RBAC policies are now
  suppressed, as the OpenStack community is coalescing around what
  appears will be a longer deprecation cycle and process than would
  typcially be undertaken due to the nature and impact of policy
  changes. The community as a whole is expecting to make RBAC policy
  work changes a community goal during the Y* release development
  cycle, which means the earliest legacy policy support may be removed
  is likely now the Z* development cycle.

Changes in ironic 18.0.0..18.1.0
--------------------------------

a2417571b Update vendor_passthru subscriptions releasenote
f095a9478 Prepare 18.1 and clean up release notes
4bc5142df Add vendor_passthru method for subscriptions
b5872c903 Set glance limit for baremetal friendly images
2cd646834 Scoped RBAC Devstack Plugin support
e488792cc Burn-in: Add documentation
58ca01c22 Add a section to redfish doc for BIOS registry fields
3199d289b Fix iPXE docs: snponly is not always available
06124bae7 Update requirements
e503048f0 Sanity check object version changes
3bad548ce Allow reboot to hard disk following iso ramdisk deploy.
ae535bac2 Add ipxe ramdisk kernel append param test
fdef42fee Update iDRAC virtual media boot known issue
46ff51487 Add `boot_mode` and `secure_boot` to node object and expose in api
7e5e65550 Add missing BIOSSettings version mapping for older releases
9e477d178 Fix typos in API sanitization change notes
d3737b23b Bring boot_iso/deploy_iso handling in iLO closer to Redfish
6bbd03b17 Use selectinload for all list queries
da27e370b Clean up images when ejecting an ISO with Redfish
9851b68ee Allow node_sanitize function to be provided overrides
c830861ee Avoid double file removal in create_boot_iso
85212fead Add note regarding configuration drives to tuning docs
8cb605745 Support "swift" for ramdisk_image_download_source
ad3ce797c Defer checking image size until instance info is built
34337f75f Fix oslo policy DeprecatedRule warnings
4ac8340fb Add support for configdrive in anaconda interface
24901e456 Add reno and reset legacy policy deprecation expectation
bb0523f03 [doc] Bootloader reinstallations on Software RAID
4e5073390 [doc] Update section on ESP consistency
c41ed8414 Fix Redfish RAID interface_type physical disk hint
67ff5ff2b Suppress policy deprecation and default change warnings
0cc6d8204 Skip port create if MAC is blank
d8ccfabda Ramdisk: do not require image_source
1d6441cc3 Refactor deploy_utils.validate_image_properties
c779be9f7 Redfish: Skip non-RAID controllers for RAID
b2a249d18 Deprecate [pxe]ip_version parameter
e3a4c7d77 Upgrade oslo.db version
741a4d8a8 Update the clear job id's constant
87e42afb9 API to pass fields to node object list
7b37e03b6 Set stage for objects to handle selected field lists.
644ba5d4b Only return the requested fields from the DB
fcb6a1096 Cache AgentClient on Task, not globally
4d13da9cc Change UEFI ipxe bootloader default
4dc192015 Refactor: untie IloVendor from validate_image_properties
ce5baa380 Fix handling driver_info[agent_verify_ca] == False
d7a5b3469 Fix ramdisk boot option handling
f8e2bc99d Allow ramdisk_image_download_source in instance_info for ramdisk deploy
ebb314bf4 Nicer error message when a deploy step fails
5a8a77ec5 Don't run the inspector job on changes to inspector tests
4f2d1ca94 CI: change ilo_deploy_iso to deploy_iso
be3c153d5 Fix node detail instance_uuid request handling
fc27710fa Clean up vendor prefixes for iRMC boot
595345ffc Add documentation for anaconda deploy interface
df228c5b9 Fix typos in inspection docs
f91915d4c Remove redundant/legacy is_admin logic
2c3470353 Split a community page out of the contributor docs
50b84c9ae Document managed inspection
fd7cde9b9 dhcp-less: mention how to provide network_data to instance
7507dec09 Use env to find python3
e84b6d102 Rename ilo_boot_iso -> boot_iso
349bf2d5b Clean up vendor prefixes for iLO boot
3824912f0 Handle non-key-value params in [inspector]extra_kernel_params
f58cbf151 Fix ironic-status db index check
728edb6b7 Changes made to enrollment documentation
0a8ebdfc5 Update Redfish RAID disk_type unit test
4b29f2b95 Redfish: Get only RAID controller's physical disks
96aae720a Improve agent_client logging
2fabd3b7d Trivial: fix an outdated link
6a4e33eb0 Move provision states documentation to the user guide
39cd751a9 Refactor iDRAC OEM extension manager calls
57120615a Update CI jobs list and description in docs


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

.../source/baremetal-api-v1-node-management.inc    |   7 +-
api-ref/source/parameters.yaml                     |  31 +-
.../source/samples/node-get-state-response.json    |   2 +
devstack/lib/ironic                                | 141 ++--
devstack/upgrade/upgrade.sh                        |  10 +-
.../contributor/ironic-multitenant-networking.rst  |   3 +
driver-requirements.txt                            |   2 +-
ironic/api/controllers/v1/collection.py            |  13 +-
ironic/api/controllers/v1/node.py                  | 379 +++++++----
ironic/api/controllers/v1/utils.py                 |   2 +
ironic/api/controllers/v1/versions.py              |   4 +-
ironic/api/hooks.py                                |   3 -
ironic/cmd/status.py                               |  31 +-
ironic/common/context.py                           |   4 -
ironic/common/glance_service/service_utils.py      |   7 +-
ironic/common/images.py                            |  11 +-
ironic/common/kickstart_utils.py                   | 165 +++++
ironic/common/policy.py                            | 743 ++++++++++-----------
ironic/common/pxe_utils.py                         |   9 +-
ironic/common/raid.py                              |  10 +
ironic/common/release_mappings.py                  |  36 +-
ironic/common/utils.py                             |  16 +
ironic/conductor/deployments.py                    |   6 +-
ironic/conductor/manager.py                        |   4 +
ironic/conductor/steps.py                          |   8 +-
ironic/conductor/utils.py                          |  44 ++
ironic/conf/deploy.py                              |   5 +-
ironic/conf/pxe.py                                 |   8 +-
ironic/db/api.py                                   |   6 +-
.../c1846a214450_add_boot_mode_and_secure_boot.py  |  32 +
ironic/db/sqlalchemy/api.py                        | 162 ++++-
ironic/db/sqlalchemy/models.py                     |   3 +
ironic/drivers/modules/agent.py                    |  17 +-
ironic/drivers/modules/agent_base.py               |  31 +-
ironic/drivers/modules/agent_client.py             |  40 +-
ironic/drivers/modules/ansible/deploy.py           |   6 +-
ironic/drivers/modules/boot_mode_utils.py          |   3 +
ironic/drivers/modules/deploy_utils.py             |  97 ++-
ironic/drivers/modules/drac/boot.py                |  67 +-
ironic/drivers/modules/drac/inspect.py             |  46 +-
ironic/drivers/modules/drac/management.py          | 187 +-----
ironic/drivers/modules/drac/raid.py                |  43 +-
ironic/drivers/modules/drac/utils.py               | 121 ++++
ironic/drivers/modules/ilo/boot.py                 | 261 +++-----
ironic/drivers/modules/ilo/power.py                |  15 +-
ironic/drivers/modules/ilo/vendor.py               |   7 +-
ironic/drivers/modules/image_utils.py              |  43 +-
ironic/drivers/modules/inspector.py                |   6 +-
ironic/drivers/modules/irmc/boot.py                |  72 +-
ironic/drivers/modules/pxe.py                      |  13 -
ironic/drivers/modules/pxe_base.py                 |  13 +-
ironic/drivers/modules/redfish/boot.py             |  34 +-
ironic/drivers/modules/redfish/raid.py             |  38 +-
ironic/drivers/modules/redfish/utils.py            |  38 +-
ironic/drivers/modules/redfish/vendor.py           | 192 ++++++
ironic/drivers/utils.py                            |  22 +-
ironic/objects/base.py                             |   6 +-
ironic/objects/node.py                             |  67 +-
.../unit/drivers/modules/drac/test_inspect.py      |  27 -
.../unit/drivers/modules/drac/test_management.py   | 128 +---
.../unit/drivers/modules/redfish/test_boot.py      |  71 +-
.../unit/drivers/modules/redfish/test_inspect.py   |  15 +
.../unit/drivers/modules/redfish/test_raid.py      | 213 +++++-
.../unit/drivers/modules/redfish/test_utils.py     | 203 ++++--
.../unit/drivers/modules/redfish/test_vendor.py    | 257 +++++--
.../unit/drivers/modules/test_agent_client.py      |  22 +
.../unit/drivers/modules/test_deploy_utils.py      | 134 ++--
.../unit/drivers/third_party_driver_mock_specs.py  |   3 +
.../notes/bios-version-dfd5c95805c295c5.yaml       |   5 +
releasenotes/notes/blank-mac-f8e0b37e0bd6d719.yaml |   5 +
...ache-agentclient-per-task-ec2231684e6876d9.yaml |   5 +
...ss-pattern-for-node-lists-a333dd9c5afa737d.yaml |  16 +
.../change-ipxe-default-file-a9ed5e17fc3d022e.yaml |  10 +
...upport-in-anaconda-deploy-f2aad59b4ff809ec.yaml |   9 +
...ed-instance-info-behavior-1375914a30621eca.yaml |  20 +
...-field-overhead-reduction-40be1821e38b468c.yaml |   9 +
.../notes/deploy-iso-swift-355ad6eba6c511b4.yaml   |   8 +
...dfish-raid-interface-type-4b3566b637cc2301.yaml |   5 +
.../notes/ilo-boot-iso-696b57f44f29852d.yaml       |   5 +
.../notes/ilo-deploy-iso-0c88edb5daff8a4e.yaml     |  22 +
.../notes/ilo-prefix-d5a65ac637f82f65.yaml         |  13 +
...ode-retrieval-performance-cf5a02eb629bf32c.yaml |   6 +
.../inspector-kernel-params-6db82c633d7361e2.yaml  |   5 +
.../notes/irmc-boot-iso-0e93f97acfa59778.yaml      |   8 +
.../notes/node-boot-mode-0662effa2a2644dc.yaml     |  10 +
.../notes/not-presistent-9c552f4209a84820.yaml     |   7 +
...isk-image-download-source-7a071aba7890ba95.yaml |   6 +
.../notes/ramdisk-validate-acbc4acdb71d10c2.yaml   |   5 +
.../notes/redfish-eject-iso-9875388ae09bc8f6.yaml  |   6 +
.../remove_pxe_ip_version-7a71f821ded28360.yaml    |   7 +
...-rbac-deprecation-for-now-779898e720a7bf4e.yaml |  10 +
.../skip-nonraid-controllers-f4a79e2c9e8080ce.yaml |   7 +
...clear-job-id-constant-fix-c69cf96c55364bb3.yaml |   7 +
...redfish_inspection_bugfix-b5edd35c337f80fc.yaml |  23 +
...dor-passthru-subscription-5d28a2420e2af111.yaml |   5 +
.../notes/verify-bool-ab3607429e005bed.yaml        |   4 +
requirements.txt                                   |  15 +-
test-requirements.txt                              |   6 +-
tools/check-releasenotes.py                        |   2 +-
zuul.d/ironic-jobs.yaml                            |  42 ++
zuul.d/project.yaml                                |   4 +
160 files changed, 5685 insertions(+), 2844 deletions(-)


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

diff --git a/driver-requirements.txt b/driver-requirements.txt
index e379bb99a..8b2af33a2 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -14 +14 @@ python-xclarityclient>=0.1.6
-sushy>=3.8.0
+sushy>=3.10.0
diff --git a/requirements.txt b/requirements.txt
index ca59703cc..9c4e1dc47 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4 +4 @@
-pbr!=2.1.0,>=2.0.0 # Apache-2.0
+pbr>=3.1.1 # Apache-2.0
@@ -19,2 +19,2 @@ oslo.config>=6.8.0 # Apache-2.0
-oslo.context>=2.19.2 # Apache-2.0
-oslo.db>=6.0.0 # Apache-2.0
+oslo.context>=2.22.0 # Apache-2.0
+oslo.db>=9.1.0 # Apache-2.0
@@ -24,2 +24,2 @@ oslo.middleware>=3.31.0 # Apache-2.0
-oslo.policy>=3.6.2 # Apache-2.0
-oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
+oslo.policy>=3.7.0 # Apache-2.0
+oslo.serialization>=2.25.0 # Apache-2.0
@@ -32,2 +32,3 @@ pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 # BSD
-requests>=2.14.2 # Apache-2.0
-rfc3986>=0.3.1 # Apache-2.0
+pycdlib>=1.11.0 # LGPLv2
+requests>=2.18.0 # Apache-2.0
+rfc3986>=1.2.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 72cd8e6b9..bd29d9394 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -6 +6 @@ coverage!=4.4,>=4.0 # Apache-2.0
-ddt>=1.0.1 # MIT
+ddt>=1.2.1 # MIT
@@ -12 +12 @@ oslotest>=3.2.0 # Apache-2.0
-stestr>=1.0.0 # Apache-2.0
+stestr>=2.0.0 # Apache-2.0
@@ -17 +17 @@ pysnmp>=4.4.12
-bandit!=1.6.0,>=1.1.0,<2.0.0 # Apache-2.0
\ No newline at end of file
+bandit!=1.6.0,>=1.1.0,<2.0.0 # Apache-2.0






More information about the Release-announce mailing list