[release-announce] ironic 19.0.0 (yoga)

no-reply at openstack.org no-reply at openstack.org
Fri Dec 10 10:25:53 UTC 2021


We are excited to announce the release of:

ironic 19.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.

19.0.0
^^^^^^


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

* Adds support for running "management.clear_job_queue",
  "management.reset_idrac" and "management.known_good_state" methods
  as verify steps on iDRAC hardware type, for both "idrac-wsman" and
  "idrac-redfish" interfaces. In order to use this feature,
  "[conductor]verify_step_priority_override" needs to be used to set
  non-zero step priorities for the desired verify steps.

* Adds support for verify steps - a mechanism for running optional,
  actions pre-defined in the driver while the node is in transition
  from enroll to managable state, prior to inspection.

* Adds a new executable "ironic" that starts both API and conductor
  in the same process. Calls between the API and conductor instances
  in the same process are not routed through the RPC.

* The "ipxe" boot interface is now enabled by default.

* Adds a new configuration option "[pxe]ipxe_fallback_script" which
  allows iPXE boot to fall back to e.g. ironic-inspector iPXE script.

* ISO images provided via "instance_info/boot_iso" or
  "instance_info/deploy_iso" are now cached in a similar way to normal
  instance images. Set "[deploy]iso_master_path" to an empty string to
  disable.

* All image caches are now cleaned up periodically, not only when
  used. Set "[conductor]cache_clean_up_interval" to tune the interval
  or disable.

* The "redfish" hardware type is now enabled by default along with
  all its supported hardware interfaces.

* Adds a new "none" RPC transport that can be used together with the
  combined "ironic" executable to completely disable the RPC bus.

* Adds new configuration option: "[snmp]power_action_delay" This
  option will add a delay in seconds before a snmp power on and after
  power off. Which may be needed with some PDUs as they may not honor
  toggling a specific power port in rapid succession without a delay.
  This option may be useful if the attached physical machine has a
  substantial power supply to hold it over in the event of a brownout.

* The default deployment boot mode is *now* UEFI. Legacy BIOS is
  still supported, however operators who require BIOS nodes will need
  to set their nodes, or deployment, appropriately.


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

* The "ipxe" boot interface is now enabled and will have priority
  over "pxe" by default. If you rely on the default value of the
  "enabled_boot_interfaces" option to not contain "ipxe", you need to
  set it explicitly.

* The default boot mode has been changed and is *now* UEFI.
  Operators who were explicitly relying upon BIOS based deployments in
  the past, may wish to consider setting an explicit node level
  override for the node to only utilize BIOS mode. This can be
  configured at a conductor level with the
  "[deploy]default_boot_mode". Options to set this at a node level can
  be found in the Ironic Installation guide - Advanced features
  (https://docs.openstack.org/ironic/latest/install/advanced.html
  #boot-mode-support) documentation.


Bug Fixes
*********

* Fixes a bug in the anaconda deploy interface where the
  "ks_options" key was not found when rendering the default kickstart
  template.

* Fixes an issue where PXEAnacondaDeploy interface's deploy() method
  did not return states.DEPLOYWAIT so the instance went straight to
  "active" instead of "wait call-back".

* Fixes an issue where the anaconda deploy interface mistakenly
  expected "squashfs_id" instead of "stage2_id"  property on the
  image.

* Fixes the heartbeat mechanism in the default kickstart template
  ks.cfg.template as the heartbeat API only accepts "POST" and expects
  a mandatory "callback_url" parameter.

* Fixes handling of tarball images in anaconda deploy interface.
  Allows user specified file extensions to be appended to the disk
  image symlink. Users can now set the file extensions by setting the
  "disk_file_extension" property on the OS image. This enables users
  to deploy tarballs with anaconda deploy interface.

* Fixes an issue where automated cleaning was not supported when
  anaconda deploy interface is used.

* Fixes "idrac-wsman" management interface "set_boot_device" method
  that would fail deployment when there are existing jobs present with
  the error:

     "Failed to change power state to ''power on'' by ''rebooting''.
     Error: DRAC operation failed. Reason: Unfinished config jobs
     found: <list of existing jobs>. Make sure they are completed
     before retrying."

  Now there can be non-BIOS jobs present during deployment. This will
  still fail for cases when there are BIOS jobs present. In such cases
  it's advised to use the "idrac-redfish" interface that does not have
  this limitation when setting boot device.

* Fixes "File name too long" in the image caching code when a URL
  contains a long query string.

* Fixes an issue with a node's instance_info interface override
  caused when Ironic uses the interface attribute directly. Does so by
  adding a "get_interface" method to a node, and updating the Ironic
  code to use it where needed.

* Fixes an issue where the port value is not converted to int type
  when nodes are managed by the "irmc" hardware type.

* Fixes an issue where cleaning continuously repeats due to the
  value of "fgi_status" not being updated correctly when obtaining the
  RAID configuration status of nodes managed by the "irmc" hardware
  type.

* When configuring RAID on iRMC machines through ironic, polling is
  not set when RAID is created. After creating the RAID, set up
  polling will notify ironic to wait for the RAID configuration to
  complete before proceeding to the next step instead of check IPA.

* Fixes connection caching issues with Redfish BMCs where
  AccessErrors were previously not disqualifying the cached connection
  from being re-used. Ironic will now explicitly open a new connection
  instead of using the previous connection in the cache. Under normal
  circumstances, the "sushy" redfish library would detect and refresh
  sessions, however a prior case exists where it may not detect a
  failure and contain cached session credential data which is
  ultimately invalid, blocking future access to the BMC via Redfish
  until the cache entry expired or the "ironic-conductor" service was
  restarted. For more information please see story 2009719
  (https://storyboard.openstack.org/#!/story/2009719).

* Removing *?filename=file.iso* suffix from the virtual media image
  URL when the image is a regular file due to incompatibility with
  SuperMicro X12 machines which do not accept special characters such
  as *=* or *?* in the URL. Historically, this suffix was being added
  to improve compatibility with those BMCs which require *.iso* suffix
  in the URL while using swift as the image store. Old behaviour will
  remain for swift backed images.

* Fixes restricted allocation creation for old policy defaults. This
  involves a check that ensures that the user is not trying to create
  an allocation with an owner other than themselves. This check is
  updated to also see if the user is actually trying to set an
  allocation owner.


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

* The agent deploy and cleaning code no longer uses an RPC call to
  the same conductor when proceeding to the next deploy or clean step.

Changes in ironic 18.2.0..19.0.0
--------------------------------

cdc3b9538 CI: Lower test VM memory by 200MB
b37ee7c91 devstack: provide a default for OS_CLOUD
019ed2d7b Add "none" RPC transport that disables the RPC bus
9a6f2d101 All-in-one Ironic service with a local RPC bus
80fccd80c Trivial: minor follow-up to redfish fix
5f35896bf Prepare for bugfix release
18d016f79 Avoid RPC notify_conductor_resume_{deploy,clean} in agent_base
3e225d2cd Trivial: log current state when continuing cleaning
f97e9340e Add missing mode setting on pxe created directories
f85f64913 Install isolinux on devstack
e51c6b930 Fix markup syntax
d5eb6ee56 Refactor driver_internal_info updates to methods
1439af27b Remove redfish cache entry upon errors
3f990beb9 Refactor common configuration bits from service commands
44ac50779 Remove isfile check from place_loaders_for_boot
7ca27601d Remove default option from create iso image
028448afe Add a unit test job with Sushy from source
2ddd8ef2c Do not assume sushy constants are strings - part 2
ccb46fefd Updating yoga tested python versions in classifier
fdc6424de Clarify driver load error message
9b4631ae0 Use test_with_retry to get the tap device name
350c2f7a5 CI: Fix devstack plugin with RBAC changes
47b98d44c Use default test dir
a249c025d Fix some of the SRBAC tests
dbc24610d Add an option to create inspector-compatible boot.ipxe
545a222a0 Reduce the number of small functions in pxe_utils
93fd147b6 Stop relying on explicit values of Redfish constants
fc24275ba [iRMC] Convert the type of irmc_port to int
815705bc7 Fix RedfishManagement.get_mac_addresses and related functions
16aad76a6 Create node get_interface method
5ab94f37f Enable iPXE boot interface by default
76e99a30f Enable Redfish by default
323344e07 [Trivial] Clarify conditions under which power recovery is attempted
4f0893804 Avoid handling a deploy failure twice
b1d08ae80 Fix idrac-wsman deploy with existing non-BIOS jobs
4bb7e5373 Document commands to leave WAIT states
287425e15 Add description to the mod_wsgi part
b2ef1051d Add platform:rpm shim, grub packages to bindep
df99dea00 Fix various issues in the anaconda deploy interface
0ca0383ba Trivial: do not stop None rpcserver
42b03703a Fix restricted allocation creation for old policy defaults
2ff7f553c changed code for memory burin vm-bytes, 75 to 75%
dc3fefe6a Add a description of stopping ironic-api.service
c1a067c14 Add Xena versions to release notes
8e8c1b087 There is no aim, we do deploy/manage baremetal.
7d85694fd Do not use any parts of image URL in temporary file names
beb96870f Remove redundant node_periodic tests
567aa056a node_periodics: encapsulate the interface class check
cf1b42ea3 Add a helper for node-based periodics
7f9badb54 Add and document high-level helpers for async steps
f205e7d2b Remove debian packages file for devstack
371313214 SRBAC - Prepare for additional services
044091c14 Retool devstack plugin to use pxe loaders configuration
e05f74c62 Do not append filename parameter to image URL when using local file
e8382db6b Update the list of supported database filters
c7a6c69f1 Follow up to Add support for verify steps
330693306 add snmp power action delay
dec673784 Demote three warning messages
807b93456 Make iDRAC management steps verify steps
2b55c8d38 CI: Change CI ipxe file to snponly
493b4f0ca Yoga: Change default boot mode to uefi
b385d9ae5 Add support for verify steps
3c96af2d2 Fix iDRAC configuration mold docs
535c28b67 Document recovery from power faults
c1e355011 Remove legacy rpm install list and use bindep
c52e685e5 Update release doc
61fb3eee5 PXE: avoid trailing dots in exception messages
a547cbcb0 require_exclusive_lock: log traceback that lead to an error
db4b4c08d Clean up caches periodically
eb8657f0d Update iDRAC doc for idrac-redfish RAID
4775fb3d9 Devstack: don't scan /opt, /etc looking for isolinux
b617e4346 [iRMC] Set polling after RAID is built
8a5c672fa [iRMC] Avoid repeatedly resuming clean after creating raid configuration
816dbfdad Add Python3 yoga unit tests
016c1f860 Update master for stable/xena
93e57fd72 Use an ImageCache for provided boot/deploy ISO images
c80d2f295 Refactor: move base_iso handling from create_boot_iso


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

api-ref/source/samples/api-root-response.json      |   2 +-
bindep.txt                                         |   2 +
devstack/common_settings                           |   4 +-
devstack/files/bindep.txt                          |  98 +++++
devstack/files/debs/ironic                         |  41 ---
devstack/files/rpms/ironic                         |  25 --
devstack/lib/ironic                                | 195 ++++++----
.../include/configure-ironic-api-mod_wsgi.inc      |  19 +
driver-requirements.txt                            |   3 -
ironic/api/controllers/root.py                     |   4 +-
ironic/api/controllers/v1/allocation.py            |   6 +-
ironic/api/wsgi.py                                 |   3 +-
ironic/cmd/api.py                                  |  19 +-
ironic/cmd/conductor.py                            |  19 +-
ironic/cmd/dbsync.py                               |   2 +-
ironic/cmd/singleprocess.py                        |  52 +++
ironic/common/driver_factory.py                    |   4 +-
ironic/common/exception.py                         |   7 +-
ironic/common/images.py                            |  25 +-
ironic/common/neutron.py                           |   2 +-
ironic/common/pxe_utils.py                         | 135 +++----
ironic/common/rpc.py                               |  10 +
ironic/common/rpc_service.py                       |  22 +-
ironic/common/service.py                           |  42 ++-
ironic/conductor/cleaning.py                       |  22 +-
ironic/conductor/deployments.py                    |  63 ++--
ironic/conductor/manager.py                        | 204 +++++------
ironic/conductor/periodics.py                      | 164 +++++++++
ironic/conductor/rpcapi.py                         | 210 +++++++----
ironic/conductor/steps.py                          |  90 ++++-
ironic/conductor/task_manager.py                   |  13 +
ironic/conductor/utils.py                          | 145 ++++----
ironic/conductor/verify.py                         |  25 ++
ironic/conf/conductor.py                           |  14 +
ironic/conf/default.py                             |  19 +-
ironic/conf/deploy.py                              |  26 +-
ironic/conf/pxe.py                                 |  11 +-
ironic/conf/snmp.py                                |  10 +
ironic/db/api.py                                   |  24 +-
ironic/db/sqlalchemy/api.py                        |   2 +
ironic/drivers/base.py                             |  89 ++++-
ironic/drivers/modules/agent.py                    |  10 +-
ironic/drivers/modules/agent_base.py               |  68 ++--
ironic/drivers/modules/ansible/deploy.py           |   6 +-
ironic/drivers/modules/boot.ipxe                   |  10 +
ironic/drivers/modules/boot_mode_utils.py          |  18 +-
ironic/drivers/modules/deploy_utils.py             |  52 ++-
ironic/drivers/modules/drac/bios.py                |  62 +---
ironic/drivers/modules/drac/inspect.py             |   4 +-
ironic/drivers/modules/drac/management.py          |  67 ++--
ironic/drivers/modules/drac/raid.py                |  96 ++---
ironic/drivers/modules/ilo/bios.py                 |   8 +-
ironic/drivers/modules/ilo/inspect.py              |   3 +-
ironic/drivers/modules/ilo/management.py           |  16 +-
ironic/drivers/modules/ilo/raid.py                 |   4 +-
ironic/drivers/modules/image_cache.py              |   9 +-
ironic/drivers/modules/image_utils.py              | 113 +++---
ironic/drivers/modules/inspect_utils.py            |  16 +-
ironic/drivers/modules/inspector.py                |  30 +-
ironic/drivers/modules/irmc/common.py              |   3 +
ironic/drivers/modules/irmc/raid.py                | 137 ++++---
ironic/drivers/modules/ks.cfg.template             |  12 +-
ironic/drivers/modules/pxe.py                      |   8 +-
ironic/drivers/modules/pxe_base.py                 |  46 +--
ironic/drivers/modules/ramdisk.py                  |   3 +-
ironic/drivers/modules/redfish/bios.py             |   6 +-
ironic/drivers/modules/redfish/boot.py             |   4 +-
ironic/drivers/modules/redfish/inspect.py          |   3 +-
ironic/drivers/modules/redfish/management.py       | 150 +++-----
ironic/drivers/modules/redfish/raid.py             | 125 ++-----
ironic/drivers/modules/redfish/utils.py            |  37 +-
ironic/drivers/modules/snmp.py                     |   2 +
ironic/objects/node.py                             |  44 +++
.../unit/api/controllers/v1/test_allocation.py     |  37 +-
.../unit/drivers/modules/ansible/test_deploy.py    |   1 +
.../unit/drivers/modules/drac/test_inspect.py      |   2 +-
.../unit/drivers/modules/drac/test_management.py   |  14 +-
.../drivers/modules/irmc/test_periodic_task.py     |  59 ++-
.../unit/drivers/modules/redfish/test_inspect.py   |  15 +-
.../drivers/modules/redfish/test_management.py     | 178 ++-------
.../unit/drivers/modules/redfish/test_raid.py      |   4 +-
.../unit/drivers/modules/redfish/test_utils.py     |  72 +++-
.../unit/drivers/modules/test_boot_mode_utils.py   |  15 +-
.../unit/drivers/modules/test_deploy_utils.py      |  53 ++-
.../unit/drivers/modules/test_inspect_utils.py     |  13 +-
.../unit/drivers/third_party_driver_mock_specs.py  |  67 ----
lower-constraints.txt                              |   3 +-
.../add-idrac-verify-steps-50c1a0f0fe299922.yaml   |   9 +
.../add-verify-steps-support-2b34a74e86f89cb4.yaml |   6 +
releasenotes/notes/allinone-190ae91884d81154.yaml  |   6 +
...anaconda-deploy-interface-bfa2cfca22b04680.yaml |  25 ++
...th-existing-non-bios-jobs-78aa2195d0c3016f.yaml |  16 +
.../notes/image-cache-size-28a9072901b98edf.yaml   |   5 +
...fo-interface-override-fix-043df41199529892.yaml |   7 +
.../notes/ipxe-default-628380290fbdbab6.yaml       |  10 +
.../notes/ipxe-fallback-a10c8ce422caa429.yaml      |   5 +
...rt-the-value-of-irmc-port-63c90450b5a77203.yaml |   5 +
...repeatedly-resuming-clean-020f0dfc2e30d7bc.yaml |   6 +
...-polling-after-raid-build-5f78ee3e93a92553.yaml |   8 +
releasenotes/notes/iso-cache-5330b63c9e3a02db.yaml |   7 +
.../notes/no-deploy-rpc-dec8ee1d0326d1ad.yaml      |   5 +
.../notes/periodic-clean-up-29c33d2516bf16ec.yaml  |   5 +
...on-cache-pool-accesserror-743e39a2f017b990.yaml |  13 +
.../notes/redfish-default-c7b2268606172bba.yaml    |   5 +
...ame-param-from-vmedia-url-bf4773ede44f2206.yaml |  10 +
...d-allocation-creation-fix-a70dfcbcb9996602.yaml |   7 +
releasenotes/notes/rpc-none-f05dac657eef4b66.yaml  |   5 +
...mp_add_power_action_delay-eba6c3a9cbd6ada3.yaml |   8 +
.../uefi-is-now-the-default-562b0d68adc59008.yaml  |  16 +
releasenotes/source/index.rst                      |   1 +
releasenotes/source/xena.rst                       |   6 +
requirements.txt                                   |   3 +-
setup.cfg                                          |   4 +-
.../benchmark/do_not_run_create_benchmark_data.py  |   2 +-
tools/benchmark/generate-statistics.py             |   2 +-
tox.ini                                            |   1 -
zuul.d/ironic-jobs.yaml                            |  64 +++-
zuul.d/project.yaml                                |   6 +-
156 files changed, 4169 insertions(+), 2231 deletions(-)


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

diff --git a/driver-requirements.txt b/driver-requirements.txt
index d5285a3df..ffcb3e2ab 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
@@ -13,3 +12,0 @@ python-xclarityclient>=0.1.6
-# The Redfish hardware type uses the Sushy library
-sushy>=3.10.0
-
diff --git a/requirements.txt b/requirements.txt
index 9c4e1dc47..ea11b920d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16 +16 @@ pytz>=2013.6 # MIT
-stevedore>=1.20.0 # Apache-2.0
+stevedore>=1.29.0 # Apache-2.0
@@ -45,0 +46 @@ openstacksdk>=0.48.0 # Apache-2.0
+sushy>=3.10.0






More information about the Release-announce mailing list