4272 Commits

Author SHA1 Message Date
Rajesh Tailor
0826ee1c68 Fix huge-page doc
This change updates the echo command as per description [1],
to append huge-page specific paramters instead of overwriting.

[1] https://docs.openstack.org/nova/zed/admin/huge-pages.html

Closes-Bug: #2002317

Change-Id: Ibd8b555c4d6a70cd221b12821d6e9d88cf132a4a
2023-01-10 17:55:01 +05:30
Balazs Gibizer
2cb1eedeaf Allow enabling PCI scheduling in Placement
A new configuration option [filter_scheduler]pci_in_placement is added
that allows enabling the scheduler logic for PCI device handling in
Placement for flavor based PCI requests.

blueprint: pci-device-tracking-in-placement
Change-Id: I5ddf6d3cdc7e05cc4914b9b1e762fa02a5c7c550
2023-01-05 17:25:27 +01:00
Zuul
c18f6f9a4f Merge "doc: soft delete and shadow tables" 2023-01-03 18:55:21 +00:00
Zuul
aec72ddeb6 Merge "Modify the command of getting serial console" 2022-12-20 15:05:36 +00:00
Zuul
fe839970cf Merge "fix typo in architecture document" 2022-12-20 15:03:36 +00:00
Zuul
035b1c6fbe Merge "Support resource_class and traits in PCI alias" 2022-12-13 17:33:41 +00:00
Zuul
e40ac0c798 Merge "Support multiple config file with mod_wsgi" 2022-12-12 15:16:14 +00:00
Bence Romsics
3420b77f62 doc: soft delete and shadow tables
While collecting information because of a question I received
about soft delete and shadow tables I realized that the documentation
contains bits and pieces here and there, but I couldn't find more.
This change summarizes what I found from docs and asking around.
I hope you find it useful.

Change-Id: I5ff90224cc27c57dc463604559d25298ed7b3f98
2022-12-09 09:15:11 +01:00
Sean Mooney
73fe84fa0e Support multiple config file with mod_wsgi
Unlike uwsgi, apache mod_wsgi does not support passing
commandline arguments to the python wsgi script it invokes.

As a result while you can pass --config-file when hosting the
api and metadata wsgi applications with uwsgi there is no
way to use multiple config files with mod_wsgi.

This change mirrors how this is supported in keystone today
by intoducing a new OS_NOVA_CONFIG_FILES env var to allow
operators to optional pass a ';' delimited list of config
files to load.

This change also add docs for this env var and the existing
undocumented OS_NOVA_CONFIG_DIR.

Closes-Bug: 1994056
Change-Id: I8e3ccd75cbb7f2e132b403cb38022787c2c0a37b
2022-12-07 12:36:32 +01:00
Zuul
3675dbf7a4 Merge "Update contributor guide for 2023.1 Antelope" 2022-11-21 21:50:41 +00:00
Takashi Natsume
ecbcf16dca Update contributor guide for 2023.1 Antelope
Change-Id: Iffd6f3017c3522bd80b571a19550c83401b99613
Signed-off-by: Takashi Natsume <takanattie@gmail.com>
2022-11-06 00:41:01 +00:00
Amit Uniyal
7eaa3466cd DOC update remote console access
- Adds doc links of libvirt wiki page
- Updates dead links

Closes-Bug: 1991522
Change-Id: Ie45e663c5a7bf980aeecf78b6ef1a6c19d945753
2022-10-27 17:58:18 +00:00
Rajesh Tailor
b1958b7cfa Correct doc references
This changes corrects wrong doc references in nova docs.

Change-Id: I6a94e14dd7efafad65a0074b57b9eff1b6822e02
2022-10-18 17:09:41 +05:30
Balazs Gibizer
b10482cbc0 Support resource_class and traits in PCI alias
The [pci]alias configuration option now accepts two new optional fields:

* resource_class: that can be used to request PCI device by placement
  RC name.

* traits: a comma separated list of placement trait names that can be
  used to filter placement PCI resource provider by traits.

These fields has the matching counterpart in [pci]device_spec
implemented already.

These fields are matched by the Placement GET allocation_candidates
query therefore these fields are ignored when PCI device pools are
matched against IntancePCIRequest by nova.

Note that InstancePCIRequest object spec field is defined as a list of
dicts. But in reality nova creates the request always with a single
dict. So we restricted the placement logic to handle a single spec.

blueprint: pci-device-tracking-in-placement
Change-Id: I5c8f05c3c5d7597175e60b29e4ab2f22e6496ecd
2022-10-17 13:56:18 +02:00
Zuul
03d2715ed4 Merge "update default overcommit" 2022-10-07 02:29:22 +00:00
Zuul
bbebdc3928 Merge "Fix typos in nova docs" 2022-10-06 12:09:51 +00:00
Sean Mooney
1260cdd492 update default overcommit
This change updates the cpu and ram initial
allocation ratios to 4.0 and 1.0 to reflect
the typical values that are suitable for non web
hosting workloads.

Change-Id: I283eb270a4e47da15cf01d098b4f3952f7b5b570
implements: bp/nova-change-default-overcommit-values
2022-10-06 12:50:56 +01:00
Jan Klippel
480b63a9a6 fix typo in architecture document
Signed-off-by: Jan Klippel <openstack@kl1pp3l.de>
Change-Id: I6f7cf5bbca5754a91efe788064695134ecff34b6
2022-09-25 21:00:00 +02:00
Zuul
aad31e6ba4 Merge "Update nova-manage doc page" 2022-09-23 03:40:59 +00:00
Rajesh Tailor
0fce3c03ab Fix typos in nova docs
Change-Id: I7b6f8c198aa42f5ef3f8b158308b993b040454ec
2022-09-23 09:09:37 +05:30
Rajesh Tailor
b65a910834 Update Availability zone doc page
Availability zone doc page [1] mentioned that server moving
operation (evacuate/live-migrate) request can force target host
and bypass scheduler.

This support of forcing target host for evacuate/live-migrate
request was removed in [2].

This change updates the doc page by mentioning that it was possible
to force a host with older API microversion and how to use it, if
user wants to force target host for evacuate/live-migrate.

[1] https://docs.openstack.org/nova/latest/admin/availability-zones.html#implications-for-moving-servers
[2] https://review.opendev.org/q/topic:bp%252Fremove-force-flag-from-live-migrate-and-evacuate

Closes-Bug: #1947421
Change-Id: Iaf989ccbde49a8c3735d260b2dd4a319bc77caf8
2022-09-23 09:06:58 +05:30
Pierre Riteau
4fb4f6832c Remove mentions of removed scheduler filters
Change-Id: I1348cca8cbd8b1142dab8507c8aa1b9baf01e73c
2022-09-16 10:39:42 +02:00
Rajesh Tailor
023d2b4a9a Update nova-manage doc page
nova-manage doc page [1] mentioned usage of `nova-manage db archive`
command, which doesn't exist.

This change updates the doc page with the correct command
`nova-manage db archive_deleted_rows`.

[1] https://docs.openstack.org/nova/latest/cli/nova-manage.html

Closes-Bug: #1981088
Change-Id: Ibcbccf87ec70e9edea61c99d4d3bcf610cc1df64
2022-09-10 15:17:57 +05:30
Zuul
b542b53585 Merge "Doc follow up for PCI in placement" 2022-09-06 16:30:19 +00:00
Balazs Gibizer
efb6fd834e Doc follow up for PCI in placement
This fixes the doc comments for the already merged (or being merged)
patches in the series.

blueprint: pci-device-tracking-in-placement
Change-Id: Ia99138d603722a66c9a6ac61b035384d86ccca75
2022-09-02 14:20:18 +02:00
Zuul
457806e206 Merge "libvirt: Add vIOMMU device to guest" 2022-09-01 19:56:09 +00:00
Zuul
8b55b44cc6 Merge "Allow enabling PCI tracking in Placement" 2022-09-01 18:21:52 +00:00
Zuul
82498dfe4b Merge "Handle PCI dev reconf with allocations" 2022-09-01 18:21:45 +00:00
Zuul
40ca5e169a Merge "Heal PCI allocation during resize" 2022-09-01 18:16:04 +00:00
Zuul
bcdf5988f6 Merge "Add API support for rebuilding BFV instances" 2022-09-01 07:53:12 +00:00
Stephen Finucane
14e3b352c2 libvirt: Add vIOMMU device to guest
Implementation for BP/libvirt-viommu-device.
With provide `hw:viommu_model` property to extra_specs or
`hw_viommu_model` to image property. will enable viommu to libvirt
guest.

[1] https://www.berrange.com/posts/2017/02/16/setting-up-a-nested-kvm-guest-for-developing-testing-pci-device-assignment-with-numa/
[2] https://review.opendev.org/c/openstack/nova-specs/+/840310

Implements: blueprint libvirt-viommu-device
Change-Id: Ief9c550292788160433a28a7a1c36ba38a6bc849
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2022-09-01 04:50:16 +08:00
Dan Smith
45c5b80fd0 Add API support for rebuilding BFV instances
This adds a microversion and API support for triggering a rebuild
of volume-backed instances by leveraging cinder functionality to
do so.

Implements: blueprint volume-backed-server-rebuild
Closes-Bug: #1482040

Co-Authored-By: Rajat Dhasmana <rajatdhasmana@gmail.com>

Change-Id: I211ad6b8aa7856eb94bfd40e4fdb7376a7f5c358
2022-08-31 18:05:03 +05:30
ghanshyam mann
6903456820 Add documentation and releasenotes for RBAC change
We have droped the system scope from Nova policy
and keeping the legacy admin behaviour same. This
commit adds the releasenotes and update the policy
configuration documentation accordingly.

Also, remove the upgrade check for policy which was
added for the system scope configuration protection.

Change-Id: I127cc4da689a82dbde07059de90c451eb09ea4cf
2022-08-30 01:44:33 +05:30
Balazs Gibizer
06389f8d84 Allow enabling PCI tracking in Placement
This patch introduces the [pci]report_in_placement config option that is
False by default but if set to True will enable reporting of the PCI
passthrough inventories to Placement.

blueprint: pci-device-tracking-in-placement
Change-Id: I49a3dbf4c5708d2d92dedd29a9dc3ef25b6cd66c
2022-08-27 12:41:20 +02:00
Balazs Gibizer
9268bc36a3 Handle PCI dev reconf with allocations
PCI devices which are allocated to instances can be removed from the
[pci]device_spec configuration or can be removed from the hypervisor
directly. The existing PciTracker code handle this cases by keeping the
PciDevice in the nova DB exists and allocated and issue a warning in the
logs during the compute service startup that nova is in an inconsistent
state. Similar behavior is now added to the PCI placement tracking code
so the PCI inventories and allocations in placement is kept in such
situation.

There is one case where we cannot simply accept the PCI device
reconfiguration by keeping the existing allocations and applying the new
config. It is when a PF that is configured and allocated is removed and
VFs from this PF is now configured in the [pci]device_spec. And vice
versa when VFs are removed and its parent PF is configured. In this case
keeping the existing inventory and allocations and adding the new inventory
to placement would result in placement model where a single PCI device
would provide both PF and VF inventories. This dependent device
configuration is not supported as it could lead to double consumption.
In such situation the compute service will refuse to start.

blueprint: pci-device-tracking-in-placement
Change-Id: Id130893de650cc2d38953cea7cf9f53af71ced93
2022-08-26 19:05:45 +02:00
Zuul
e4328ed7cd Merge "Add locked_memory extra spec and image property" 2022-08-26 15:22:08 +00:00
Balazs Gibizer
98e9989cad Heal PCI allocation during resize
During resize an instance with existing PCI allocation can be changed to
consume less, more, or different PCI devices. So the heal allocation
logic needs to handle the case when an existing instance is changed to
consume different PCI devices.

This patch adds support to change existing PCI allocations in placement
during resize.

There is one limitation of the healing logic. It assumes that there is
no in-progress migration when nova is upgraded. If there is an in
progress migration, then the PCI usage will not be healed in the
migration allocation. The placement view will be consistent after such
migration is completed or reverted.

blueprint: pci-device-tracking-in-placement
Change-Id: Icc968c567f9967d7449d6c6c1f57783098e63f55
2022-08-25 10:00:11 +02:00
Balazs Gibizer
01d7a39e00 Reject devname based device_spec config
We agreed not to support 'devname' based [pci]device_spec configuration
in the new PCI Placement tracking code. So this patch adds a check to
reject those.

blueprint: pci-device-tracking-in-placement
Change-Id: Ifa0dd34506ebc25cfe5bafd6952b72b0008fc741
2022-08-25 10:00:10 +02:00
Balazs Gibizer
10ba714125 Ignore PCI devs with physical_network tag
The first version of the PCI tracking in placement feature will not
handle Neutron based SRIOV devices. So those are now ignored during
placement inventory reporting.

blueprint: pci-device-tracking-in-placement
Change-Id: Ie24969d60c84379673c5450863f4cf58cf09207c
2022-08-25 10:00:10 +02:00
Balazs Gibizer
07f2bf8035 Reject mixed VF rc and trait config
If two VFs from the same PF are configured by two separate
[pci]device_spec entries then it is possible to define contradicting
resource classes or traits. This patch detects and rejects such
configuration.

blueprint: pci-device-tracking-in-placement
Change-Id: I623ab24940169991a400eba854c9619a11662a91
2022-08-25 10:00:10 +02:00
Balazs Gibizer
0d526d1f4b Reject PCI dependent device config
The PCI tracking in placement does not support the configuration where
both a PF and its children VFs are configured for nova usage. This patch
adds logic to detect and reject such configuration. To be able to kill
the service if started with such config special exception handling is
added for the update_available_resource code path, similarly how a
failed reshape is handled.

blueprint: pci-device-tracking-in-placement
Change-Id: I708724465d2afaa37a65c231c64da88fc8b458eb
2022-08-25 10:00:10 +02:00
Balazs Gibizer
2722038946 Extend device_spec with resource_class and traits
Each [pci]device_spec entry can specify the two new resource_class and
traits tags.

If the resource_class is specified then it will be used as the RC in the
placement inventory of the PCI devices matching the spec. If not
specified then the RC is defaulted CUSTOM_PCI_<vendor_id>_<product_id>.

The traits tag is a comma separated list of trait names. Nova will
report these traits to RP representing the matching PCI devices.

blueprint: pci-device-tracking-in-placement
Change-Id: I71b7a2fb8b03a3679733a98958b2f6d447ed5004
2022-08-25 10:00:10 +02:00
Balazs Gibizer
953f1eef19 Basics for PCI Placement reporting
A new PCI resource handler is added to the update_available_resources
code path update the ProviderTree with PCI device RPs, inventories and
traits.

It is a bit different than the other Placement inventory reporter. It
does not run in the virt driver level as PCI is tracked in a generic way
in the PCI tracker in the resource tracker. So the virt specific
information is already parsed and abstracted by the resource tracker.

Another difference is that to support rolling upgrade the PCI handler
code needs to be prepared for situations where the scheduler does not
create PCI allocations even after some of the compute already started
reporting inventories and started healing PCI allocations. So the code
is not prepared to do a single, one shot, reshape at startup, but
instead to do a continuous healing of the allocations. We can remove
this continuous healing after the PCI prefilter will be made mandatory
in a future release.

The whole PCI placement reporting behavior is disabled by default while
it is incomplete. When it is functionally complete a new
[pci]report_in_placement config option will be added to allow enabling
the feature. This config is intentionally not added by this patch as we
don't want to allow enabling this logic yet.

blueprint: pci-device-tracking-in-placement
Change-Id: If975c3ec09ffa95f647eb4419874aa8417a59721
2022-08-25 10:00:10 +02:00
Sean Mooney
572c2b18e2 Add locked_memory extra spec and image property
This change adds a new hw:locked_memory extra spec and hw_locked_memory
image property to contol preventing guest memory from swapping.

This change adds docs and extend the flavor
validators for the new extra spec.
Also add new image property.

Blueprint: libvirt-viommu-device
Change-Id: Id3779594f0078a5045031aded2ed68ee4301abbd
2022-08-24 21:47:32 +08:00
Sean Mooney
0aad338b1c Add VDPA support for suspend and livemigrate
This change append vnic-type vdpa to the list
of passthough vnic types and removes the api blocks

This should enable the existing suspend and live migrate
code to properly manage vdpa interfaces enabling
"hot plug" live migrations similar to direct sr-iov.

Implements: blueprint vdpa-suspend-detach-and-live-migrate
Change-Id: I878a9609ce0d84f7e3c2fef99e369b34d627a0df
2022-08-23 09:32:00 +01:00
Sean Mooney
6f1c7ab2e7 Add source dev parsing for vdpa interfaces
This change extends the guest xml parsing such that
the source device path can be extreacted from interface
elements of type vdpa.

This is required to identify the interface to remove when
detaching a vdpa port from a domain.

This change fixes a latent bug in the libvirt fixutre
related to the domain xml generation for vdpa interfaces.

Change-Id: I5f41170e7038f4b872066de4b1ad509113034960
2022-08-22 14:57:21 +01:00
Zuul
ddcc286ee1 Merge "enable blocked VDPA move operations" 2022-08-20 15:37:54 +00:00
Takashi Natsume
07022c7791 doc: Update a PTL guide
It does not need anymore to add database migration placeholders
because of using alembic.
So remove the description in the PTL guide.

Change-Id: If958dd78ff82e2239be1af3835a51a1a3551c5d9
Signed-off-by: Takashi Natsume <takanattie@gmail.com>
2022-08-20 06:18:58 +00:00
Zuul
13e4dd76f6 Merge "block_device: Add DriverImageBlockDevice to block_device_info" 2022-08-19 15:34:31 +00:00
Zuul
8860495e6a Merge "scheduler: Add an ephemeral encryption pre filter" 2022-08-19 03:47:53 +00:00