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>
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>
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>
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>
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>
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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
... which were somehow overlooked in the previous attempt.
Change-Id: I242baa622079a3a4facde4cf19fb1818593fb668
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
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>
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>
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>
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>