[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