Merge https://github.com/openstack/ironic:master (b95a363) into main#391
Merged
openshift-merge-bot[bot] merged 44 commits intoopenshift:mainfrom Apr 17, 2026
Merged
Conversation
A follow-up to 956500 (periodic cleanup of stale conductors - offline for longer than a configured timeout period.) New review feedback identified that the original patch never NULLs `conductor_affinity`, so deleting a conductor will fail with an FK constraint violation. Unit tests were added by AI. Assisted-by: Claude Opus 4.6 Change-Id: Ie557c6ec0f96d013d182f9c85e8f41cac4cbd8af Signed-off-by: Afonne-CID <[email protected]>
When vif_attach or vif_detach fails on a node, no entry was being recorded in the node history table. This made it difficult for operators to diagnose failures, as reported in the bug where nova.virt.ironic failed to unwind an error without any history entry explaining why. Add try/except blocks in vif_attach and vif_detach in the conductor manager, recording the VIF ID, node ID and the operation type in node history on failure. Closes-Bug: #2131973 Change-Id: Ifebba8c1a6127afee09c45c6d3a251b743a32a1a Signed-off-by: Victor Obiezue <[email protected]>
The IRONIC_RAMDISK_TYPE setting allowed users to choose between 'tinyipa' and 'dib' ramdisk types. With tinyipa support dropped, this setting is no longer needed. DIB is now the only ramdisk type and is used by default. This change removes: - IRONIC_RAMDISK_TYPE variable and validation - tinyipa-specific build functions (build_tinyipa_ramdisk, rebuild_tinyipa_for_ansible) - is_ansible_with_tinyipa helper function - tinyipa references from documentation and CI configuration Assisted-By: Claude Code - Claude Sonnet 4.5 Change-Id: Ic7222888a6ed8e8353ca20a5a5b1aa1c6a948b53 Signed-off-by: Julia Kreger <[email protected]>
As early as 2024 we've been warning operators the iLO driver was going away, and it was formally deprecated in 2025.2. We now remove it fully. iLO 5 and newer devices are still supported by redfish driver. Generated-by: claude-code Change-Id: Iccc45da6eb3b8109009e3217028cc07f5782dde0 Signed-off-by: Jay Faulkner <[email protected]>
When using devstack if the test node already has its port plugged in, first clean it up and then re-plug the port to make the process more idempotent. Change-Id: I61a2ae6930b419f33f2763d2cf24f1fde7329032 Signed-off-by: Doug Goldstein <[email protected]>
In other places we look up the qrouter and only reference that specific one but in this place we touched all qrouters. Change the behavior to match the other call sites to avoid issues with multiple ./stack.sh calls in devstack. Change-Id: I33e2026cf3cad0077e8075c258eae4f7af01fc86 Signed-off-by: Doug Goldstein <[email protected]>
In cases when the machine has already had devstack on it, this route might exist because it is not cleaned up. Change the ip route call to use replace to be an idempotent call like other callers in the script. Change-Id: Ic0d788abe93412f2d81f438d4606dcd8fb59ed41 Signed-off-by: Doug Goldstein <[email protected]>
The driver was removed nearly a decade ago [1]. [1] I9bc9f4cbd916f040a636b967ec5556197ad3d8a8 Change-Id: I6735b5cf8bed2012903d58d006dc731ad205d107 Signed-off-by: Stephen Finucane <[email protected]>
This commit enables project-scoped sidebar search in Ironic docs using the existing openstackdocstheme option (sidebar_search=True). It allows users to search within Ironic documentation directly, and improves the search experience when navigating from Ironic pages. It also refines a few top-level headings to make Ironic content easier to identify in broader search contexts. Closes-Bug: #2072362 Change-Id: Iaf42d58e63c2f3fc62c1eac72814360972bbe29e Signed-off-by: Anishere Mariam Adeola <[email protected]>
9418b54 to
34ed3b0
Compare
Today runbooks must be named after a trait that exists on the node in
order to be used. This change decouples the runbook name from the trait
matching logic by introducing a dedicated traits set on each runbook.
Changes:
- Add a new runbook_traits table (runbook_id, trait composite PK)
mirroring the node_traits design, with a DB migration that seeds
each existing runbook's traits from its current name.
- Add a description column to the runbooks table, consistent with
other Ironic objects.
- Bump Runbook versioned object to 1.2 (description + traits fields).
Add RunbookTrait (1.0) and RunbookTraitList (1.0) objects.
- Introduce API microversion v1.112:
- Runbook name may now be any valid logical string; the CUSTOM_/
standard-trait format restriction is lifted.
- traits list included in runbook create/get/list responses.
- New sub-resource /v1/runbooks/{ident}/traits with GET, PUT, and
DELETE endpoints following the node traits pattern.
- PATCH /v1/runbooks does not patch traits; use the sub-resource.
- Update _handle_runbook in the node provision API: for v1.112+,
check that the node has at least one trait that intersects with the
runbook's traits set. For earlier versions the legacy name-equals-
trait check is preserved unchanged.
- Update the conductor automated-cleaning runbook validator to apply
the same intersection logic when runbook.traits is non-empty, and
fall back to the legacy name check otherwise.
Assisted-by: Claude Sonnet 4.6
Change-Id: Ifc21e37a257f4749170e2802324f868185cb1886
Signed-off-by: Doug Goldstein <[email protected]>
[1] broke ovn based jobs as there is no qrouter namespace when running with ovn. This patch makes the commands run only when agent is not OVN. [1] https://review.opendev.org/c/openstack/ironic/+/983715 Change-Id: I0042f918a12368e3b01298ec345ed435a58ad336 Signed-off-by: Yatin Karel <[email protected]>
When all service steps declare requires_ramdisk=False (e.g. bios.apply_configuration on Redfish), the servicing conductor correctly skips the initial IPA boot. However, the service_disable_ramdisk flag stored in driver_internal_info was being set from the disable_ramdisk *parameter* (False by default) before the per-step requires_ramdisk check ran. As a result, any step that internally calls reboot_to_finish_step() — as the Redfish BIOS interface does to apply settings that require a system reset — would read service_disable_ramdisk=False via is_ramdisk_disabled(), conclude that IPA should be booted, and issue a one-time boot to the virtual CDROM before rebooting the node. This caused an unnecessary and disruptive IPA boot cycle during every BIOS apply_configuration service operation even though the step is fully out-of-band and IPA plays no role in it. Assisted-By: Claude Sonnet 4.6 Change-Id: I416a046a018f429a91f2958238d34a72854ae8f4 Signed-off-by: Konstantinos Karampogias <[email protected]>
34ed3b0 to
1199152
Compare
The guarding logic has been changed a few times recently because it would conflict with other namespaces and think it needed to run anyhow, or potentially run with out being configured, i.e. needing to restrict it to OVN. This broke subnodes, which while configured for OVS, the code was running successfully, however qroter's don't exist on subnodes and the previous change to the code was triggering it to be executed anyhow. This now changes the code path to consider if the qrouter is actually present as well. Change-Id: Ie85de998ae1fdf29d167c35aacbd05bfeb599c1e Signed-off-by: Julia Kreger <[email protected]>
In general we should not upgrade the base image when building a container as the base image is already rebuilt regularly. Also setting the base image explicitely to one recommended by ART.
Adds the parent node support and tests in one change including all DB/Model/API changes along with RBAC and basic API tests. * Updates the API version to 1.83 * Adds parent_node and related index to the nodes table. * Adds new API parameters to list by parent node relationship. Depends-On: https://review.opendev.org/c/openstack/ironic/+/883967 Change-Id: I8d64fee7105718199986db4994e13352d639f04f
Change-Id: I22c8aae89d24d3ff330f10f1e0d43461fd6e52d4
We need to pin libraries that are still compatible with python 3.9 as upstream has already dropped compatibility.
(cherry picked from commit aa7dfab)
Back when we developed service, we expected operators to iterate to fix their issues, but we also put in abort code. We just never wired in the abort code to the abort verb. It really seems like we really should have done that, and this change changes API and Conductor code path to make this happen. Closes-Bug: 2119989 Assisted-By: Claude Clode - Claude Sonnet 4 Change-Id: Ic02ba87485a676e77563057427ab94953bea2cc2 Signed-off-by: Julia Kreger <[email protected]> (cherry picked from commit 1eda807)
Currently, Ironic codebase allows aborting servicing state regardless of whether a servicing step has abortable flag set or not. This patch fixes this by adding handling of service wait states to abort code paths and adding the missing state machine transition. Generated-By: Claude Code Sonnet 3.5 Change-Id: Ie07490bdb9c6461bd6ac7a6315773dcfb13592f9 Signed-off-by: Jacob Anders <[email protected]> (cherry picked from commit fa8a8fb)
1199152 to
bfeac86
Compare
|
@ironic-merge-bot[bot]: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
Member
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dtantsur, ironic-merge-bot[bot] The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.