OpenStack Compute (Nova)
Go to file
melanie witt 456b3d68bc [stable only] Handle quota usage during create/delete races
There is a race during an instance delete while booting where, if the
build request was found, there is still a chance we can fail to lookup
the instance record and if so, we need to go ahead and commit the quota
decrement reservations. We're currently skipping the quotas.commit() if
we *don't* find the instance record. I believe this is a regression as of
commit 361b883831.

There are two reasons why we may fail to find the instance record after
we successfully found the build request:

  a) Conductor didn't create the instance record yet.
  b) Conductor deleted the instance record after finding the build
     request was deleted by us (the API)

In either case, conductor doesn't do anything to decrement quota usage
so we need to do it in the compute/api.

There is a second race where we find the build request and succeed in
looking up the instance record but then fail to delete the instance
record (instance.destroy() raises InstanceNotFound). This can happen if

  c) Conductor deleted the instance record after finding the build
     request was deleted by us but after we looked up the instance
  d) If we (the API) are racing with another delete request

If c) happens, we need to quotas.commit(). If d) happens, we need to
quotas.rollback(). Since we can't know which case it was when we get
InstanceNotFound, we'll do a quotas.rollback() to get rid of the
reservation record and force a refresh of quota usages to make sure
we end with correct usage in case rollback was not the right choice.

Closes-Bug: #1783613

Change-Id: I4d492dcad193ff0b1202dcae97954cc65b75c109
2018-08-08 23:02:56 +00:00
api-guide/source Removes unnecessary utf-8 encoding 2016-12-20 10:27:01 +07:00
api-ref/source Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 14:16:11 -04:00
contrib Merge "changed quantum to neutron in vif-openstack" 2014-03-05 10:45:05 +00:00
devstack Skip test_rebuild_server_in_error_state for cells v1 2017-08-22 18:42:29 +00:00
doc Merge "Revert "Proper error handling by _ensure_resource_provider"" into stable/ocata 2018-04-20 05:21:11 +00:00
etc/nova Fix doc generation warnings 2017-03-06 18:51:19 +09:00
gate move gate hooks to gate/ 2017-01-04 11:05:16 +00:00
nova [stable only] Handle quota usage during create/delete races 2018-08-08 23:02:56 +00:00
playbooks/legacy/nova-live-migration Migrate tempest-dsvm-multinode-live-migration job in-tree 2018-05-10 11:17:39 -04:00
plugins/xenserver XenAPI Remove useless files when use os-xenapi lib 2017-01-10 18:06:17 -08:00
releasenotes Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 14:16:11 -04:00
tools Prepare for using standard python tests 2017-02-09 18:01:02 +00:00
.coveragerc Remove nova/openstack/* from .coveragerc 2016-10-12 16:20:49 -04:00
.gitignore doc: Integrate oslo_policy.sphinxpolicygen 2016-10-20 10:31:01 +01:00
.gitreview Update .gitreview for stable/ocata 2017-02-03 19:10:42 +00:00
.mailmap Add mailmap entry 2014-05-07 12:14:26 -07:00
.testr.conf [placement] Adjust the name of the gabbi tests 2016-09-20 19:14:44 +00:00
.zuul.yaml Migrate tempest-dsvm-multinode-live-migration job in-tree 2018-05-10 11:17:39 -04:00
babel.cfg Get rid of distutils.extra. 2012-02-08 19:30:39 -08:00
bindep.txt Update bindep.txt for doc builds 2017-11-21 20:09:30 +00:00
CONTRIBUTING.rst Workflow documentation is now in infra-manual 2014-12-05 03:30:37 +00:00
HACKING.rst hacking: Use uuidutils or uuidsentinel to generate UUID 2016-11-29 11:49:24 +05:30
LICENSE initial commit 2010-05-27 23:05:26 -07:00
MAINTAINERS Add a maintainers file 2015-05-23 03:22:07 +10:00
README.rst Show team and repo badges on README 2016-11-25 13:55:29 +01:00
requirements.txt Updated from global requirements 2017-08-09 01:01:23 +00:00
run_tests.sh Add description on how to run ./run_test.sh -8 2016-01-11 13:17:04 +00:00
setup.cfg Fix doc generation warnings 2017-03-06 18:51:19 +09:00
setup.py Updated from global requirements 2015-09-17 16:41:48 +00:00
test-requirements.txt Updated from global requirements 2017-01-26 18:48:41 +00:00
tests-functional-py3.txt Remove invalid URL in gabbi tests 2017-01-17 21:10:45 +00:00
tests-py3.txt Enable virt.vmwareapi test cases on Python 2017-01-18 11:14:24 +08:00
tox.ini Update UPPER_CONSTRAINTS_FILE for stable/ocata 2017-02-03 19:10:44 +00:00

Team and repository tags

image

OpenStack Nova

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, XenServer and OpenStack Ironic.

OpenStack Nova is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.

API

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

http://developer.openstack.org/api-guide/compute/ http://developer.openstack.org/api-ref/compute/

For more information on OpenStack APIs, SDKs and CLIs, please see:

http://www.openstack.org/appdev/ http://developer.openstack.org/

Operators

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

http://docs.openstack.org

For information about the different compute (hypervisor) drivers supported by Nova, please read:

http://docs.openstack.org/developer/nova/feature_classification.html

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:

http://bugs.launchpad.net/nova

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:

http://docs.openstack.org/developer/nova/