Commit graph

14357 commits

Author SHA1 Message Date
Zuul
1a031b03a7 Merge "Add node.instance_name" 2025-11-18 23:27:20 +00:00
Afonne-CID
451392c602 Follow-up: Document noop deploy interface
Change-Id: I0a8bf842bfabf3740fb858462b946cbe8d4e278a
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-11-18 18:21:53 +01:00
Zuul
bcfd5e6358 Merge "docs: Fix typos and a wrong URL" 2025-11-18 17:21:25 +00:00
Zuul
1861760caa Merge "Add a noop deploy interface" 2025-11-18 17:21:20 +00:00
Riccardo Pittau
4f815d84c8 Skip BMC detection in IPA for out-of-band management
When nodes use out-of-band management interfaces (Redfish, iDRAC
Redfish, iLO, iRMC), the BMC address is already known and configured
in Ironic. This change adds an 'agent_skip_bmc_detect' flag to the
lookup API response config that tells the agent to skip BMC address
detection via ipmitool.

This reduces deployment time and avoids unnecessary ipmitool calls
during hardware inventory collection.

The flag is automatically set based on the node's management_interface
and is included in the config section of the lookup response.

Assisted-By: Claude Sonnet 4.5
Change-Id: I6a432db3eb238894e0ed2676243ce69ec300a9eb
Signed-off-by: Riccardo Pittau <elfosardo@gmail.com>
2025-11-18 16:28:54 +01:00
Pierre Riteau
aaa7cea4ca docs: Fix typos and a wrong URL
Change-Id: I497577fc4371eb66db023ff1c4fab39564398855
Signed-off-by: Pierre Riteau <pierre@stackhpc.com>
2025-11-18 15:02:03 +01:00
Takashi Kajinami
03cb948c40 Drop remaining inspector job
... because ironic-inspector has been retired.

Change-Id: Id5568cbac8f559821dffd004ab9b6db3e4f4bca6
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-11-18 21:58:28 +09:00
Julia Kreger
48e23c2574 ci: disable multinode subnode running n-cpu
Change-Id: Ia70ccd813feb12135fd3cb7f8c432d7cf36f0507
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-11-17 20:22:03 +00:00
Zuul
d1ad78f827 Merge "Add Release Schedule to release how to" 2025-11-17 19:27:38 +00:00
Zuul
12d6dd2c6f Merge "Deprecate iRMC hardware type and interfaces" 2025-11-17 11:48:44 +00:00
David Nwosu
374aba1c36 Fix spelling errors in unit test files
Change-Id: Ie4a3df034093352776d7e2717a8ae6301b40563c
Signed-off-by: David Nwosu <nwosudavid13@gmail.com>
2025-11-15 11:52:09 +01:00
David Nwosu
1421a2d1a9 Improve pre-commit configuration
Enhanced the pre-commit hook configuration by adding
directory exclusions (.tox/, build/, dist/)

Change-Id: Ib12990cc85bdba5445eb8553c751025923b29645
Signed-off-by: David Nwosu <nwosudavid13@gmail.com>
2025-11-15 11:41:31 +01:00
Zuul
9b3ce45be5 Merge "Fix inspection IB port client-id" 2025-11-15 04:08:14 +00:00
Jay Faulkner
e4b1e394d4 Update devstack guides to raise RAM requirement
Our most basic images require 2500mb of ram, minimum, for fake nodes.

Signed-off-by: Jay Faulkner <jay@jvf.cc>
Change-Id: I0939f6fbb8dfd91c4e3f20b3a785e6acc9feb9bb
2025-11-13 10:03:27 -08:00
Jakub Jelinek
81209ba399 Add a script to copy inspection data between Swift buckets
There is no way to migrate inspection data automatically.
This script documents one of the ways how to copy data
between two Swift buckets.

Change-Id: I4a86faab5e7abef17064e3c716dc17b6a2f21f39
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
Assisted-by: Claude 4.5 Sonnet (Anthropic AI)
2025-11-12 17:12:39 +00:00
Jakub Jelinek
3eca781ec3 Nit: Fix typo in Migrating from ironic-inspector
Change-Id: I49351a35971d3970faaea62b36d49e4ee883db1f
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
2025-11-12 16:49:25 +00:00
Jacob Anders
7d050f6ae2 Deprecate iRMC hardware type and interfaces
The iRMC hardware type for Fujitsu PRIMERGY servers has been
unmaintained for an extended period.

This change marks the iRMC hardware type and all associated
interfaces (bios, boot, inspect, management, power, raid, and
vendor) as unsupported. All configuration options in the [irmc]
section have been marked as deprecated for removal. The
documentation has been updated with a prominent warning about
the deprecation.

Users of the iRMC hardware type should begin planning migration to
alternative hardware types. The driver and all associated code will
be removed in a future Ironic release.

Change-Id: I78b822e5fe3bd1ce4d7ea410c4569d6b830dc214
Signed-off-by: Jacob Anders <janders@redhat.com>
Assisted-by: Claude 4.5 Sonnet (Anthropic AI)
2025-11-13 02:12:29 +10:00
Jay Faulkner
bc463ebcbb Add node.instance_name
This adds node.instance_name as a top level field

Additionally, to provide forwards-compatability for nova clients,
we will automatically set node.instance_name if
node.instance_info.display_name is being set.

Tested the following in devstack, using manual CURL api calls:

 - Viewing an instance_name via GET /v1/nodes/node-name
 - Adding an instance_name
 - Clearing instance name on undeploy
 - Setting an instance_name via PATCH /v1/nodes/node-name
 - Setting a instance_info/display_name and validating it sets instance_name
 - Setting a instance_info/display_name when instance_name already exists and
   validating it DOES NOT OVERRIDE existing instance_name
 - node.instance_name not returned for API version < our micro version
 - querying /v1/nodes with ?instance_name=somename
 - (cid) Sort of fully tested integrated with nova by observing CI logs
 - (jayf) Added missing comments around API versions, and added a reminder
   comment

Generated-By: Claude code
Change-Id: Ic24b2e8dbe88c59f0df52a0f5581d48492ba8cd7
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
Signed-off-by: Jay Faulkner <jay@jvf.cc>
2025-11-12 13:34:51 +01:00
Zuul
41a0ae8565 Merge "Filter null NIC firmware versions from cache" 2025-11-12 07:23:58 +00:00
Doug Goldstein
e721c56e68
pass along physical_network to neutron from the baremetal port
When plugging a baremetal port in using the 'neutron' interface, send
the 'physical_network' value of the baremetal port to Neutron as part of the
binding_profile for the port. This can be useful for VXLAN underlay
connected machines where the networks in Neutron are VXLAN networks
which then have segments on them that are VLAN based segments which bind
the VNI to a VLAN for attachment for the node to connect to the VNI.

Ref: https://bugs.launchpad.net/ovn-bgp-agent/+bug/2017890
Ref: https://bugs.launchpad.net/neutron/+bug/2114451
Ref: https://review.opendev.org/c/openstack/neutron-specs/+/952166

Partial-Bug: #2105855
Assisted-by: Claude Code 2.0
Change-Id: I6e0185e203489676d530e6955929997f4871b8fa
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-11-12 00:36:19 -06:00
Afonne-CID
bcae66f199 Add a noop deploy interface
This change adds a NoDeploy class to allow for a truly minimal
deployment interface with no-op implementations for all required
methods.

Closes-Bug: #2106550
Change-Id: Ic6faf34860efef9165ad868d57972cd5007eacd4
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-11-11 21:07:28 +01:00
Afonne-CID
5563e5275f Filter null NIC firmware versions from cache
Treat absent firmware package version as non-cacheable to avoid NOT NULL
database constraint violation.

Closes-Bug: #2130990
Change-Id: Ic2efaa0d53b6923908112c937957a60aa4f1ad9d
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-11-11 20:48:56 +01:00
Julia Kreger
a4a5c9b3b7 docs: a little more clarity around the state of ipxe+uefi
We likely need to begin to strip out the undionly.kpxe stuffs as well,
but first lets see what people think with this and we can go in that
direction.

Change-Id: I09f15e87372390219193c93ba3b5d309f29df900
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-11-11 10:00:08 -07:00
Zuul
a4a2a25094 Merge "fix: local_link_connection inspection hook does not fail on missing port" 2025-11-10 22:47:15 +00:00
Zuul
cd06a3f205 Merge "fix: ensure that portgroup physical_network is updated for tests" 2025-11-10 22:02:39 +00:00
Zuul
7e7ab375c0 Merge "Fix storing inventory and plugin data in Swift" 2025-11-10 19:37:27 +00:00
Doug Goldstein
bb97a64225
fix: ensure that portgroup physical_network is updated for tests
The tests create the portgroup and then create ports in the DB while
setting the portgroup_id on the created port. The result is that the
physical_network field is not kept in sync on the portgroup with the
port's value as is expected since I5a9d9c19182b232bc1b8446644cab0bf6d68d139
resulting in inconsistent data for the tests. Since the tests only
confirm that the portgroup physical_network is of the expected value,
which is empty so they pass.

Change-Id: Ied1f5c884652ff4e7ddeb748199dbf20ebc879bd
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-11-08 23:28:32 -06:00
Doug Goldstein
90b5853346
fix: local_link_connection inspection hook does not fail on missing port
The code intended to not fail when a Port object was missing but to
instead skip the handling of that node but instead there is an unhandled
exception because the get_by_address() method throws PortNotFound
instead of returning None when a port couldn't be found.

Change-Id: I04dfa09ada7e6a9d22ba16051cb5737daf3bc668
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-11-06 21:17:47 -06:00
Zuul
e3b943a34b Merge "Apply naming standards to Ironic install guide sections" 2025-11-06 16:13:36 +00:00
Jakub Jelinek
9769ae72da Fix storing inventory and plugin data in Swift
The data has not been stored as JSON which caused issues.

Closes-bug: #2130790
Change-Id: I1d13fb227e6c3ba713dac58c6e02a199f589209f
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
2025-11-06 15:57:56 +00:00
Takashi Kajinami
8d390195f4 Make sure [cors] allowed_origin accepts a list value
... because usage of a string value is deprecated since oslo.middleware
3.0.0[1].

[1] 40135b76a92cef4197e2f68be46fd129d41630c6

Change-Id: I3d6b67c221f9411cad59b7e6b9b3abf89c5508a8
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-11-06 14:26:59 +00:00
Zuul
e8d294fc6c Merge "Add IPMI address validation to node validation" 2025-11-06 08:45:03 +00:00
Zuul
953440554a Merge "Handle HTTP 400 and 409 race condition in Redfish power operations" 2025-11-06 00:29:10 +00:00
Zuul
09c4fb0acf Merge "Add force_dhcp option for managed inspection" 2025-11-05 23:58:44 +00:00
Zuul
f56d9bc9f6 Merge "Add support for multiple JSON-RPC configuration groups" 2025-11-05 23:56:12 +00:00
Clif Houck
051e5d403a
Fix docstring for SystemdConsoleContainer.start_container
Change-Id: Ia519921ed8c2293abf5f0eef09a6f2d0ee3ce4a8
Signed-off-by: Clif Houck <me@clifhouck.com>
2025-11-05 12:54:31 -06:00
Afonne-CID
3abaa3a2d9 Add IPMI address validation to node validation
Validate ``ipmi_address`` field for valid IP addresses or hostnames
during node validation.

Closes-Bug: #1666223
Change-Id: Ie33e7aed7521b552efcd851228072f43ebfec620
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-11-05 17:17:47 +01:00
Zuul
5c1ff3f892 Merge "Replace Chrome/Selenium console with Firefox extension" 2025-11-05 11:25:28 +00:00
Zuul
b9f0f9242f Merge "Improve logging when console unit doesn't start" 2025-11-05 11:17:32 +00:00
Zuul
6507e9fae5 Merge "Add a new 'category' field to the Portgroup object" 2025-11-05 04:20:31 +00:00
Zuul
9305e273a8 Merge "docs: cover what happens if someone changes iscsi passwords" 2025-11-04 22:33:18 +00:00
Steve Baker
e6e842b228 Replace Chrome/Selenium console with Firefox extension
The current containerised graphical console approach has a Selenium
script managing a Chrome browser session. This change replaces that with
firefox and a custom extension to perform the required actions to login
and load the BMC console. This supports the same vendors as the previous
approach (iDRAC, iLO, Supermicro).

This change is required by Red Hat as Chrome is not packaged in RHEL.
However switching to firefox has allowed a more robust and featureful
implementation so it is presented here on its own merits.

This is implemented with bash, calling out to dedicated python scripts
for these specific tasks:
- Detecting which vendor specific javascript to use for the
  redfish-graphical driver
- Building the required certificate fingerprint when app_info.verify_ca
  is false, which is written to the profile's cert_override.txt
- Building a custom policy.json which is specific to the BMC and vendor
  implementation.

Functional differences with the chrome/selenium version
- Firefox kiosk mode has a more locked-down environment, including
  disabling context menus. This means the brittle workaround to disable
  them is no longer required.
- Firefox global policy allows the environment to be locked down
  further, including limiting accessing to all URLs except the BMC.
- There is now a dedicated loading page which can show status updates
  until the first BMC page loads. This page shows error messages if any
  of the early redfish calls fail.
- VNC client sessions are now shared with multiple clients, and firefox
  will be started on the first connection, and stopped when the last
  connection ends.
- Starting Xvfb is now deferred until the first VNC client connection.
  This results in a never-connected container using 5MB vs 30MB
  once Xvfb is started. Starting Xvfb has ~1sec time penality on first
  connection.
- The browser now runs in a dedicated non-root user
- All redfish consoles now hide toolbar elements with a CSS overlay rather than
  simulating other methods such as clicking the "Full Screen" button.
- ilo6/ilo5 detection is now done by a redfish call and the ilo5 path
  has less moving parts.

Change-Id: Ib42704a016dc891833a0ddbeae8054cac2c57d4d
Signed-off-by: Steve Baker <sbaker@redhat.com>
Assisted-By: gemini
2025-11-05 11:07:07 +13:00
Steve Baker
1b027a72d8 Improve logging when console unit doesn't start
Log the unit status and journal log when systemctl start fails for a
console container.

Also before the console is stopped, call journalctl for that unit. If
debug is enabled then the journal output will be logged.

Additionally, after a container is started, attempts are made to open a
socket to the VNC port and read some data. There is a delay between the
container starting and x11vnc actually listening and this race can be
triggered in automated tests, so this delays changing the console
enabled state until it is *really* ready.

Change-Id: I2c4867b6773f4f4eaa8b98e50a63881f0f4d08b0
Signed-off-by: Steve Baker <sbaker@redhat.com>
2025-11-05 11:05:48 +13:00
Clif Houck
7a67d4f183 Add a new 'category' field to the Portgroup object
Adds a new category field to the portgroup object. Foundational
work for first milestone of trait based port scheduling.

Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/955799
Change-Id: I5100144a330602996c27ed18d2bbde09be6e9571
Signed-off-by: Clif Houck <me@clifhouck.com>
2025-11-04 12:44:01 -08:00
Zuul
d9fc068630 Merge "api: Add schema for inspection rules API (requests)" 2025-11-04 14:03:49 +00:00
Zuul
769ba19870 Merge "Fixes for console containers functional testing" 2025-11-04 11:28:41 +00:00
Zuul
c307e44598 Merge "Remove bespoke logic for handling redirects while validating URLs" 2025-11-04 11:28:35 +00:00
Zuul
db2951e789 Merge "Increase default sync_power_state_interval" 2025-11-04 11:28:30 +00:00
Zuul
ab6409c92d Merge "Add generic redfish compatible vendor name" 2025-11-04 11:16:49 +00:00
Riccardo Pittau
3e778ef954 Handle HTTP 400 and 409 race condition in Redfish power operations
Treat HTTP 400 and 409 errors as success when the node is already
in the target power state, preventing deployment failures from
race conditions between power state change completion and state
verification timeout.

Also refresh system state to get current power state from BMC
instead of using potentially stale cached data.

Assisted-By: Claude Sonnet 4.5

Change-Id: Id66ff9c70a9dd6969e3ac7fc74328dfc6e0431bd
Signed-off-by: Riccardo Pittau <elfosardo@gmail.com>
2025-11-04 10:51:10 +01:00