13549 Commits

Author SHA1 Message Date
Steve Baker
4ed44172b4 Add vnc-container image build
The files in tools/vnc-container allow a container image to be built
which supports Ironic's graphical console functionality.

For each node with an enabled graphical console, the service ironic-novncproxy
(or nova-novncproxy) will connect to a VNC server exposed by a container
running this image.

If the devstack ir-novnc serivce is enabled then this container image
will be built locally and ironic configured to used it for the systemd
console container provider.

This makes a devstack environment functional in accessing graphical
consoles for Dell, HPE and Supermicro.

Related-Bug: 2086715
Change-Id: I0842570cca22ac0e67d358c30225e8e08561f459
2025-03-02 22:27:33 +00:00
Steve Baker
e41cb93eeb Implement drivers redfish-graphical, fake-graphical
New ``console`` drivers ``redfish-graphical`` and ``fake-graphical``
have been added. This allows the graphical console to be accessed for
Dell iDRAC, HPE iLO, and Supermicro hosts. The ``fake-graphical`` driver
is useful for demonstrating the full integration of
``ironic-novncproxy`` and the ``systemd`` provider of
``ironic.console.container``.

Related-Bug: 2086715
Change-Id: If1899aedbcda606895bab120e301a006818b85a5
2025-03-02 22:27:33 +00:00
Steve Baker
48557942ac Add systemd provider for console containers
A new entry point ``ironic.console.container`` is added to determine how
console containers are orchestrated when ``ironic.conf``
``[vnc]enabled=True``. By default the ``fake`` provider is specified by
``[vnc]container_provider`` which performs no orchestration. The only
functional implementation included is ``systemd`` which manages
containers as Systemd Quadlet containers. These containers run as user
services and rootless podman containers. Having ``podman`` installed is
also a dependency for this provider. See ``ironic.conf`` ``[vnc]``
options to see how this provider can be configured.

The ``systemd`` provider is opinionated and will not be appropriate for
some Ironic deployment methods, especially those which run Ironic inside
containers. External implementations of ``ironic.console.container`` are
encouraged to integrate with other deployment / management methods.

Related-Bug: 2086715
Change-Id: Ib890c3c7be91ddd78a43b9c5261dd1d8c1054c04
2025-03-02 22:27:33 +00:00
Zuul
5e22704dad Merge "Add extra log to is_image_available" 2025-02-28 02:59:10 +00:00
Zuul
1471984fc0 Merge "ci: focus ironic-tempest-bios-ipmi-direct-tinyipa" 2025-02-27 05:27:27 +00:00
Satoshi-Sh
e7d1f8e211 Add extra log to is_image_available
Added a reason why the image is not available for the debuggin.

Partial-Bug: #2099276
Change-Id: Id0f71e201e7e4509e4dd34fa18d1c980dc28b4d3
2025-02-25 15:44:55 +00:00
Zuul
b44cce176f Merge "Add ironic-novncproxy service" 2025-02-24 19:06:43 +00:00
Zuul
de4d5733ee Merge "More reliable TinyIPA build with network retries" 2025-02-23 15:02:27 +00:00
Julia Kreger
1afc11be8d ci: focus ironic-tempest-bios-ipmi-direct-tinyipa
This job was previously attempting to run all of our scenario tests,
which is nice, but the reality is that so many test steps also increases
chances for build history.

As such, dialing the job so we're performing the basic needful and
not trying to perform every test possible.

Change-Id: Ie4845fb5810a379bf6209179693eed27301b24a3
2025-02-20 22:16:01 +00:00
Zuul
d3c74c6a4b Merge "Fix devstack plugin for centos" 2025-02-20 17:02:17 +00:00
cid
f333fd4d1c More reliable TinyIPA build with network retries
Wraps `wget` commands with sleep and mutiple retry support
for resilient network downloads.

Partial-Bug: #2098417
Change-Id: Id3e083cc97b71211e5080ad21e2c09d04d8559fa
2025-02-20 15:48:28 +01:00
Zuul
f9c3c1d9f2 Merge "Mention removing codespell job in bugfix branches" 2025-02-19 22:30:12 +00:00
Steve Baker
beaaf405d3 Add ironic-novncproxy service
This is a forklift of the nova novncproxy service to act as the noVNC
front-end to graphical consoles.

The service does the following:
- serves noVNC web assets for the browser based VNC client
- creates a websocket to proxy VNC traffic to an actual VNC server
- decouples authentication traffic so that the source server can have
  a different authentication method than the browser client

The forklifted code has been adapted to Ironic conventions, including:
- [vnc] config options following Ironic conventions and using existing
  config options where appropriate
- Removing the unnecessary authentication method VeNCrypt, leaving only
  the None auth method.
- Adapting the ironic-novncproxy command to use Ironic's service launch
  approach, allowing it to be started as part of the all-in-one ironic
- Replace Nova's approach of looking up the instance via the token.
  Instead the node UUID is included in the websocket querystring
  alongside the token
- Removing cookie fallback when token is missing from querystring
- Removing expected protocol validation in the websocket handshake
- Removing internal access path support
- Removing enforce_session_timeout as this will be done at the
  container level

Related-Bug: 2086715
Change-Id: I575a8671e2262408ba1d690cfceabe992c2d4fef
2025-02-19 20:17:57 +00:00
Kaifeng Wang
e994d405b0 Remove gmr from the docs
gmr support was removed from ironic, but docs still mention it.

Change-Id: I5e496e2f50e8669eaa7b168994d1640de32a1129
2025-02-19 23:40:12 +08:00
Zuul
88a96b2930 Merge "deprecate shellinabox" 2025-02-19 08:03:48 +00:00
Zuul
e44a969740 Merge "trivial: lock dnsmasq check to ubuntu" 2025-02-19 04:37:07 +00:00
Zuul
0bcbe9945d Merge "move hooks execution into shareable module" 2025-02-18 23:36:22 +00:00
Zuul
96f9d9da28 Merge "OVN UEFI IPv6 CI job" 2025-02-18 21:46:02 +00:00
Julia Kreger
449bc1a825 deprecate shellinabox
Shellinabox hasn't received an update in 7 years.
Debian recently asked for maintainership to be handed over due to
open issue counts and lack of responses.

All sorts of open issues exist. It appears branches were deleted
in late 2024, forks still have them though.

Basically, looks like shellinabox is abandoned, and we should
treat it as such and abandon support in Ironic.

Change-Id: I5704e1a6a6a816e1cca3b5d0c791eed030cfc563
2025-02-18 10:25:03 -08:00
Zuul
676b8c69ac Merge "OCI: Send the auth header to IPA" 2025-02-18 16:03:19 +00:00
Riccardo Pittau
fecdaed265 Mention removing codespell job in bugfix branches
Change-Id: Ifaaf1f0c1d583cff21987d704c4a662b3f0bff1b
2025-02-18 10:12:46 +01:00
Zuul
f7155fc38e Merge "trivial: de-distro dnsmasq version check" 2025-02-17 22:19:43 +00:00
Julia Kreger
0aadeeea7d Fix devstack plugin for centos
The emulator *and* the EFI binary paths are different
when using Centos/Fedora, and Fedora/Centos are distinctly
different with EFI folder paths.

Change-Id: I2c6ba884735f22cc9153de0a24282758ffbdc496
2025-02-17 11:12:10 -08:00
Zuul
3603e60c32 Merge "Apply Rules: inspection rules migration" 2025-02-15 03:28:55 +00:00
Zuul
baf7ff9c18 Merge "oci: fix auth config loading" 2025-02-14 22:47:29 +00:00
Zuul
12e095ccf3 Merge "Mask all driver_internal_info in node output" 2025-02-14 22:47:26 +00:00
Zuul
c1a7bf0d09 Merge "Utility functions for graphical console drivers" 2025-02-14 22:47:23 +00:00
Julia Kreger
690bc31900 trivial: lock dnsmasq check to ubuntu
Centos Stream 9 has 2.90 at this point, we don't need this check
outside of ubuntu right now.

Change-Id: I6510aa8b893d3dea81ec6b7f1cb0b9fcb6ae5edc
2025-02-14 10:48:37 -08:00
Julia Kreger
f5083f7a44 trivial: de-distro dnsmasq version check
While doing some work on a fips-enabled machine, using centos,
I noticed the check is looking for a ubuntu package version.

Realistically, that is wrong, since 2.90 in general is what
we're seeking.

Change-Id: I02179f10a360a5dd83f4efe28c1ecbb51afb57ab
2025-02-14 10:46:13 -08:00
Zuul
715e9c8e71 Merge "Pass agent token to get command results" 2025-02-14 16:12:21 +00:00
Harald Jensås
782045852f OVN UEFI IPv6 CI job
IPv6 job using UEFI and OVN with dhcpv6-stateful address mode.

Updates the devstack plugin to ensure CentOS DIB ironic-python-agent is
always used for dhcpb6-stateful, udhcpc in tinycore does not support
DHCPv6.

Ensure mtu on the ironic-provision network matches PUBLIC_BRIDGE_MTU
when Ironic IPv6 is used. This ensures we do not get packet drops from
over-mtu.

Devstack plugin will ignore any HOST_IPV6 address discovered, always
using the magigv6 interface and 'fc00::1' as IRONIC_HOST_IPV6.

Change-Id: Iab97d78d7a075eaef3bdcfc08fc4f184a5ea490a
2025-02-14 15:36:21 +01:00
Steve Baker
c0681ccf63 Utility functions for graphical console drivers
These are functions used by both the novnc-proxy and the graphical
console drivers related to session management. They are added in this
position in the series for ease of reviewing, and to keep the
novnc-proxy change specific to code which has been forklifted and
adapted from Nova.

Change-Id: I72aa2205f92c153809300fd304558427141cda78
2025-02-14 13:40:04 +13:00
cid
279392966b Pass agent token to get command results
Change-Id: Iad0d8086e1e79b59da3f9940b83128a3b34d4787
2025-02-14 00:25:22 +01:00
cid
15df33437b Apply Rules: inspection rules migration
Change-Id: Icca713bb4ef00d5bffca6e529c8bea4a7fe1f285
2025-02-13 16:17:25 +01:00
cid
d6a692e3fa DB: inspection rules migration
Change-Id: I83b7e37ad44dca395144ce14510a1de0f6eeefa5
2025-02-13 16:17:25 +01:00
Julia Kreger
437ce1467c OCI: Send the auth header to IPA
This change takes the identified authorization header and sends it
in the command to IPA as an argument. This enables a future IPA
patch to recognize an authorization rejection, and to leverage the
header to authenticate to the remote image service.

Also addresses a case where we neglect to preserve the auth token
in the case of a container URL reference with digest value and adds
a corresponding test which didn't exist either.

Change-Id: I8346eb56e90a5a3e2bc68a9e5cd345121f734245
2025-02-13 06:47:54 -08:00
Julia Kreger
6aaa84f11e oci: fix auth config loading
When testing, I guess I didn't actually test loading the token
from config, and relied upon mocking. However, turns out the code
used the wrong load command (loads, versus load), which passed
unit testing, but didn't work when I gave the config a try.

Fixes the call and the testing so it properly passes now.

Change-Id: I4750a82ea07bc803600fddebd16f14a201ae406e
2025-02-12 11:46:09 -08:00
Julia Kreger
5262536417 oci: fix hang with 429 error code handling
While doing some additional testing, I've started to get 429 errors
from Quay which were causing my requests to hang. This was because
the built in retry logic with adapter use. As such, I removed the
adapter use and I now get a 429 error as expected and logged properly.

This was not caught with existing testing because it was getting
captured and held inside of urllib3 with the adapter usage.

Change-Id: I68a532a9765fbf90870ef4372b93738940eabd9e
2025-02-12 10:48:49 -08:00
Doug Goldstein
59804114fb
move hooks execution into shareable module
To allow other inspect interfaces to execute hooks in a common way, move
the execution code into a common inspect_utils module.

Change-Id: Idfe0a36443969347cff41fdb6900a3bc79209823
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2025-02-11 23:19:41 -06:00
Zuul
472744f390 Merge "bootc deploy interface - for bootable containers" 2025-02-11 17:15:53 +00:00
Zuul
e042073a08 Merge "[docs] Fix link to metal3-integration page" 2025-02-11 14:35:59 +00:00
Zuul
42c72bd2ac Merge "CI: Only artificially pin down the mtu in multinode" 2025-02-11 11:48:52 +00:00
Riccardo Pittau
e0a9a21576 [docs] Fix link to metal3-integration page
Change-Id: I14be65dad0ebd98fdd001c5cf490792f52ae8642
2025-02-11 09:33:51 +01:00
Julia Kreger
c7fa447ab6 bootc deploy interface - for bootable containers
Adds a ``bootc`` deployment interface which can be enabled to
perform deployment of bootable containers. This enables a streamlined
workflow where an operator/user can push container updates and does not
need to build intermediate disk images and then post those disk images
to facilitate the deployment of a bare metal node.

Closes-Bug: 2085801
Change-Id: Iedb93fe47162abe0bd9391921792203301bfc456
2025-02-10 19:58:20 +00:00
Zuul
814384f2cf Merge "Add basic documentation on metal3-integration job" 2025-02-10 18:59:56 +00:00
Julia Kreger
ec53c6b5d2 CI: Only artificially pin down the mtu in multinode
So the prime driver behind pinning the MTU down on our interfaces is so
traffic can cross mutlinode vxlan tunnels between nodes where the devstack
plugin is executing to support more complex tests.

But the reality is that doesn't always make sense, and when Neutron
has a default mtu override based upon "upstream" traffic constraints,
that is likey okay as well.

Part of the CI configuration auto-pins the MTU down, which is fine
for single node testing, however with multinode we need to pin the
MTU further down to try and prevent packets from being dropped on
the internal interfaces use to wire up test VMs.

Change-Id: Idc145f4eea87a8db69202b8d7953975d7d5cba2c
2025-02-10 09:54:05 -08:00
Zuul
9cf39b3769 Merge "Trivial: Remove the long deprecated token arg" 2025-02-10 11:37:12 +00:00
Riccardo Pittau
520d01a0a1 Add basic documentation on metal3-integration job
Give an overview of the metal3 integration job, its workflow,
and adds usefule links to familiarize with the metal3 project
and reach the metal3 community.

Change-Id: I94bd6a90f813af7323a7c3363577953a69e62ade
2025-02-10 11:42:20 +01:00
Zuul
9847c41238 Merge "Automatic zstd detection and decompression..." 2025-02-10 05:43:37 +00:00
Zuul
ab1fe27baa Merge "OCI container adjacent artifact support" 2025-02-10 05:43:34 +00:00