Skip to content

Merge https://github.com/openstack/ironic:master (b95a363) into main#391

Merged
openshift-merge-bot[bot] merged 44 commits intoopenshift:mainfrom
openshift-metal3:ironic-bot-master
Apr 17, 2026
Merged

Merge https://github.com/openstack/ironic:master (b95a363) into main#391
openshift-merge-bot[bot] merged 44 commits intoopenshift:mainfrom
openshift-metal3:ironic-bot-master

Conversation

@ironic-merge-bot
Copy link
Copy Markdown

No description provided.

Afonne-CID and others added 3 commits April 1, 2026 16:07
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]>
@openshift-ci openshift-ci bot requested review from derekhiggins and elfosardo April 6, 2026 10:15
juliakreger and others added 11 commits April 7, 2026 06:52
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]>
@ironic-merge-bot ironic-merge-bot bot changed the title Merge https://github.com/openstack/ironic:master (eda12b9) into main Merge https://github.com/openstack/ironic:master (ddf1eb2) into main Apr 13, 2026
cardoe and others added 6 commits April 13, 2026 10:33
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]>
@ironic-merge-bot ironic-merge-bot bot changed the title Merge https://github.com/openstack/ironic:master (ddf1eb2) into main Merge https://github.com/openstack/ironic:master (ef253eb) into main Apr 15, 2026
Zuul and others added 4 commits April 16, 2026 02:42
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]>
elfosardo and others added 20 commits April 17, 2026 10:13
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.
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)
@ironic-merge-bot ironic-merge-bot bot changed the title Merge https://github.com/openstack/ironic:master (ef253eb) into main Merge https://github.com/openstack/ironic:master (b95a363) into main Apr 17, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 17, 2026

@ironic-merge-bot[bot]: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions 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.

@dtantsur
Copy link
Copy Markdown
Member

/approve
/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Apr 17, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 17, 2026

[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

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 17, 2026
@openshift-merge-bot openshift-merge-bot bot merged commit 8c1a17d into openshift:main Apr 17, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.