Currently our introspection scenario test tries to do a lot in serial; a
full node inspection followed by provisioning the node. We should just
ensure the node gets back to AVAILABLE and consider that good enough.
Change-Id: I8c82bec61ad6a8465a3142b904bc444bca89a967
It may take some time for cloud init to setup ssh keys,
so its possible server start responding over ping, but SSH
is still not awailable. This patch adds a check that we can
pass SSH authentication before doing final vm connectivity
check.
Change-Id: I415aff416a07a7b69baf8b152a37c3602d9702bc
Brought over the same lints as used in the main ironic repo via
pre-commit and ruff. Updated tox.ini to use pre-commit the same way.
Change-Id: Ic2138427fd408a581cfbcb9c9da84074d1a2bfa8
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
pip 23.1 removed the "setup.py install" fallback for projects
that do not have pyproject.toml and now uses a pyproject.toml
which is vendored in pip.
To address that, this change adds the minimal pyproject.toml
to enable pbr to be properly used to build editable wheels.
See https://pip.pypa.io/en/stable/news/#v23-1
and https://github.com/pypa/pip/issues/8368 for more
details on the removal of the fallback support.
setuptools v64.0.0 is used to support editable installs
via its PEP-660 implmentation
https://github.com/pypa/setuptools/pull/3488
This patch was taken nearly verbatim from the equivalent nova change.
Change-Id: Ic65834742445d9930200836a5c9f5bf774e30693
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Adding tests to check if microversions are handled correctly. Will be adding Topic "bad-microversion-testing" going forward to track what is completed.
Change-Id: I6052afb3ea2563b3651b0b4dfcd6f1c8817a6f7b
While investigating the 4k job, I noticed the test sometimes has trouble
SSHing back in to the host post-reboot due to no fault of the test.
In other tests, it looks like we manage to get SSH'ed in just as the
deployed host is online.
This is because cloud-init or other configuration changes have been
applied in the OS, which is outside the act of "deploying" the node.
In other words, we were spinning our basic job for several hundred
seconds in some cases on just waiting for the OS to reboot, and then
trying to verify the OS behaves the same as before we rebooted.
Ultimately, to conserve resources *and* reduce failure risk by trying
to test OS behavior, removing the reboot call and post-reboot re-ssh/ping
check behavior.
Change-Id: Ie08335e0e10f51f782a27270c62e33aa84a8c568
Adds a generator to make testing microversion enforcement significantly easier.
Generated-By: ChatGPT-4o
Change-Id: I1b88c2cb934bce4bb7ead88bc9ceceb90263e293
Adding tests to check if microversions are handled correctly, specifically on shards for now. Based on https://gist.github.com/Sharpz7/97356eb57f77d3ee75892791c6cab155 which I use locally.
Generated-By: Perplexity w/ GPT-4o
Change-Id: I126ca11095cd049a34a98f9185e7237d3969f9a4
In some cases where operators seek to use ironic-tempest-plugin,
there may not be complete networking configuration behind ironic,
like site specific cleaning and provisioning networks, which is
fine, that is a choice the operator has made, but then if the
default network interface, which these tests were modeled upon
is a different network interface, such as flat or neutron,
then these tests will fail.
So instead of rely upon the state configuration of ironic
in terms of what network interface to end up with, we now assert
the noop network interface to explicitly tell ironic "we know what
we want/expect" for the test to operate.
This sort of class of failure has come up a few times with slight
variations, where functionally the test suite just was developed
expecting everything under the backend driver hood to be noop.
Closes-Bug: 2087263
Change-Id: Iea732f58c23dd0c79305a86b6707fb750aabf30f
Tempest has introduced NotAcceptable exception [1], breaking our usage of
UnexpectedResponseCode. Use the new exception.
[1] e60b317062
Change-Id: I1e07e09348613493572d6aa55a2a3cde686497ed
stable/2024.2 was released, so should be tested now.
Also make all stable/2023.2 jobs non-voting to keep two voting
stable branches.
Change-Id: I2ec84d288d77c26eb5381976365dcbc6445ca1da
While trying to work out a test case and using the tempest
plugin to exercise a centos VM, I noticed it didn't ping,
when I had previously done other work to the VM. It has
SSH'ed, it might have failed, but try to SSH in case ping
fails.
Change-Id: I4e125529de4ff96c42194f91b18281a642a30018
Headers must not be case-sensitive, but since we use a simple dict for
collecting them, it's possible to end up with two conflicting headers
for the API version. Make sure to use the same spelling.
Change-Id: I9c9554e4d317c7d06f9c78162967218fbf118b50
* Remove specific scope enforced jobs from master
With recent oslo.policy changes, we no longer need to have specific
scope enforced test jobs. As such, removing them from master branch
testing.
* Leave only the master ironic-inspector job voting
Inspector is deprecated and does not receive many changes. Leave one
voting jobs and 2 non-voting: for 2024.1 and the discovery one.
* Remove inspector scope enforced jobs from the gate
They are not in the check pipeline and must not be in the gate.
Same logic as above applies to these jobs.
* Copy anaconda jobs into the gate pipeline
Voting check jobs must be in the gate, so fixing the descrepancy.
* Purge definitions of unused jobs.
Co-Authored-By: Dmitry Tantsur <dtantsur@protonmail.com>
Change-Id: I17e1604b036e98ee2e8ce6424bfeb2b0bef8e471
In get_min_max_api_microversions, we issue a request against the root
endpoint / to get the available microversions. This endpoint does return
them in the body but due to an issue in Ironic does not return the
microversion headers. Unfortunately, our implementation of request()
makes Tempest expected these headers and fail if they're absent.
Until Ironic is fixed, use /v1 to get the required information.
Change-Id: I7003e0c90ce764c903d870d739786a8a97d5f0af
Related-Bug: #2079023
Redfish is chosen because it is virtually guaranteed to support managed
inspection, unlike IPMI which may require a separate PXE setup.
Adds support for setting enabled interfaces, which is already relied
upon by the iDRAC tests but is not actually implemented.
Depends-On: https://review.opendev.org/c/openstack/ironic/+/927265
Change-Id: Ib66ac41c2919bade7c0c1ca3d8bb4fdfd2acf858
Apparently this was not exercised previously, and it is now exercised
as confirmed via the nova-compute service logs.
Change-Id: I2c14cc91a719ef94d88662701e9b5fdca3ad50a2
Tinycore artifacts are not uefi bootable unless the firmware
jumps back to bios booting the node. This presents with ramdisk
tests when a node may end up using the tinycore linux iso image if
a boot iso cannot be reliably built in Ironic's CI due to CI resource
provider constraints.
Instead, we now will just skip the test if we detect this case.
Closes-Bug: 2065811
Change-Id: Iae0ba6a52aa81f02202da768d4f755469badfe33
It is entirely possible to run the tempest tests without a physical
network parameter for the compute service. Turns out the network is
required when you use [network]shared_physical_network set to true,
because without it we can't figure out how to attach to the network.
So now we skip when the input configuration is such that there is
no way for the tests to proceed.
Closes-Bug: 2065378
Change-Id: Ic448a1a6383c2da2567b9da2262d4572536296ed
Currently, .json extensions are stripped out during the search or while
taking any action on a node through its name or uuid.
This pecan feature ensures that a reference to
``0178-0c2c-9c26-ca69-3011-a9dd.json`` is treated
as ``0178-0c2c-9c26-ca69-3011-a9dd``
If we had two nodes that differ by a .json extension in either of the
names, ``"node", "node.json"``, and we intend for the latter, we’ll
need to append an additional ".json" extension in the reference query,
else the node without the extension is treated as the default node,
and the extension node is only considered if it’s the only node with
the name.
Same workaround if we wanted our ``0178-0c2c-9c26-ca69-3011-a9dd.json``
correctly targeted, we append an additonal ".json" extension to our
query.
This patch tries to validate this behavior in API versions prior to
1.91, where this feature exists.
Change-Id: I613e596e8cf52f36b9c7caac30bdb3ff0d3bf821
In running some tests downstream, in this case where someone had
aggressively asserted default interface values, some additional
tests failed, and in fun ways.
This changes a couple tests so they explicitly set and account
for differeing defaults from upstream CI. Also adds an inline note
on the Boot from Volume test which can fail if the volume creation
fails.
Change-Id: Ieaa7ac9d9058ba40955248699e8fd762d4b3c15d
The drivers were removed a very very long time ago in a galaxy
far away. It no longer makes sense to keep them in the tempest
plugin.
Change-Id: Iadac0a41caea8bdbac9aedae83170eb81c331a05