OpenStack Compute (Nova)
Go to file
Matt Riedemann 8f1773a7af Do not persist RequestSpec.ignore_hosts
Change Ic3968721d257a167f3f946e5387cd227a7eeec6c in Newton
started setting the RequestSpec.ignore_hosts field to the
source instance.host during resize/cold migrate if
allow_resize_to_same_host=False in config, which it is by
default.

Change I8abdf58a6537dd5e15a012ea37a7b48abd726579 also in
Newton persists changes to the RequestSpec in conductor
in order to save the RequestSpec.flavor for the new flavor.
This inadvertently persists the ignore_hosts field as well.

Later if you try to evacuate or unshelve the server it will ignore
the original source host because of the persisted ignore_hosts
value. This is obviously a problem in a small deployment with only
a few compute nodes (like an edge deployment). As a result, an
evacuation can fail if the only available host is the one being
ignored.

This change does two things:

1. In order to deal with existing corrupted RequestSpecs in the DB,
   this change simply makes conductor overwrite RequestSpec.ignore_hosts
   rather than append during evacuate before calling the scheduler so
   the current instance host (which is down) is filtered out.

   This evacuate code dealing with ignore_hosts goes back to Mitaka:

     I7fe694175bb47f53d281bd62ac200f1c8416682b

   The test_rebuild_instance_with_request_spec unit test is updated
   and renamed to actually be doing an evacuate which is what it was
   intended for, i.e. the host would not change during rebuild.

2. This change makes the RequestSpec no longer persist the ignore_hosts
   field like several other per-operation fields in the RequestSpec.
   The only operations that use ignore_hosts are resize (if
   allow_resize_to_same_host=False), evacuate and live migration, and
   the field gets reset in each case to ignore the source instance.host.

The related functional recreate test is also updated to show the
bug is fixed. Note that as part of that, the confirm_migration method
in the fake virt driver needed to be implemented otherwise trying to
evacuate back to the source host fails with an InstanceExists error since
the confirmResize operation did not remove the guest from the source host.

Conflicts:
      nova/objects/request_spec.py
      nova/tests/unit/conductor/test_conductor.py
      nova/tests/unit/objects/test_request_spec.py

NOTE(mriedem): The (test_)request_spec.py conflicts are due to not
having change I2131558f0edfe603ee1e8d8bae66a3caf5182a58 in Queens.
test_save_does_not_persist_requested_fields from that change is
ported and modified here to just deal with the ignore_hosts field.
The test_conductor.py conflict is due to not having change
I640562b8dd049ff5b6fea9286dc3082b9d837ed3 in Queens.

Change-Id: I3f488be6f3c399f23ccf2b9ee0d76cd000da0e3e
Closes-Bug: #1669054
(cherry picked from commit e4c998e573)
(cherry picked from commit 76dfb9d0b6)
(cherry picked from commit 31c08d0c7d)
2019-04-02 11:07:52 -04:00
api-guide/source Merge "Update links in documents" 2018-02-08 01:29:29 +00:00
api-ref/source Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 13:51:41 -04:00
contrib trivial: Remove "vif" script 2017-08-07 16:00:10 +01:00
devstack Skip more rebuild tests for cells v1 job 2018-09-26 09:07:30 -04:00
doc Add description of custom resource classes 2019-03-06 23:37:32 +00:00
etc/nova Move remaining uses of parted to privsep. 2018-01-24 22:26:36 +00:00
gate move gate hooks to gate/ 2017-01-04 11:05:16 +00:00
nova Do not persist RequestSpec.ignore_hosts 2019-04-02 11:07:52 -04:00
placement-api-ref/source Handle CannotDeleteParentResourceProvider to 409 Conflict 2018-06-28 13:50:18 +00:00
playbooks/legacy Replace openstack.org git:// URLs with https:// 2019-03-24 20:34:45 +00:00
releasenotes libvirt: Add workaround to cleanup instance dir when using rbd 2019-03-13 12:10:41 +00:00
tools Finish stestr migration 2017-11-24 16:51:12 -05:00
.coveragerc Remove nova/openstack/* from .coveragerc 2016-10-12 16:20:49 -04:00
.gitignore Fix test runner config issues with os-testr 1.0.0 2017-09-13 17:11:57 -04:00
.gitreview Update .gitreview for stable/queens 2018-02-09 07:15:06 +00:00
.mailmap Add mailmap entry 2014-05-07 12:14:26 -07:00
.stestr.conf Finish stestr migration 2017-11-24 16:51:12 -05:00
.zuul.yaml Migrate nova v2.0 legacy job to zuulv3 2019-01-25 08:36:00 +00:00
CONTRIBUTING.rst Update links in documents 2018-01-12 17:05:11 +08:00
HACKING.rst doc: fix link to creating unit tests in contributor guide 2017-11-14 11:22:43 -05: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 doc: Rework README to reflect new doc URLs 2017-08-03 16:06:08 -04:00
babel.cfg Get rid of distutils.extra. 2012-02-08 19:30:39 -08:00
bindep.txt Bindep does not catch missing libpcre3-dev on Ubuntu 2018-02-13 16:53:16 -05:00
requirements.txt Updated from global requirements 2018-02-01 07:20:35 +00:00
setup.cfg Deprecate the IronicHostManager 2017-11-28 15:23:48 -05:00
setup.py Updated from global requirements 2017-03-02 11:50:48 +00:00
test-requirements.txt Updated from global requirements 2018-01-29 00:21:52 +00:00
tests-py3.txt Skip unit tests for SSL + py3 2017-03-02 14:30:16 +08:00
tox.ini tox: Don't write byte code (maybe) 2019-02-14 10:44:43 +00:00

README.rst

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, 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: