nova/nova
Matt Riedemann fb61e864b9 Fix InstanceNotFound during _destroy_evacuated_instances
The _destroy_evacuated_instances method on compute
startup tries to cleanup guests on the hypervisor and
allocations held against that compute node resource
provider by evacuated instances, but doesn't take into
account that those evacuated instances could have been
deleted in the meantime which leads to a lazy-load
InstanceNotFound error that kills the startup of the
compute service.

This change does two things in the _destroy_evacuated_instances
method:

1. Loads the evacuated instances with a read_deleted='yes'
   context when calling _get_instances_on_driver(). This
   should be fine since _get_instances_on_driver() is already
   returning deleted instances anyway (InstanceList.get_by_filters
   defaults to read deleted instances unless the filters tell
   it otherwise - which we don't in this case). This is needed
   so that things like driver.destroy() don't raise
   InstanceNotFound while lazy-loading fields on the instance.

2. Skips the call to remove_allocation_from_compute() if the
   evacuated instance is already deleted. If the instance is
   already deleted, its allocations should have been cleaned
   up by its hosting compute service (or the API).

The functional regression test is updated to show the bug is
now fixed.

Conflicts:
      nova/compute/manager.py

NOTE(mriedem): The conflict is due to not having change
I1073faca6760bff3da0aaf3e8357bd8e64854be3 in Pike.

Change-Id: I1f4b3540dd453650f94333b36d7504ba164192f7
Closes-Bug: #1794996
(cherry picked from commit 05cd8d1282)
(cherry picked from commit 0208d64397)
(cherry picked from commit 6c7e53e210)
2018-12-06 19:39:34 -05:00
..
CA
api Handle HostMappingNotFound when deleting a compute service 2018-07-18 09:00:44 -04:00
cells Merge "Handle uuids in os-hypervisors API" 2017-07-20 01:03:27 +00:00
cmd Merge "nova-manage - fix online_data_migrations counts" into stable/pike 2018-10-03 17:59:13 +00:00
common
compute Fix InstanceNotFound during _destroy_evacuated_instances 2018-12-06 19:39:34 -05:00
conductor Add unshelve instance error info to fault table 2018-07-30 15:10:30 +00:00
conf Merge "Change consecutive build failure limit to a weigher" into stable/pike 2018-06-25 06:23:18 +00:00
console Merge "Remove translation of log messages" 2017-08-10 11:39:03 +00:00
consoleauth Merge "Remove translation of log messages" 2017-08-10 11:39:03 +00:00
db Merge "Fix DB archiver AttributeError due to wrong table name attribute used" into stable/pike 2018-09-20 19:14:02 +00:00
hacking Remove unused variable 2017-06-12 18:19:57 +07:00
image Merge "Handle glance exception during rotating instance backup" into stable/pike 2018-03-08 15:43:26 +00:00
ipv6
keymgr Remove key_manager.api_class hack 2017-07-17 17:49:08 -04:00
locale Imported Translations from Zanata 2017-08-10 11:34:33 +00:00
network Fix instance evacuation with PCI devices 2018-08-08 23:18:00 +00:00
notifications Fix sending legacy instance.update notification 2017-10-10 13:20:34 -04:00
objects Merge "Make scheduler.utils.setup_instance_group query all cells" into stable/pike 2018-11-09 23:18:08 +00:00
pci Modify PciPassthroughFilter to accept lists 2017-04-11 19:49:07 +00:00
policies Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 14:00:35 -04:00
scheduler Merge "Make scheduler.utils.setup_instance_group query all cells" into stable/pike 2018-11-09 23:18:08 +00:00
servicegroup Fix service list for disabled compute using MC driver 2018-09-16 19:12:13 +00:00
tests Fix InstanceNotFound during _destroy_evacuated_instances 2018-12-06 19:39:34 -05:00
virt Merge "Fix NoneType error in _notify_volume_usage_detach" into stable/pike 2018-11-30 03:25:29 +00:00
vnc
volume Translate the return value of attachment_create and _update 2017-07-25 21:16:03 -04:00
__init__.py Make eventlet hub use a monotonic clock 2018-01-26 18:09:18 +08:00
availability_zones.py Avoid lazy-load error when getting instance AZ 2017-05-25 15:46:22 -04:00
baserpc.py
block_device.py
cache_utils.py remove log translation tags from nova.cells 2017-04-10 14:48:07 +00:00
config.py
context.py Regenerate context during targeting 2017-10-17 00:55:48 +00:00
crypto.py
debugger.py
exception.py Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 14:00:35 -04:00
exception_wrapper.py Remove **kwargs passing in payload __init__ 2017-06-08 08:50:40 +00:00
filters.py
hooks.py
i18n.py
loadables.py
manager.py
policy.py Add policy granularity to the Flavors API 2017-07-19 15:56:47 -04:00
profiler.py
quota.py Make Quotas object favor the API database 2017-07-20 21:02:18 +00:00
rpc.py Merge "Account for compute.metrics.update in legacy notification whitelist" into stable/pike 2017-10-24 11:46:57 +00:00
safe_utils.py Allow wrapping of closures 2017-07-20 10:07:52 +01:00
service.py Make eventlet hub use a monotonic clock 2018-01-26 18:09:18 +08:00
service_auth.py Fix NoneType error when [service_user] is misconfigured 2017-12-07 12:34:37 -05:00
test.py Fix the request context in ServiceFixture 2018-09-04 20:46:18 +00:00
utils.py Move the last_bytes util method to libvirt 2017-07-26 08:36:32 +10:00
version.py
weights.py
wsgi.py