Commit graph

230 commits

Author SHA1 Message Date
Stephen Finucane
1ef438f996 Migrate setup configuration to pyproject.toml
The only thing of note is the use of data files: while pbr allowed you
to include directories in a glob, setuptools only allows individual
files. This necessitates expanding out the list of files we wish to
copy.

Change-Id: I65156249c3494708d79789be23afb2d69c194848
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2025-09-22 11:46:52 +01:00
Jay Faulkner
4349e4156e Drop wsgi script, docs around mod_wsgi
Ironic, like most openstack services these days, needs to have it's wsgi
module referenced as a module, and used under something like uwsgi or
gunicorn instead of with Apache mod_wsgi.

Assisted-by: claude code
Change-Id: I6a2c2688f73b71f94103622a9e821cab67be053e
Signed-off-by: Jay Faulkner <jay@jvf.cc>
2025-08-26 21:10:01 +00:00
Zuul
3ff6190491 Merge "Remove Python 3.9 support" 2025-08-06 22:55:39 +00:00
Takashi Kajinami
489af188c0 Remove rootwrap
Ironic no longer uses rootwrap since iscsi deploy was removed. See [1]
for details.

Remove the config files and the command for rootwrap because these are
useless. We can remove these from the repository first to force distros
get rid of these.

[1] be09717be2

Change-Id: I0a8e26e8990eae8108537541159f7810d35b70f1
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-07-21 23:38:22 +09:00
Takashi Kajinami
34332802c0 Remove Python 3.9 support
Python 3.9 is no longer part of the tested runtimes[1].

[1] https://governance.openstack.org/tc/reference/runtimes/2025.2.html

Change-Id: If485e3254d5b8e39bda61f0c3f48218726a3f687
2025-06-26 11:12:29 +09:00
Takashi Kajinami
4aba6bcfc4 Revert "Replace license classifier"
This reverts commit 9406b44657.

Reason for revert:
There is still on-going discussion about the new license expression
and it may be changed in a near future. Until we get more stable
conclusion let's stick with the older format. See [1] to find details.

[1] https://review.opendev.org/c/openstack/nova/+/951226

Change-Id: I7e0ec1df01b9fea9e86d961427a1edc6342f224c
2025-06-17 13:23:36 +00:00
Takashi Kajinami
9406b44657 Replace license classifier
... according to the following warning from setuptools.

SetuptoolsDeprecationWarning: License classifiers are deprecated.

********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:

License :: OSI Approved :: Apache Software License

See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************

Change-Id: Ie5d16633d3094a98a4b20215683a58976c96fe65
2025-05-29 13:08:47 +00:00
Jay Faulkner
3e0f6ed240 Rename ironic cmd module
This module being 'cmd' means that when using unittest native test
discovery, it tries to load our cmd module instead of the built-in. This
obviously does not impact test running in CI or via tox, but by renaming
this we'll make our ironic tests compatible with vscode (and I presume
any other unittest-discover based IDE testing setups).

Change fully generated by cursor IDE with review and minimal editing by
me.

Generated-By: Cursor
Change-Id: I6c9b92e6b0bee366ff40795c722bd70d16cf0e4f
2025-04-01 16:21:51 -07:00
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
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
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
Jay Faulkner
045249f60d Remove trailing whitespace
Trailing whitespace is soon to be caught by the global pre-commit
linter changes. This fixes this issue in anticipation of that lint.

Change-Id: I48597afde4c55775ccca56f927c30ca4f3465523
2024-10-29 14:55:44 -07:00
Takashi Kajinami
6bbfa45e1e Remove Python 3.8 support
Python 3.8 was removed from the tested runtimes for 2024.2[1] and has
not been tested since then.

Also add Python 3.12 which is part of the tested runtimes for 2025.1.
Now unit tests job with Python 3.12 is voting.

[1] https://governance.openstack.org/tc/reference/runtimes/2024.2.html

Change-Id: I706c8b22fbf29e057942990a1004a42763594746
2024-10-24 18:13:34 +09:00
Julia Kreger
578f24bf18 Remove deprecated idrac wsman driver interfaces
Change-Id: I70738db25fdf9902575ac92195c3a40f1d7a0976
2024-06-24 15:03:28 -07:00
Julia Kreger
f14794ca2e Remove ibmc hardware type
There has been no testing of this hardware type in quite some time,
and the last we heard the vendor was moving towards redfish.

Change-Id: Ib32db463981ec54430884ac760956b7c7b40b17f
2024-06-18 16:33:35 -07:00
Julia Kreger
c02ad76fef Remove deprecated xclarity hardware type
Change-Id: I93e0d947d0f790bd4dfaa73e2cd31fdd36262af2
2024-06-18 16:33:00 -07:00
Jay Faulkner
b44cad8e5e Fix CI issues in codespell/pep8
Codespell upgrade caused failures, fixed spelling where
appropriate, added ignores where appropriate.

Some new package release broke pep8 runs; fixed by no
longer pinning Pygments version.

Change-Id: I670bbb170823d6a0ace8eeb9d9e486e8e9bf7404
2024-05-28 02:38:31 -07:00
Jay Faulkner
45502d7beb Fix new codespell issues; tweak config
Configuration was fine for the gate, but I've updated it to ignore
directories and files that can be found in a well-used development
checkout.

Fixed any new spelling issues.

Change-Id: Icef5addba938b27911c26e841a37a2e9ba3fbe43
2024-03-14 12:57:26 -07:00
Zuul
4aa096877e Merge "[codespell] Adding Tox Target for Codespell" 2024-03-14 17:13:10 +00:00
Dmitry Tantsur
89fe0396af
Add inspection PXE filter service
The logic to handle dnsmasq hostfiles is moved from ironic-inspector
with only cosmetic changes. The logic to purge the hostsdir is not
copied since it relies on running commands with root privileges.
A documentation example is added instead.

The change is missing the RPC call to notify the filter about changes.
It will be done in a follow-up.

Change-Id: Ie32018c760c39873ead1da54cfaeae87eaaaf043
2024-02-28 18:13:56 +01:00
Sharpz7
d9283af213 [codespell] Adding Tox Target for Codespell
Second in a series of commits to add Codespell to Ironic Repos. This one adds the command that was used to fix the spelling errors.

Future Commits will add CI support and potentially a git-blame-ignore-revs file if their are lots of spelling mistakes that could clutter git blame.

Change-Id: I206f51f277d19bbcec450ed5312cd30d6fba8432
2024-02-12 19:59:06 +00:00
Zuul
b0e443f77f Merge "Add HTTP versions of network boot interfaces" 2024-02-12 18:52:24 +00:00
Julia Kreger
e19fd1d050 Add HTTP versions of network boot interfaces
This change adds two network boot interfaces, ``http`` and
``http-ipxe``. These interfaces are based upon the underlying PXE
boot interface code in ironic, and where this differs is it signals
to Ironic that we must do the boot loader needful in terms of telling
DHCP to send a URL instead of a filename and IP address for PXE
as a starting point.

The naming of the interfaces focuses more on the transport mechanism
and then specific style. Very similar to existing ``pxe`` and ``ipxe``
interface modeling, except in the ``ipxe`` case, it is more a specific
loader and mechanism to be utilized.

Related-Bug: #2032380
Change-Id: Ie7ace88b62b9179f640ef2a732dd228e12bd320d
2024-02-09 13:13:19 -08:00
Zuul
cd17f5e61a Merge "Drop rootwrap support" 2024-01-23 20:14:36 +00:00
Zuul
88fcf8aa14 Merge "Redfish UefiHttp boot support" 2024-01-15 09:52:12 +00:00
Dmitry Tantsur
be09717be2
Drop rootwrap support
After removing the iSCSI deploy and changing ISO parsing code to use
a corresponding library, Ironic no longer executes any commands as root
and it should stay this way.

Change-Id: I47d2bab9b94345fbcf89a2a80028853050a041ea
2024-01-08 18:02:27 +01:00
Zuul
a65ee2d443 Merge "Remove unnecessary egg_info options" 2024-01-05 02:08:15 +00:00
Julia Kreger
041a7d7064 Redfish UefiHttp boot support
Adds a redfish-https boot interface, based upon the
redfish-virtual-media boot interface, however substantially copies
some base methods because of simplification offered to use by
putting "attach/detach" logic into how the sushy library handles
the application and reset of a URL as a boot setting.

This feature also increases the requirement for the Sushy library
to version 4.7.0 which includes support to set the HttpBootUri
field in the BMC and automatically unset it as well.

Closes-Bug: #2032380
Change-Id: I991611cd67cb91aea21fc30bbae7cd24409dbbfa
2024-01-04 07:12:20 -08:00
Takashi Kajinami
12cb5bc8b1 Remove unnecessary egg_info options
The tag_svn_revision option was already removed[1]. The values set to
the other two options are effectively same as their defaults.

[1] https://github.com/pypa/setuptools/issues/619

Change-Id: I6e0cbebac7cd33ad970d921ae761444db7f89a81
2023-12-20 11:34:50 +09:00
Riccardo Pittau
2e48118878 [trivial] add Python 3.11 mention in setup.cfg
Change-Id: Ib3e7f2f8e57453b32defba27483ae2b043393fcf
2023-11-07 14:16:53 +01:00
Mahnoor Asghar
c3ee90ddac Add inspection hooks
Adds the 'local-link-connection' and 'parse-lldp' inspection hooks in
the agent inspect interface for processing data received from the
ramdisk at the /v1/continue_inspection endpoint.

Change-Id: I540f03b961b858e8fc00cd4abbc905faa8f0c6c5
Story: #2010275
2023-10-17 09:31:33 -02:00
Zuul
ce5cf57ae8 Merge "Add inspection hooks" 2023-10-11 09:47:07 +00:00
Zuul
33a471e7ac Merge "Add inspection hooks" 2023-10-10 08:12:32 +00:00
Zuul
7ea4de815c Merge "Add inspection hooks" 2023-10-08 22:21:32 +00:00
Mahnoor Asghar
a31bf57cb9 Add inspection hooks
Adds the 'raid-device' and 'root-device' inspection hooks in the agent
inspect interface for processing data received from the ramdisk at
the /v1/continue_inspection endpoint.

Story: #2010275
Change-Id: I075ccd93a312b8bb17a36527e6c5d56386bb5c23
2023-09-25 06:36:18 -02:00
Mahnoor Asghar
7f053dc70d Add inspection hooks
Adds the 'memory', 'pci-devices', and 'physical-network' inspection
hooks in the agent inspect interface for processing data received from
the ramdisk at the /v1/continue_inspection endpoint.

Change-Id: I67631ec5b94d1b29afcdc9a971b1052cf35bda1f
Story: #2010275
2023-09-25 06:14:15 -02:00
Mahnoor Asghar
609ccc9037 Add inspection hooks
Adds these inspection hooks in the agent inspect interface for
processing data received from the ramdisk at the
/v1/continue_inspection endpoint: 'accelerators', 'boot-mode',
'cpu-capabilities', and 'extra-hardware'.

Change-Id: I63a528eba15391292c841693d6a0cc2f3b683720
Story: #2010275
2023-09-22 19:50:21 -02:00
Iury Gregory Melo Ferreira
4eb0dbf7b5 RedfishFirmware Interface
Change-Id: I75b2433fade0c36522024c16608d61cd663b38d5
2023-09-20 13:09:38 -03:00
Mahnoor Asghar
e6360bc84b Add inspection (processing) hooks
Adds inspection hooks in the agent inspect interface for processing
data received from the ramdisk at the /v1/continue_inspection
endpoint. The four default configuration hooks 'ramdisk-error',
'validate-interfaces', 'ports' and 'architecture' are added.
(The remaining inspection hooks will be added in further patches.)

Change-Id: I2cf1be465ba7a93fd66881b14972e960acd4dd4e
Story: #2010275
2023-08-25 09:38:39 -02:00
Zuul
2b2a80617a Merge "Add python3.10 support in testing runtime" 2023-07-31 15:48:37 +00:00
Zuul
cb96585167 Merge "Add the initial skeleton of the agent inspect interface" 2023-07-31 11:51:37 +00:00
likui
d97deb84e6 Add python3.10 support in testing runtime
In 2023.2 cycle testing runtime, project started adding python 3.10

[1] https://governance.openstack.org/tc/reference/runtimes/2023.2.html

Change-Id: Ifcde8bfb691e4a5a51db82a0607fba4b474fd32d
2023-07-31 15:18:20 +08:00
Dmitry Tantsur
6efa2119e4 Add the initial skeleton of the agent inspect interface
No real inspection is done: it only accepts data and returns success.

Common code has been extracted from the existing inspector-based
implementation.

Change-Id: I7462bb2e0449fb1098fe59e394b5c583fea89bac
2023-07-13 09:50:03 +02:00
Iury Gregory Melo Ferreira
aecb581082 Firmware Interface
FirmwareInterface base
New Config options [default]
- enabled_firmware_interfaces
- default_firmware_interface

New FirmwareInterface base with update method
Implementations of FirmwareInterface
- FakeFirmware (fake)
- NoFirmware (no-firmware)

New entrypoint ironic.hardware.interfaces.firmware
* fake and no-firmware

Api Controllers
- Updated: driver/node/utils/versions
- Created: firmware

Unit tests
api-ref for Node Firmware

Fake and Noop implementation for FirmwareInterface

Change-Id: Ib3b9cb22099819f97d5eab1e3f1b670cb91cbb25
2023-07-11 07:39:15 -03:00
Vanou Ishii
eae33a0acb [iRMC] identify BMC firmware version
Since iRMC S6 2.00, iRMC firmware doesn't support HTTP
connection to REST API.

To deal with this firmware incompatibility, this commit
adds verify step to check connection to REST API and adds
node vendor passthru to fetch&cache version of iRMC firmware.

Story: 2010396
Task: 46745
Change-Id: Ib04b66b0c7b1ef1c4175841689c16a7fbc0b1e54
2023-01-16 18:38:57 +09:00
Steve Baker
754e6bb662 Implement a DHCP driver backed by dnsmasq
The ``[dhcp]dhcp_provider`` configuration option can now be set to
``dnsmasq`` as an alternative to ``none`` for standalone deployments.
This enables the same node-specific DHCP capabilities as the
``neutron`` provider. See the ``[dnsmasq]`` section for configuration
options.

Change-Id: I3ab86ed68c6597d4fb4b0f2ae6d4fc34b1d59f11
Story: 2010203
Task: 45922
2022-09-05 13:57:39 +12:00
likui
d2a2447e88 The Python 3.6 and Python 3.7Support has been dropped since zed
[1] https://governance.openstack.org/tc/reference/runtimes/zed.html

Change-Id: I3892493c9a9add0b5d2e80e1f764e2eb37b047ea
2022-05-09 15:38:53 +08:00
Ghanshyam Mann
4eb79f15fb Re-add python 3.6/3.7 in classifier
We have updated the yoga testing runtime to keep the
py36 testing.

- https://review.opendev.org/c/openstack/governance/+/820195

Unit tests job template is also updated to keep python
3.6 as a voting job. So with the py3.6 and py3.9 testing as voting
job template, we are keeping python 3.6, 3.7, 3.8, and 3.8 as
tested versions in the Yoga cycle.

- https://review.opendev.org/c/openstack/openstack-zuul-jobs/+/820286

This commit re-add the python 3.6/3.7 versions in setup.cfg classifier.

Change-Id: Ie3950dd25a41f8381d218588c3e4a1728e5f3a60
2021-12-13 19:48:27 -06:00