ironic 23.1.0 (caracal)
We are jazzed to announce the release of: ironic 23.1.0: OpenStack Bare Metal Provisioning This release is part of the caracal 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. 23.1.0 ^^^^^^ New Features ************ * Sending signal "SIGUSR2" to a conductor process will now trigger a drain shutdown. This is similar to a "SIGTERM" graceful shutdown but the timeout is determined by "[DEFAULT]drain_shutdown_timeout" which defaults to "1800" seconds. This is enough time for running tasks on existing reserved nodes to either complete or reach their own failure timeout. During the drain period the conductor will be removed from the hash ring to prevent new tasks from starting. Other conductors will no longer fail reserved nodes on the draining conductor, which previously appeared to be orphaned. This is achieved by running the conductor keepalive heartbeat for this period, but setting the "online" state to "False". * While Ironic has not explicitly added support for OVN, because that is in theory a Neutron implementation detail, we have added some basic testing and are pleased to announce that you can use OVN's DHCP service for IPv4 based provisioning with OVN v23.06.00 and beyond. This is not without issues, and we've added ovn documentation (https://docs.openstack.org/ironic/latest/admin/ovn- networking.html) as a result to help provide as much Ironic operator clarity as possible. Known Issues ************ * Use of OVN may require disabling SNAT for provisioning with IPv4 when using TFTP. This is due to the Linux Kernel, and how IP packet handling occurs with OVN. No solution is known to this issue, and use of provisioning technologies which do *not* use TFTP is also advisable. * Use of OVN may require careful attention to the MTUs of networks. Oversized packets and networking may be dropped. That being said this is more likely an issue for testing than with actual physical baremetal in a production deployment. * Use of OVN for IPv6 based PXE/iPXE is not supported by Neutron. The Ironic project expects this to be addressed during the Caracal (2024.1) development cycle. * When configuring a single-conductor environment, make sure the number of worker pools ("[conductor]worker_pool_size") is larger than the maximum parallel deployments ("[conductor]max_concurrent_deploy"). This was not the case by default previously (the options used to be set to 100 and 250 accordingly). Upgrade Notes ************* * Because of a fix in the internal worker pool handling, you may now start seeing requests rejected with HTTP 503 under a very high load earlier than before. In this case, try increasing the "[conductor]worker_pool_size" option or consider adding more conductors. * The default worker pool size (the "[conductor]worker_pool_size" option) has been increased from 100 to 300. You may want to consider increasing it even further if your environment allows that. Bug Fixes ********* * The "parent_node" field, a newly added API field, has been constrained to store UUIDs over the names of nodes. When names are used, the value is changed to the UUID of the node. * Properly eject the virtual media from a DVD device in case this is the only MediaType available from the Hardware, and Ironic requested CD as the device to be used. See bug 2039042 (https://bugs.launchpad.net/ironic/+bug/2039042) for details. * When Ironic hits the limit on the number of the concurrent deploys (specified in the "[conductor]max_concurrent_deploy" option), the resulting HTTP code is now 503 instead of the more generic 500. * The per-node "external_http_url" setting in the driver info is now used for a boot ISO. Previously this setting was only used for a config floppy. * Fixes issue of changing or getting state of indicator LED of attached disk caused by misunderstanding SimpleStorage provides this functionality but actually Storage resource does. * Fixes handling new requests when the maximum number of internal workers is reached. Previously, after reaching the maximum number of workers (100 by default), we would queue the same number of requests (100 again). This was not intentional, and now Ironic no longer queues requests if there are no free threads to run them. Changes in ironic 23.0.0..23.1.0 -------------------------------- 0d59e25cf Use per-node external_http_url for boot ISO 81acd5df2 Implement drain shutdown support f42b359bd Make sqlalchemy-2x job voting again fa8df6919 Fix unit tests broken by olso.utils 1b55e4b4d Document new bug deputy role for Ironic b9baf7dbc eventlet monkey patch in unit tests earlier 43ccb17e1 [api-ref] Add firmware fields to driver API 7639268e7 [api-ref] Complete port name and shard documentation f6b4ad833 Remove outdated pysnmp reference 8154c0a9f Update devstack guide for image id; network always needed c3ee90dda Add inspection hooks 679176ab5 Add the setting of memcached servers to keystone_authtoken 766d2804a Make sure we eject media from DVD when CD is requested 2124d101d Extract generic image publishing code from image_utils d1ca14289 Reset parent_node values to uuids instead of names 124f6425e Refactor publishing images into a new module 40e825ba9 CI: Fix our internal MTU settings 9bd1e033f grenade: convert neutron cli commands to openstack 3f9151163 Introduce conductor touch while offline 224cdd726 Bump workers_pool_size to 300 and remove queueing of tasks 3f77091c6 Enable OVN CI cba10669f Fix the HTTP code for reaching max_concurrent_deploy: 503 instead of 500 6c8a04e8f api-ref for nodes/{node_ident}/firmware 56cbe2569 Do not store ramdisk logs as part of the inventory db549850e Imported Translations from Zanata bbc82fa14 Kickstart: Don't error unit tests ksvalidate is present a31bf57cb Add inspection hooks 7f053dc70 Add inspection hooks 609ccc903 Add inspection hooks 7b91f67df Update master for stable/2023.2 8db7220ba Support port name: API ca5be6338 [DOC] Add a little more clarity regarding parent/child nodes ffde150aa Transiton to Storage resource from SimpleStorage 9516c67b6 DB: Load only one instance for RPC interactions 8c93d7df8 Cleanup if images.fetch fails ad651b328 Remove traces of Docker from devstack dependencies Diffstat (except docs and test files) ------------------------------------- api-ref/source/baremetal-api-v1-drivers.inc | 12 + api-ref/source/baremetal-api-v1-ports.inc | 23 ++ api-ref/source/index.rst | 1 + api-ref/source/parameters.yaml | 59 ++- api-ref/source/samples/driver-get-response.json | 4 + .../samples/drivers-list-detail-response.json | 8 + api-ref/source/samples/port-create-request.json | 1 + api-ref/source/samples/port-create-response.json | 1 + .../source/samples/port-list-detail-response.json | 1 + api-ref/source/samples/port-update-response.json | 1 + bindep.txt | 3 - devstack/files/bindep.txt | 3 - devstack/lib/ironic | 108 +++++- devstack/plugin.sh | 20 +- devstack/settings | 14 + devstack/upgrade/resources.sh | 20 +- .../install/include/configure-ironic-api.inc | 10 +- ironic/api/controllers/v1/node.py | 26 +- ironic/api/controllers/v1/port.py | 27 +- ironic/api/controllers/v1/utils.py | 11 +- ironic/api/controllers/v1/versions.py | 6 +- ironic/common/exception.py | 2 +- ironic/common/image_publisher.py | 187 +++++++++ ironic/common/release_mappings.py | 2 +- ironic/common/rpc_service.py | 46 ++- ironic/conductor/base_manager.py | 20 +- ironic/conductor/inspection.py | 3 + ironic/conductor/rpcapi.py | 4 +- ironic/conf/conductor.py | 2 +- ironic/conf/default.py | 8 + ironic/conf/inspector.py | 55 ++- ironic/db/api.py | 8 +- ironic/db/sqlalchemy/api.py | 4 +- ironic/drivers/modules/image_cache.py | 3 + ironic/drivers/modules/image_utils.py | 304 ++++++--------- .../modules/inspector/hooks/accelerators.py | 80 ++++ .../drivers/modules/inspector/hooks/boot_mode.py | 42 ++ .../modules/inspector/hooks/cpu_capabilities.py | 47 +++ .../modules/inspector/hooks/extra_hardware.py | 83 ++++ .../inspector/hooks/known_accelerators.yaml | 9 + .../inspector/hooks/local_link_connection.py | 123 ++++++ ironic/drivers/modules/inspector/hooks/memory.py | 41 ++ .../drivers/modules/inspector/hooks/parse_lldp.py | 87 +++++ .../drivers/modules/inspector/hooks/pci_devices.py | 84 ++++ .../modules/inspector/hooks/physical_network.py | 99 +++++ .../drivers/modules/inspector/hooks/raid_device.py | 84 ++++ .../drivers/modules/inspector/hooks/root_device.py | 109 ++++++ ironic/drivers/modules/inspector/lldp_parsers.py | 364 ++++++++++++++++++ ironic/drivers/modules/inspector/lldp_tlvs.py | 365 ++++++++++++++++++ ironic/drivers/modules/redfish/boot.py | 19 +- ironic/drivers/modules/redfish/inspect.py | 14 +- ironic/drivers/modules/redfish/management.py | 58 +-- ironic/objects/conductor.py | 4 +- ironic/objects/port.py | 12 + .../modules/inspector/hooks/test_accelerators.py | 80 ++++ .../modules/inspector/hooks/test_boot_mode.py | 37 ++ .../inspector/hooks/test_cpu_capabilities.py | 37 ++ .../modules/inspector/hooks/test_extra_hardware.py | 165 ++++++++ .../inspector/hooks/test_local_link_connection.py | 178 +++++++++ .../drivers/modules/inspector/hooks/test_memory.py | 38 ++ .../modules/inspector/hooks/test_parse_lldp.py | 422 +++++++++++++++++++++ .../modules/inspector/hooks/test_pci_devices.py | 73 ++++ .../inspector/hooks/test_physical_network.py | 86 +++++ .../modules/inspector/hooks/test_raid_device.py | 107 ++++++ .../modules/inspector/hooks/test_root_device.py | 178 +++++++++ .../unit/drivers/modules/redfish/test_boot.py | 44 ++- .../unit/drivers/modules/redfish/test_inspect.py | 63 ++- .../drivers/modules/redfish/test_management.py | 141 ++++++- playbooks/ci-workarounds/get_extra_logging.yaml | 11 + ...rain-parent-node-to-uuids-51642cacfea0714d.yaml | 6 + releasenotes/notes/drain-5eafd17e0868e21a.yaml | 14 + .../fix-eject-media-dvd-b1994446ea71be9c.yaml | 8 + .../max_concurrent_deploy-7a31ba142bf5ad5c.yaml | 6 + ...ode-iso-external_http_url-c5e3fa9ae4960dd6.yaml | 5 + .../notes/ovn-support-6666dfa2e99e7ad4.yaml | 25 ++ ...torage-over-simplestorage-ccb3e0e38bfe8712.yaml | 6 + releasenotes/notes/workers-20ca5c225c1474e0.yaml | 25 ++ releasenotes/source/2023.2.rst | 6 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 26 +- .../source/locale/ja/LC_MESSAGES/releasenotes.po | 159 ++++++++ requirements.txt | 2 + setup.cfg | 11 + zuul.d/ironic-jobs.yaml | 51 ++- 107 files changed, 5167 insertions(+), 633 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index e57c72049..aa0e212b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,0 +51,2 @@ sushy>=4.3.0 +construct>=2.9.39 # MIT +netaddr>=0.9.0 # BSD
participants (1)
-
no-reply@openstack.org