Commit graph

14345 commits

Author SHA1 Message Date
Takashi Kajinami
b51930c0d2 Validate [molds] storage while loading config files
... instead of only documenting the valid choices.

Change-Id: I5f73da7f69242ec21dd60da36e7b176213888db1
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-12-20 19:38:05 +09:00
Zuul
534e9ff6b8 Merge "Support filtering portgroups by shard" 2025-12-19 16:51:36 +00:00
Zuul
3b4e3801a1 Merge "Remove ovn vtep support" 2025-12-18 23:10:55 +00:00
Zuul
0b6126ce28 Merge "OCI Basic Auth/Tag access" 2025-12-18 22:57:32 +00:00
Zuul
d069f2a886 Merge "fix redfish inspect system product name" 2025-12-18 21:01:37 +00:00
Jay Faulkner
4b58b8a823 Support filtering portgroups by shard
This was somehow missed during initial implementation. Adding ability to
filter portgroup by shard. This was mostly vibe coded with claude, with
me interupting to suggest better implementations when it did something
silly. Tested manually by a human using fake drivers :).

Closes-bug: #2134566
Generated-by: Claude code (claude)
Signed-off-by: Jay Faulkner <jay@jvf.cc>
Change-Id: Ic67c02763c2d832f616dc4526e4be891d639b976
2025-12-18 11:24:34 -08:00
Zuul
92ef93c384 Merge "fix: iPXE boot interface PXE capability detection" 2025-12-18 17:54:36 +00:00
Zuul
50aa083013 Merge "OCI: Add an option to fallback to HTTP" 2025-12-18 16:31:46 +00:00
Milan Fencik
9e47609f00 fix: iPXE boot interface PXE capability detection
The neutron network interface's add_ports_to_network() function only
checked for 'pxe_boot' capability when determining PXE capability,
but iPXE is also a form of PXE booting and should be treated the
same way. This caused inconsistent behavior for boot interfaces like
'http-ipxe' that have 'ipxe_boot' capability but not 'pxe_boot'
capability.

Without this fix, iPXE boot interfaces were incorrectly treated as
non-PXE capable, causing the neutron interface to create ports for
all baremetal ports with local_link_connection info during cleaning
operations, regardless of their pxe_enabled setting.

This change adds 'pxe_boot' capability to both iPXEBoot and
iPXEHttpBoot classes, ensuring that iPXE boot interfaces are
correctly recognized as PXE-capable.

Additionally, this adds the missing pxe_boot capability check to
the remove_ports_from_network() function, which was previously
missing this logic entirely. This ensures consistent port creation
and deletion behavior, preventing orphaned neutron ports after
cleaning operations.

Change-Id: I7721f917fb723e8a4cef69e0f7be1ece0238d7ed
Signed-off-by: Milan Fencik <milan.fencik@rackspace.co.uk>
2025-12-18 12:35:48 +00:00
Zuul
4bef17b9bc Merge "fix loading of built-in inspection rules" 2025-12-18 07:37:56 +00:00
Doug Goldstein
555c019bb7
fix loading of built-in inspection rules
The built-in inspection rules cannot be loaded because the jsonschema
validates them against the expected API however the built-in rules had a
'built-in' key that is not part of the schema and included the 'scope'
key which was ultimately dropped before inspection rules support landed.
The built-in rules also did not validate that the data was a list of
rules before attempting to utilize it giving an incorrect error.

Closes-Bug: 2136776
Change-Id: I36c290c9f92189281e11633e9a587918b0699ae3
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-17 16:44:09 -06:00
Zuul
1fecbce515 Merge "fix: inspection rules docs to match the code" 2025-12-17 19:48:01 +00:00
Zuul
78323a9016 Merge "update inspection rules docs and code to the same order" 2025-12-17 19:47:56 +00:00
Doug Goldstein
2c118a4d4c
fix: inspection rules docs to match the code
These inspection rules actions are implemented but were not documented
so add some documentation for them. The redfish inspection interface
also supports inspection rules.

Change-Id: I65894191affd9171bf68dc9b15725ed34a9724f9
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-17 10:18:52 -06:00
Afonne-CID
c11e12a45b Omit CapacityBytes for Redfish RAID MAX size_gb
When size_gb='MAX' is specified, Ironic was calculating the maximum
volume size and including it in ``CapacityBytes``. This calculated size
doesn't account for controller metadata overhead, causing iLO and other
controllers to reject the request with UnsupportedOperation.

Fix by omitting ``CapacityBytes`` from the Redfish payload when
size_gb='MAX', allowing the controller to calculate the optimal size
automatically and the actual volume size is queried and stored after
creation via ``update_raid_config()``.

Unit tests generated by AI.

Closes-Bug: #2132936
Assisted-by: Claude Sonnet 4.5
Change-Id: Ica2e31783b18fc2306369b0ee0d467aca17d4975
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-17 13:39:23 +01:00
Doug Goldstein
ade41cae47
fix redfish inspect system product name
The intention of this code is to read the system product name which is
stored in the model field per the Redfish spec and not in the name field
which will always store the name of the object we are working with. This
results in the value always being 'System'.

Closes-Bug: 2136233
Change-Id: I375fbe27253d7965e458be7b147d5b72cffa4e89
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-16 16:55:13 -06:00
Doug Goldstein
0255cc98a7
update inspection rules docs and code to the same order
Updated the docs and code to match the same order and to break out each
operation like it is in the code. Fixed incorrect indent of an example.
This is just mechanical to make visual inspection of the docs to the
code easier.

Change-Id: Ic96c5a1993d20347968c23c60393a4cde2de9a0c
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-16 16:42:51 -06:00
Zuul
6362fa4663 Merge "Trait Based Networking Simulator" 2025-12-16 20:37:00 +00:00
Zuul
1c1d885e8e Merge "Use per-node external_http_url for configdrive ISO" 2025-12-16 09:33:14 +00:00
Zuul
6fec6712f8 Merge "Add Redfish LLDP data collection support to the Redfish inspection interface." 2025-12-16 00:20:45 +00:00
Julia Kreger
52300e0a62 OCI Basic Auth/Tag access
In order to support the deployment of OCI images utilizing bifrost,
we also need to explicitly support basic authentication.

This has been extended to support inclusion of the authentication
credentials into the pull secret string, and fallback on the deploy
interface settings for static configuration. While this will likely
never be perfect, it is at least a forward step to better supporting
a variety of use cases.

Additionally, doing some of this highlighted some extraneous guard
rail style checks which exist elsewhere in the overall image handling
flow. A exeception check was added to prevent tag based deployments
from failing because the existing code structure of the guard rail
checks cannot gain the context around basic auth.
In part becasue the check directly uses the image_source as well,
as opposed to any other state data which is presently available
in deploy_utils when the image information is identified.
That situation highlights why additional fixes are needed,
but bug 2133885 was opened for that separately.

Claude also helped me out with the unit tests.

Assisted-By: Claude Code - Claude Sonnet 4.5
Change-Id: I13f4d5cd8b98ad88e7b6088c79c7b014b6461668
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-12-15 13:13:52 -08:00
Julia Kreger
595258da9f OCI: Add an option to fallback to HTTP
While working on trying to get OCI support in CI, I realized that the
default pattern setup with Bifrost was to setup a registry *without*
HTTPS.

This is different from the common practice and expectation of operational
OCI registries always utilizing HTTPS as the underlying transport mechanism.

The net result is an idea of offering the ability to "fall back" to HTTP
automatically, and make it a configuration option which needs to be
chosen by an operator.

The code pattern is such that the invocation of the client code paths
automatically identify the SSLError, and then attempt to fallback
to HTTP, while also saving the fallback on the class instance so the
additional URL generation calls for the underlying HTTP(S) client
gets an appropriate URL.

By default, this new option is disabled.

Claude helped with the tests, which was nice of it.

Assisted-By: Claude Code - Claude Sonnet 4.5
Change-Id: I3f28c8d6debe25b63ca836d488bc9fd8541b04d9
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-12-15 13:08:50 -08:00
Zuul
9c00256b3b Merge "fix: agent inspection hooks failure does not clean up" 2025-12-15 10:17:53 +00:00
Zuul
bdbb371ecd Merge "Use native override of RequestContext.from_environ" 2025-12-15 10:15:34 +00:00
Zuul
7fe20fe31f Merge "Replace remaining usage of policy.json" 2025-12-15 01:11:35 +00:00
Zuul
078728aa34 Merge "doc: trivial: Quick revision of README" 2025-12-15 01:11:24 +00:00
Zuul
6ed4f6f561 Merge "remove sushy_oem_idrac usage" 2025-12-15 01:11:18 +00:00
Takashi Kajinami
2570f7559f Use native override of RequestContext.from_environ
The from_environ method provides the native interface (by keyword
arguments) to pass additional arguments to build a RequestContext
instance.

Also fix the ignored kwargs.

Change-Id: Id02e2212e1877c7913218d87188ba8b359ce2757
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-12-14 19:38:10 +09:00
Zuul
aa8ae96017 Merge "Move check_image_size to deploy_utils" 2025-12-14 08:11:28 +00:00
Doug Goldstein
30113a4c23
fix: agent inspection hooks failure does not clean up
When the using the agent inspector interface and an exception happens
during execution of the hook, the node is not cleaned up resulting in
stale Neutron ports and ramdisk files.

Closes-Bug: 2135265
Change-Id: I69ceec12fc0beea586176a768d864a22261cdb93
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-12 15:23:57 -06:00
Zuul
42883161cb Merge "docs: a little more clarity around the state of ipxe+uefi" 2025-12-12 19:00:01 +00:00
Zuul
a4250a6d62 Merge "Include all relevant error messages in exception" 2025-12-12 18:17:01 +00:00
Nidhi Rai
e273bb958a Add Redfish LLDP data collection support to the Redfish inspection interface.
- _collect_lldp_data(): Collects LLDP data from Redfish NetworkAdapter Ports via Sushy library, walking the Chassis/NetworkAdapter/Port hierarchy
- Integration with inspect_hardware(): LLDP collection is called during hardware inspection and results are stored in plugin_data['parsed_lldp']

The implementation supports standard Redfish LLDP data from Port.Ethernet.LLDPReceive fields and can be extended by vendor-specific implementations (like,  Dell DRAC OEM endpoints) through method overriding.

Change-Id: I25889b2a2eb8f6a2d796dfbeb598875a7c07b22c
Signed-off-by: Nidhi Rai <nidhi.rai94@gmail.com>
2025-12-12 09:40:00 +05:30
Takashi Kajinami
dcc668fae9 Replace remaining usage of policy.json
It was deprecated long ago in favor of policy.yaml and is being removed
soon.

Change-Id: I1a5804cd15e1bc79ad1dc9900e61584902ef4468
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-12-12 01:40:56 +09:00
Zuul
530c88757a Merge "[api-ref] Fix api-ref to mention list port by cg" 2025-12-11 14:46:30 +00:00
Doug Goldstein
b47afbca31
remove sushy_oem_idrac usage
Ironic now depends on a minimum version of sushy that has integrated
sushy_oem_idrac into the code base so there is no point in falling back
to pulling in sushy_oem_idrac so remove the path.

Change-Id: I17217e0fe07b4819863706f473af12d87da46429
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-11 08:19:20 -06:00
Zuul
9fdd30545c Merge "is-empty inspection rule to handle missing field" 2025-12-11 12:15:42 +00:00
Zuul
f09d80cce5 Merge "Separate states code from states constants" 2025-12-11 05:33:25 +00:00
Jay Faulkner
2622864b70 [api-ref] Fix api-ref to mention list port by cg
Ports can be listed by conductor group since Flamingo, but due to an
error in the api-ref update, we weren't properly documenting it.

Change-Id: I98b329897946ef05ff82df5f1683075f17ecd3c0
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
Signed-off-by: Jay Faulkner <jay@jvf.cc>
2025-12-10 11:17:07 -08:00
cid
7e4ffe7c80 Include all relevant error messages in exception
Retry failures report only the last error which could be misleading,
so include all relevant errors in the final exception.

Closes-Bug: #2098977
Change-Id: I8c0fb0328a6b3ee084813961d9a959af996a6dcb
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-10 19:31:27 +01:00
Afonne-CID
ca0ee56ccc is-empty inspection rule to handle missing field
Pass the ``is-empty`` rule check when checking fields that don't
exist in the inventory.

Closes-Bug: #2132346
Change-Id: I177740dd3a8558ed357af22c581e5cbf1c3e862a
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-10 15:32:29 +01:00
Afonne-CID
041f0a586d Move check_image_size to deploy_utils
Move the image size check earlier in the deploy flow so it runs only
when it matters and reuses already-fetched image info.

Closes-Bug: #2133885
Change-Id: I40518762e3032bbdcfe1d8e7e929147a761a95f8
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-10 15:14:15 +01:00
Zuul
4c5cbeb1ef Merge "Add PCIe function fields to redfish inspection" 2025-12-10 04:11:33 +00:00
Zuul
a7dc759140 Merge "fix: do not allow nested paths in loader_file_paths" 2025-12-09 22:41:27 +00:00
Zuul
6ed4bfa5d8 Merge "Trivial: Fix instance_name policy name" 2025-12-09 21:33:34 +00:00
Zuul
f0d8016bdb Merge "Add documentation regarding the is_root_volume RAID config" 2025-12-09 19:53:10 +00:00
Zuul
d32a13212a Merge "Implement networking service RPC API methods" 2025-12-09 17:33:02 +00:00
Doug Goldstein
a382b21e6e
fix: do not allow nested paths in loader_file_paths
The intention was not to allow nested paths here but instead to only use
base paths to files we will serve up.

Change-Id: I877a7da4ed41bceb9f6f4ee229e8e9dc938d9e5b
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-12-09 09:43:13 -06:00
Jay Faulkner
c69caf28e8
Separate states code from states constants
Currently, the nova virt driver for ironic has a file containing nothing
but our states as constants. A recent bug was caused, in part, by these
not being properly updated. The goal here is to move ironic state
machine code and constants into separate files -- once merged, I will
update the nova driver to use a copy of this file (and add a comment to
the file here saying it's synced over there). This should help prevent
this kinda issue in the future and in the long run cause less duplicated
work.

Assisted-by: Claude Code (claude)
Signed-off-by: Jay Faulkner <jay@jvf.cc>
Change-Id: Ief4533b69899c893f150ef3a7006fb99f7e42964
2025-12-08 14:17:14 -08:00
Julia Kreger
094337f14d Remove ovn vtep support
As discussed during the PTG, VTEP support for OVN is being
removed in order to eliminate confusion and also the Ironic
community is working on a suitable solution to these problems
which integrates with Neutron.

Closes-Bug: 2106460
Change-Id: I4147371c28cf786edb6f29ea83e3b7103f268347
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
Signed-off-by: Jay Faulkner <jay@jvf.cc>
2025-12-08 13:28:30 -08:00