OpenStack Compute (Nova)
Go to file
Balazs Gibizer b841e55321 Store old_flavor already on source host during resize
During resize, on the source host, in resize_instance(), the instance.host
and .node is updated to point to the destination host. This indicates to
the source host's resource tracker that the allocation of this instance
does not need to be tracked as an instance but as an outbound migration
instead. However for the source host's resource tracker to do that it,
needs to use the instance.old_flavor. Unfortunately the
instance.old_flavor is only set during finish_resize() on the
destination host. (resize_instance cast to the finish_resize). So it is
possible that a running resize_instance() set the instance.host to point
to the destination and then before the finish_resize could set the
old_flavor an update_available_resources periodic runs on the source
host. This causes that the allocation of this instance is not tracked as
an instance as the instance.host point to the destination but it is not
tracked as a migration either as the instance.old_flavor is not yet set.
So the allocation on the source host is simply dropped by the periodic
job.

When such migration is confirmed the confirm_resize() tries to drop
the same resource allocation again but fails as the pinned CPUs of the
instance already freed.

When such migration is reverted instead, then revert succeeds but the
source host resource allocation will not contain the resource allocation
of the instance until the next update_available_resources periodic runs
and corrects it.

This does not affect resources tracked exclusively in placement (e.g.
VCPU, MEMORY_MB, DISK_GB) but it does affect NUMA related resource that
are still tracked in the resource tracker (e.g. huge pages, pinned
CPUs).

This patch moves the instance.old_flavor setting to the source node to
the same transaction that sets the instance.host to point to the
destination host. Hence solving the race condition.

Change-Id: Ic0d6c59147abe5e094e8f13e0d3523b178daeba9
Closes-Bug: #1944759
2021-09-27 12:01:20 +02:00
api-guide/source [doc] port-resource-request-groups not landed in Xena 2021-09-06 13:03:22 +02:00
api-ref/source Merge "Add some missing parameters in docs of os-cells" 2021-09-01 17:06:06 +00:00
devstack Switch to new rolevar for run-tempest role 2021-04-09 16:06:10 +00:00
doc docs: Add nova-volume volume_attachment refresh admin workflow 2021-09-15 10:26:39 +01:00
etc/nova Merge "Add missing [oslo_reports] options" 2021-08-24 13:41:16 +00:00
gate gate: Remove test_evacuate.sh 2021-06-15 17:35:20 +01:00
nova Store old_flavor already on source host during resize 2021-09-27 12:01:20 +02:00
playbooks zuul: Replace grenade and nova-grenade-multinode with grenade-multinode 2021-04-29 11:05:58 +01:00
releasenotes Update master for stable/xena 2021-09-17 14:44:10 +00:00
roles [OVN] Adapt the live-migration job scripts to work with OVN 2021-03-15 09:41:03 +00:00
tools db: Final cleanups 2021-08-17 13:50:19 +01:00
.coveragerc Remove nova/openstack/* from .coveragerc 2016-10-12 16:20:49 -04:00
.gitignore tox: Integrate mypy 2020-05-15 15:59:53 +01:00
.gitreview OpenDev Migration Patch 2019-04-19 19:45:52 +00:00
.mailmap Add mailmap entry 2014-05-07 12:14:26 -07:00
.pre-commit-config.yaml Switch to hacking 2.x 2020-01-17 11:30:40 +00:00
.stestr.conf Finish stestr migration 2017-11-24 16:51:12 -05:00
.zuul.yaml Add Python3 yoga unit tests 2021-09-17 14:44:22 +00:00
CONTRIBUTING.rst [Community goal] Update contributor documentation 2020-03-25 12:01:37 +00:00
HACKING.rst Add two new hacking rules 2021-09-01 12:26:52 +01:00
LICENSE initial commit 2010-05-27 23:05:26 -07:00
MAINTAINERS Fix broken URLs 2017-09-07 15:42:31 +02:00
README.rst docs: Remove references to XenAPI driver 2020-08-31 15:53:31 +01:00
bindep.txt tests: Allow bindep and test-setup.sh to run on EL distros 2021-06-18 12:34:27 +01:00
lower-constraints.txt db: Final cleanups 2021-08-17 13:50:19 +01:00
mypy-files.txt mypy: Add type annotations to 'nova.pci' 2021-04-26 18:06:21 +01:00
requirements.txt db: Final cleanups 2021-08-17 13:50:19 +01:00
setup.cfg setup.cfg: Resolve warning 2021-03-09 12:49:50 +00:00
setup.py Updated from global requirements 2017-03-02 11:50:48 +00:00
test-requirements.txt requirements: Add types-paramiko 2021-06-09 15:18:47 +01:00
tox.ini Add two new hacking rules 2021-09-01 12:26:52 +01:00

README.rst

OpenStack Nova

image

OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of compute technologies, including: libvirt (KVM, Xen, LXC and more), Hyper-V, VMware, OpenStack Ironic and PowerVM.

Use the following resources to learn more.

API

To learn how to use Nova's API, consult the documentation available online at:

For more information on OpenStack APIs, SDKs and CLIs in general, refer to:

Operators

To learn how to deploy and configure OpenStack Nova, consult the documentation available online at:

In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at:

Developers

For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst.

Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests.

Further developer focused documentation is available at:

Other Information

During each Summit and Project Team Gathering, we agree on what the whole community wants to focus on for the upcoming release. The plans for nova can be found at: