Commit graph

14357 commits

Author SHA1 Message Date
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
Zuul
04aa88aae4 Merge "Use new bifrost ci job name" 2025-12-06 19:03:52 +00:00
Afonne-CID
2756b8e81b Trivial: Fix instance_name policy name
Change-Id: Ie9c8eb16747a7abd21fb08cf8d34226c22157d89
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-06 01:09:44 +01:00
Zuul
d2d4c57ffa Merge "Add a kubernetes provider for console container" 2025-12-05 16:38:18 +00:00
Zuul
6b6b932714 Merge "Switch graphical console image to ubuntu by default" 2025-12-05 16:38:12 +00:00
Zuul
ba763f199e Merge "Drop xinetd/tftpd on CentOS 9" 2025-12-05 16:30:11 +00:00
Nidhi Rai
33bfc1e281 Add PCIe function fields to redfish inspection
This patch adds support for extracting PCIe function identification
fields (device_class, device_id, vendor_id, subsystem_id,
subsystem_vendor_id, revision_id) during redfish hardware inspection.

The fields are extracted from PCIe functions and stored in a flat
structure in the inspection inventory, making them available for
inspection rules and hardware identification.

Also adds test coverage including edge cases like
missing PCIe devices, empty collections, and partial data scenarios.

[Removed This changes]Additionally adds system.model field extraction with proper None
handling and test coverage.

Depends-On: I1ec49e35a53abb8efdae639629cd819ccabbe620
Change-Id: I218c3b3865c07cc2c7fffc21a766cdef36759cd8
Signed-off-by: Nidhi Rai <nidhi.rai94@gmail.com>
2025-12-05 11:53:29 +05:30
Zuul
9d572791e4 Merge "Add a conductor liveness check utility script" 2025-12-05 02:04:20 +00:00
Zuul
977300d456 Merge "Generate network plan based on trait based networking config" 2025-12-04 22:55:37 +00:00
Clif Houck
d3d65ee2c6
Trait Based Networking Simulator
Adds a tool that will ingest a TBN configuration file along with test
network/port-like objects in order to simulate how TBN would plan the
network for a node.

Change-Id: Ia7fbb9b651e4ed4c63a105484856de7f38bc541c
Signed-off-by: Clif Houck <me@clifhouck.com>
2025-12-04 15:37:13 -06:00
Zuul
674d21bf4c Merge "split error messages in image cache for more clarity" 2025-12-04 20:22:23 +00:00
Allain Legacy
278cf5f963 Implement networking service RPC API methods
Implements the core business logic for the networking service manager,
replacing stub implementations with fully functional network operations:

- Port configuration methods (update_port, reset_port) with VLAN
  validation and switch driver integration
- Port channel methods (update_portchannel, delete_portchannel) with
  placeholder implementations for future support
- Switch discovery and information retrieval (get_switches)
- Decorator-based serialization for thread-safe switch operations
- Decorator-based VLAN validation against allowed/denied lists
- Dynamic switch driver selection and management using the driver
  framework from the previous commit

This implementation uses the driver factory and adapter infrastructure
to dynamically load and manage switch drivers, enabling support for
multiple switch vendors. The manager coordinates network operations
across distributed switches while maintaining thread safety through
optional per-switch operation serialization.

Related-Bug: 2113769
Assisted-by: Claude/sonnet-4.5
Change-Id: I0722b116d29cddae02a4a79a4ea4b767709ecad2
Signed-off-by: Allain Legacy <alegacy@redhat.com>
2025-12-04 15:06:38 -05:00
Steve Baker
28168c4168 Add a kubernetes provider for console container
A new ``ironic.console.container`` provider is added called
``kubernetes`` which allows Ironic conductor to manage console
containers as Kubernetes pods. The kubernetes resources are defined in
the template file configured by ``[vnc]kubernetes_container_template``
and the default template creates one secret to store the app info, and
one pod to run the console container.

It is expected that Ironic conductor is deployed inside the kubernetes
cluster. The associated service account will need roles and bindings
which allow it to manage the required resources (with the default
template this will be secrets and pods).

This provider holds the assumption that ironic-novnc will be deployed in
the same kubernetes cluster, and so can connect to the VNC servers via
the pod's ``status.hostIP``.

Assisted-By: gemini
Change-Id: Ib91f7d7c15be51d68ebf886e44efaf191a14437b
Signed-off-by: Steve Baker <sbaker@redhat.com>
2025-12-04 11:25:05 -08:00
Steve Baker
856238c56a Switch graphical console image to ubuntu by default
The centos Containerfile still exists and the launch scripts have been
adapted to work on both distros.

The ubuntu container has been tested with noble. The container built
in the CI jobs is bound to the version of ubuntu which the host is
running, which will provide functional testing validation when jobs are
moved to newer releases.

Change-Id: I1954e418543acf939bf65189121484e038f3737c
Signed-off-by: Steve Baker <sbaker@redhat.com>
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-12-04 11:24:43 -08:00
Zane Bitter
eccfb8bb5b Use per-node external_http_url for configdrive ISO
When the per-node external_http_url feature was introduced by
c197a2d8b2, it only applied to a config
floppy. This fix ensures that it is also used for a configdrive ISO. The
previous patch (0d59e25cf8) started using
it for boot ISOs.

Change-Id: I0e1e8dbba5a62a6196a5e6a8a9773fa89db6bc76
Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
2025-12-04 11:18:19 -08:00
Clif Houck
68277dd05a
Generate network plan based on trait based networking config
Change-Id: I46c55b424f95df8f811c963ec75e5820124e630f
Signed-off-by: Clif Houck <me@clifhouck.com>
2025-12-04 12:26:56 -06:00
Jakub Jelinek
e4ac3dd76b Add documentation regarding the is_root_volume RAID config
The functionality has been implemented in the change:
https://review.opendev.org/c/openstack/ironic-python-agent/+/963200
This change documents the possibility to specify the is_root_volume
parameter of the target_raid_config of a node, which either makes
it the root volume, or prevents it from becoming a root volume.

Change-Id: I72fab180eaf361f9bedb04a1a24dfb9bcdf230cf
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
2025-12-04 13:04:07 +00:00
Allain Legacy
05b9dc22c7 Add networking driver framework infrastructure
Implements the foundational driver framework for the networking service,
providing abstraction and loading mechanisms for network switch drivers:

- Driver factory for loading and managing switch driver plugins using
  stevedore, with support for multiple concurrent drivers
- Driver adapter for preprocessing switch configuration files and
  managing driver lifecycle
- Driver translators for converting between ironic network data formats
  and driver-specific configuration formats
- Utility functions for network configuration validation, VLAN range
  parsing, and RPC transport detection

This framework provides the foundation for integrating various network
switch drivers (e.g., networking-generic-switch) with the ironic
networking service. The framework is used by the manager implementation
added in the subsequent commit.

Related-Bug: 2113769
Assisted-by: Claude/sonnet-4.5
Change-Id: Ifb6e662ef59f9e12aad7c34356d2e78c3ebb4143
Signed-off-by: Allain Legacy <alegacy@redhat.com>
2025-12-03 07:38:12 -05:00
Steve Baker
194b638c72 Add a conductor liveness check utility script
This script runs a liveness check on the configured conductor hostname
and will fail if the conductor is not online. Its intended purpose is to
be used as a kubernetes pod startup or liveness probe for the conductor
container.

Change-Id: I88288e0d7a1da4ec99f31c20771299cce2499bf0
Signed-off-by: Steve Baker <sbaker@redhat.com>
2025-12-03 10:22:09 +13:00
Zuul
7495f77258 Merge "Trivial: Fix typo in documentation" 2025-12-02 15:49:38 +00:00
Afonne-CID
1b2504428c Trivial: Fix typo in documentation
Change-Id: Ie43b754f87f9fa0e6e26c17c9a1f30936b96f868
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-02 14:50:46 +01:00
Afonne-CID
91159a4394 Drop xinetd/tftpd on CentOS 9
Drop xinetd/tftpd on CentOS 9 to fix TFTP setup failure

Closes-Bug: #2098533
Assisted-by: Claude 4.5 Sonnet
Change-Id: I5ed12279d446839587c512194d1230a27622eb00
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025-12-02 14:49:39 +01:00
Zuul
2ba9e6b598 Merge "fix: ensure that the bootloader path exists" 2025-12-01 16:10:28 +00:00
Zuul
792bc9bed0 Merge "Add standalone networking service for ironic" 2025-12-01 14:20:32 +00:00
Riccardo Pittau
c789f480b3 Use new bifrost ci job name
We only use DIB based ipa ramdisks and changed bifrost jobs
names.

Depends-On: I569a766826405513f7beab5d45a52a8bbf42ddfd
Change-Id: I8dc17087d595872d660c9a90c8dbafef268ad02a
Signed-off-by: Riccardo Pittau <elfosardo@gmail.com>
2025-12-01 15:07:06 +01:00
Zuul
acb78ef560 Merge "Remove ironic-inspector jobs and leftovers from zuul settings" 2025-11-30 18:37:22 +00:00
Zuul
091fc050f8 Merge "Drop remaining references to ironic-inspector" 2025-11-30 17:51:40 +00:00
Takashi Kajinami
2cb813c034 drac: Deprecate unused options
These options have been unused since wsman driver interfaces were
removed[1].

[1] 578f24bf18

Change-Id: Id080693495dde60330a05fb960b5f10a155a3b3c
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-11-28 23:51:25 +09:00
Allain Legacy
b8f3318ca6 Add standalone networking service for ironic
Implements the foundational infrastructure for a new standalone
networking service that can operate independently of the main ironic
conductor. This commit establishes the service skeleton with:

- RPC API layer with oslo.messaging integration for remote calls
- Public API interface for conductor/API to interact with the service
- RPC service implementation for handling network requests
- Stub networking manager with method signatures (implementation
  added in subsequent commit)
- Service entry point (ironic-networking command) for deployment
- Configuration options for service behavior and networking backend
- Infrastructure and packaging changes for the new service

The manager includes stub implementations that raise NetworkError,
with the full implementation of network operations, driver framework
and switch drivers are added in subsequence commits.

Related-Bug: 2113769
Assisted-by: Claude/sonnet-4.5
Change-Id: I351c7afe96cbcebd6b2e2bb5f0b4f17b5d804ceb
Signed-off-by: Allain Legacy <alegacy@redhat.com>
2025-11-27 11:39:59 -05:00
Takashi Kajinami
1991a6de62 Remove ironic-inspector jobs and leftovers from zuul settings
... which were somehow overlooked in the previous attempt.

Change-Id: I242baa622079a3a4facde4cf19fb1818593fb668
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-11-28 01:37:55 +09:00
Takashi Kajinami
d12fc12a88 Drop remaining references to ironic-inspector
Remove a few remaining references to ironic-inspector, which were not
covered by 32dd5ec596 which removed
integration with ironic-inspector.

Change-Id: Ib391c0f697c7f90f99660cf333deb0cd25a3bc05
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-11-28 01:35:34 +09:00
Zuul
f2a3ec5d5e Merge "Move configdrive code to configdrive_utils" 2025-11-26 19:26:58 +00:00
Doug Goldstein
7a0a9ef784
fix: ensure that the bootloader path exists
Ensure that the path where we are copying the bootloader into exists
before we copy the file in. Unfortunately the existing code wouldn't
work in the intended case because os.path.split("snponly.efi") returns
("", "snponly.efi") so we would never pass the first check so we would
not create the path. This keeps the same behavior of allowing a nested
path structure to not change the behavior so that this can be
backportable while fixing the issue and switching the pathlib to provide
a safer interface going forward.

Change-Id: Iaf756f634832310431020abd758b59c749aecb21
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-11-26 10:56:37 -06:00
Zuul
9cf56273cc Merge "fix: use the correct path to the image when deep image inspection is off" 2025-11-26 09:52:52 +00:00
Zuul
de6f5b9e73 Merge "Update release mappings for new ironic release 33.0" 2025-11-25 17:11:31 +00:00
Doug Goldstein
dca688bead
fix: use the correct path to the image when deep image inspection is off
When deep image inspection is disabled, the incorrect path was used to
determine the image format of the file resulting in a no such file or
directory exception which bubbled up and made it appear as if the cache
was missing.

Change-Id: Ibaf1486da9510fdad479523159797815e783e5f6
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-11-25 09:50:35 -06:00
Zuul
d89ed97f60 Merge "chore: bump to latest pre-commit tools" 2025-11-25 10:53:49 +00:00
Zuul
385357ad46 Merge "Fail flat driver rebind when no VIFs are bound" 2025-11-25 10:38:39 +00:00
Riccardo Pittau
643b6ced00 Update release mappings for new ironic release 33.0
To justify a new major release, there were some significant
changes since 32.0, even though not breaking:
Removed inspector inspect interface (was already deprecated)
Removed sushy-oem-idrac from requirements

API & RPC Updates:
API version: 1.101 → 1.104
RPC version: 1.61 → 1.62

New Features:
API 1.104: instance_name field on nodes
API 1.103: category field on portgroups
API 1.102: physical_network field on portgroups

Deprecations:
Final deprecation of irmc hardware type
ilo driver deprecation warning added
Deprecation of ironic.api.wsgi:initialize_wsgi_app

Change-Id: I205e8968a4e74746cab59cf2e737f9c8f3779327
Signed-off-by: Riccardo Pittau <elfosardo@gmail.com>
2025-11-25 10:53:21 +01:00