Commit Graph

60919 Commits

Author SHA1 Message Date
Takashi Kajinami 305a71e5f9 Ignore support-matrix.css
The file is created during doc build, so should not be added to
the repository.

Change-Id: I6cbef7e8a3d1a176d98fd9b6020ce0603cb94890
2024-08-31 18:05:41 +09:00
Zuul e5dfbb17fe Merge "[ironic] Factor out metadata and send to ironic" 2024-08-31 04:42:22 +00:00
Jay Faulkner 93b90d2b6a [ironic] Factor out metadata and send to ironic
This change migrates the code currently written only to serve libvirt
driver to be generally useful, adding driver-neutral data structures
and a method to build them.

The libvirt driver is reworked to use get_instance_driver_metadata
instead of it's current code.

The ironic driver is reworked, per the blueprint, to send along some of
this additional metadata to the Ironic node.instance_info.

blueprint ironic-guest-metadata
Needed-By: https://review.opendev.org/c/openstack/ironic/+/924887

Change-Id: I2b23c8463f66c38e64625486157f245cd74cec61
2024-08-30 15:21:13 -07:00
Zuul 30800dafd4 Merge "Cleanup setup.py" 2024-08-30 21:00:43 +00:00
Zuul a0450d28f7 Merge "Add hw_firmware_stateless image property" 2024-08-30 20:57:26 +00:00
Zuul cf71be0ef0 Merge "libvirt: Report available TPM models" 2024-08-30 07:27:59 +00:00
Zuul 71a095be18 Merge "Update [scheduler] limit_tenants_to_placement_aggregate config help" 2024-08-30 03:20:10 +00:00
Zuul b36f01be63 Merge "Correct info about volume-backed server rebuild" 2024-08-30 01:16:27 +00:00
Zuul 5eccd8efa6 Merge "Add a functest for verifying multiple VGPU allocations" 2024-08-30 01:16:19 +00:00
Zuul edd9aa1c83 Merge "Reproducer test for image property hw_architecture" 2024-08-30 01:16:12 +00:00
Zuul 52fa9bc4f7 Merge "libvirt: Add config option to require secure SPICE." 2024-08-30 00:28:04 +00:00
Zuul 7e082705de Merge "add pyproject.toml to support pip 23.1" 2024-08-29 21:22:40 +00:00
Zuul 3b1ea29af7 Merge "api: Fix typo" 2024-08-29 21:22:19 +00:00
Zuul 46b76da3ad Merge "Report availability of stateless firmware support" 2024-08-29 18:25:53 +00:00
Dr. Jens Harbott 5fa069c29a Delete ./doc/source/_static/support-matrix.css file
This file is being automatically generated during the docs build, no
need to have it persisted in git.

Change-Id: Ib45f722cc305e1d828d31724535e31ad3dda6c2e
2024-08-29 09:27:04 +02:00
Sean Mooney 8464abe56c add pyproject.toml to support pip 23.1
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.

This is required to support installing devstack on
centos stream 9 and related distros with GLOBAL_VENV=True
Without this change the wsgi scripts are not generated in
editable mode. i.e. pip install -e /opt/stack/keystone

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

Depends-On: https://review.opendev.org/c/openstack/devstack/+/902758
Change-Id: I3255edb67fd7fe7a25b5871ec071c4b4c9d98ac2
2024-08-28 23:30:21 +00:00
Zuul 8fb5a76872 Merge "libvirt: call get_capabilities() with all CPUs online" 2024-08-28 19:22:28 +00:00
Zuul b3a2494728 Merge "Use format_inspector from oslo" 2024-08-27 18:54:30 +00:00
Zuul 01b207e50d Merge "Deprecate AMI image formats" 2024-08-26 21:31:41 +00:00
Dan Smith d854e7cc16 Use format_inspector from oslo
This removes the in-tree format_inspector and makes us use the one in
oslo.utils. Minor changes are required around the behavior of the
safety_check() (raising instead of returning). This also allows images
detected as 'gpt' but registered as 'raw', since that's how everything
currently works. Hopefully later we can start registering in glance as
gpt, and rejecting boots from raw images.

Change-Id: I5b89e17438157690495961c306861a06532c8b4e
Depends-On: https://review.opendev.org/c/openstack/tempest/+/927146
2024-08-26 07:21:48 -07:00
Zuul 3bdb298e68 Merge "Fix wrong nova-manage command in upgrade check" 2024-08-22 15:35:51 +00:00
Michael Still e06890d101 libvirt: Add config option to require secure SPICE.
This patch adds the following SPICE-related configuration option
to the 'spice' configuration group:

- require_secure

When set to true, libvirt will be provided with domain XML which
configures SPICE VDI consoles to require secure connections (that
is, connections protected by TLS). Attempts to connect without
TLS will receive an error indicating they should retry the connection
on the TLS port.

Change-Id: Ica7083b0836f8d66cad8a4b4097613103fc91560
2024-08-21 18:09:50 +10:00
Amit Uniyal cd05be9738 Reproducer test for image property hw_architecture
scheduler.image_metadata_prefilter=True, fails with NoValidHost for image
property hw_architecture=x86_64

Related-Bug: #2062425

Change-Id: I30a76ca409fe7605d02e6f97ee7142017a05c236
2024-08-21 05:01:06 +00:00
Zuul a2cc66a377 Merge "Fix deepcopy usage for BlockDeviceMapping in get_root_info" 2024-08-21 02:33:27 +00:00
Zhang Hua 065bf99fc7 Fix deepcopy usage for BlockDeviceMapping in get_root_info
The method get_root_info sometimes receives a BlockDeviceMapping object,
which lacks a copy method. The previous code assumed root_bdm was always
an instance of DriverBlockDevice, a subclass of dict that supports the copy()
method. However, during testing, it was discovered that root_bdm could also
be a BlockDeviceMapping object, which does not have a copy method.

To address this, the change replaces the copy() call with copy.deepcopy()
according to the suggestion in the comment [1], which works for both
BlockDeviceMapping and DriverBlockDevice instances. The deepcopy method is
supported because oslo.versionedobjects implements the __deepcopy__ method.

This change ensures the function handles both object types correctly,
preventing the AttributeError observed during testing.

[1] https://review.opendev.org/c/openstack/nova/+/909611/4/nova/virt/libvirt/blockinfo.py

Change-Id: I9432718586855ff57e8e6a5cae064e0685dd01e8
2024-08-20 21:48:59 +00:00
Zuul 0b091179d5 Merge "[libvirt]log XML if nova fails to parse it" 2024-08-20 03:37:34 +00:00
Takashi Kajinami 5890c257be Add hw_firmware_stateless image property
Add the new image property to request stateless firmware. The property
will be used by the libvirt driver once the actual logic to enable
the feature is implemented.

Partially-Implements: blueprint libvirt-stateless-firmware
Change-Id: I05d4ff89d2b713b217b6c690e40fd4a16a397b63
2024-08-20 09:36:47 +09:00
Takashi Kajinami b475f0f99b Report availability of stateless firmware support
This is the first step to support launching instances with stateless
firmware. At this stage none of the virt drivers report the trait to
support the feature.

Depends-on: https://review.opendev.org/c/openstack/os-traits/+/908885
Partially-Implements: blueprint libvirt-stateless-firmware
Change-Id: I4c1df950af11687ae5a52e4eba7943029ec36e69
2024-08-20 09:16:40 +09:00
Zuul 0aedee0e9b Merge "Fix PCI passthrough cleanup on reschedule" 2024-08-19 17:15:00 +00:00
Balazs Gibizer 87ee88f10a [libvirt]log XML if nova fails to parse it
In case nova fails to parse the XML from libvirt the lxml exception is
dumped to the log but it only states the location of the error in the
XML string like

  lxml.etree.XMLSyntaxError: StartTag: invalid element name, line 40, column 35

To be able to troubleshoot the actual XML error we need to see the
invalid XML as well. So this patch makes sure that if nova fails to
parse the XML then the XML itself is dumped to DEBUG log.

Change-Id: I14cce6db4c86f663e61d3668d081858741e88add
2024-08-17 22:24:15 +02:00
Artom Lifshitz 79d1f06094 libvirt: call get_capabilities() with all CPUs online
While we do cache the hosts's capabilities in self._caps in the
libvirt Host object, if we happen to fist call get_capabilities() with
some of our dedicated CPUs offline, libvirt erroneously reports them
as being on socket 0 regardless of their real socket. We would then
cache that topology, thus breaking pretty much all of our NUMA
accounting.

To fix this, this patch makes sure to call get_capabilities()
immediately upon host init, and to power up all our dedicated CPUs
before doing so. That way, we cache their real socket ID.

For testing, because we don't really want to implement a libvirt bug
in our Python libvirt fixture, we make due with a simple unit tests
that asserts that init_host() has powered on the correct CPUs.

Closes-bug: 2077228
Change-Id: I9a2a7614313297f11a55d99fb94916d3583a9504
2024-08-17 09:20:26 -04:00
Zuul 5b91e78308 Merge "hardware: Correct log" 2024-08-16 22:35:46 +00:00
Zuul 690e2cb799 Merge "api: Add response body validation helper" 2024-08-16 22:03:30 +00:00
Balazs Gibizer f8b98390dc Fix PCI passthrough cleanup on reschedule
The resource tracker Claim object works on a copy of the instance object
got from the compute manager. But the PCI claim logic does not use the
copy but use the original instance object. However the abort claim logic
including the abort PCI claim logic worked on the copy only. Therefore the
claimed PCI devices are visible to the compute manager in the
instance.pci_decives list even after the claim is aborted.

There was another bug in the PCIDevice object where the instance object
wasn't passed to the free() function and therefore the
instance.pci_devices list wasn't updated when the device was freed.

Closes-Bug: #1860555
Change-Id: Iff343d4d78996cd17a6a584fefa7071c81311673
2024-08-16 16:10:14 +02:00
Zuul a7c82399b2 Merge "Skip new image format tests" 2024-08-14 17:54:37 +00:00
Sean Mooney c69a9eb87f Skip new image format tests
The nova-ceph-multistore job is currently
not configured properly for the new image format
tests. This change skips them until we decided
how to fix this.

Change-Id: I3de7588ba224453c24beabf8a799c71677603ba7
2024-08-13 19:32:47 +01:00
Stephen Finucane 4678bcbb06 hardware: Correct log
We currently get the following error message if attempting to fit a
guest with hugepages on a node that doesn't have enough:

  Host does not support requested memory pagesize, or not enough free
  pages of the requested size. Requested: -2 kB

Correct this, removing the kB suffix and adding a note on the meaning of
the negative values, like we have for the success path.

Change-Id: I247dc0ec03cd9e5a7b41f5c5534bdfb1af550029
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Closes-Bug: #2075959
2024-08-13 16:32:21 +00:00
Dan Smith 068dbe0779 Deprecate AMI image formats
We have a lot of special cases all around our code for AMI (et al)
images, in the boot, snapshot, and other areas. It was recently
discussed (after the major CVE which was complicated by AMI support)
that we should drop these special cases and support for AMI with it.
This starts that timer.

Change-Id: I90efaaa35225ce82bada0b427e09c8289adaae1e
2024-08-12 07:25:02 -07:00
sdmitriev1 a2d77845ab Functional test test_boot_reschedule_with_proper_pci_device_count
Lets first ensure we have a test that proves we have bad behaviour,
then follow up with the fix and the test tweak to prove it.

On the first compute node it fails due to group policy error.
On the second compute node instance should have exactly one PCI device.

Related-Bug: #1860555
Change-Id: Ia122fff268c8f45ad3e5a3071d2cb7c990cb2c1d
2024-08-10 09:49:56 -04:00
Takashi Kajinami c8674a88b6 libvirt: Report available TPM models
Libvirt 8.0.0 introduced the new domain capabilities API filed to
present available TPM models. This introduces the logic to report
available TPM models as compute node traits, and use that trait for
scheduling to ensure a request tpm model is available at the compute
node where the instance is being launched.

Depends-on: https://review.opendev.org/c/openstack/os-traits/+/909107
Implements: blueprint libvirt-detect-vtpm-support
Change-Id: Iec98e7b0d19f37f094152a61a26790fcdf3328d9
2024-08-10 12:40:32 +09:00
Zuul 7399728e89 Merge "Fix guard for NVMeOF volumes" 2024-08-09 05:11:51 +00:00
Zuul da5bb85b6d Merge "libvirt: Detect vtpm support by libvirt" 2024-08-09 05:11:43 +00:00
Zuul c6ebee1987 Merge "libvirt: Ensure swtpm_ioctl is available for vTPM support" 2024-08-09 05:11:11 +00:00
melanie witt f63029b461 libvirt: Remove node device XML validate flags
Node device XML validation flags [1]:

  VIR_NODE_DEVICE_(CREATE|DEFINE)_XML_VALIDATE

were added in libvirt 8.10.0 but we support older libvirt versions
which will raise an AttributeError when flag access is attempted.

We are not currently using the flags (nothing calling with
validate=True) so this removes the flags from the code entirely. If the
flags are needed in the future, they can be added again at that time.

Closes-Bug: #2076163

[1] https://github.com/libvirt/libvirt/commit/d8791c3c7caa6e3cadaf98a5a2c94b232ac30fed

Change-Id: I015d9b7cad413986058da4d29ca7711c844bfa84
2024-08-07 16:31:58 +00:00
Zuul bb2d7f9cad Merge "[tools] Backport validator: handle unmaintained" 2024-07-30 18:15:40 +00:00
Zuul 75e2175254 Merge "[tools] Ignore bot generated patches" 2024-07-30 18:15:34 +00:00
Takashi Kajinami 510cc2404e libvirt: Detect vtpm support by libvirt
Libvirt 8.0.0 introduced the field to tell availability of TPM support,
which internally checks availability of swtpm[1]. We can use this
feature instead of implementing the own logic to detect availability.
The feature in libvirt relies on libvirt itself, so allows us to ensure
the swtpm binaries are present in the PATH used by libvirt, not in one
used by nova-compute.

In addition, libvirt 8.6.0 introduced the additional field to expose
available TPM versions[2], which can be used to report available TPM
versions.

<domainCapabilities>
  <devices>
    <tpm supported='yes'>
      <enum name='model'>
        <value>tpm-tis</value>
        <value>tpm-crb</value>
      </enum>
      <enum name='backendModel'>
        <value>passthrough</value>
        <value>emulator</value>
        <value>external</value>
      </enum>
      <enum name='backendVersion'>
        <value>1.2</value>
        <value>2.0</value>
      </enum>
    </tpm>
  </devices>
</domainCapabilities>

[1] https://github.com/libvirt/libvirt/commit/6f7fc0b54ad97e62e10cd6f9524fcc29b4bb4cc5
[2] https://github.com/libvirt/libvirt/commit/1277a9c884039e92765c977917420511f45e52e8

Partially-Implements: blueprint libvirt-detect-vtpm-support
Change-Id: I9d07635883f413b8e91312f602a3f5de8f3bf266
2024-07-27 22:08:47 +09:00
Takashi Kajinami 9a11bb2523 libvirt: Ensure swtpm_ioctl is available for vTPM support
Libvirt uses swtpm_ioctl to terminate swtpm processes. If the binary
does not exist, swtpm processes are kept running after the associated
VM terminates, because QEMU does not send shutdown to swtpm.

Closes-Bug: #2052761
Change-Id: I682f71512fc33a49b8dfe93894f144e48f33abe6
2024-07-27 22:08:47 +09:00
Zuul 7a7427691e Merge "Fix test_vmdk_bad_descriptor_mem_limit and test_vmdk_bad_descriptor_mem_limit_stream_optimized" 2024-07-26 12:06:25 +00:00
Zuul eb5e3374bc Merge "Remove AMI snapshot format special case" 2024-07-25 17:29:30 +00:00