When the compute host recovers from a failure the compute manager
destroys instances that were evacuated from the host while it was down.
However these code paths only consider evacuated instances that are
still reported by the hypervisor. This means that if the compute
host is recovered in a way that the hypervisor lost the definition
of the instances (for example the compute host was redeployed) then
the allocation of these instances will not be deleted.
This patch makes sure that the instance allocation is cleaned up
even if the driver doesn't return that instance as exists on the
hypervisor.
Note that the functional test coverage will be added on top as it needs
some refactoring that would make the bugfix non backportable.
Reviewed: https:/ /review. opendev. org/512623 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=9cacaad14e8 c18e99e85d9dc04 308fee91303f8f
Committed: https:/
Submitter: Zuul
Branch: master
commit 9cacaad14e8c18e 99e85d9dc04308f ee91303f8f
Author: Balazs Gibizer <email address hidden>
Date: Tue Oct 17 15:06:59 2017 +0200
cleanup evacuated instances not on hypervisor
When the compute host recovers from a failure the compute manager
destroys instances that were evacuated from the host while it was down.
However these code paths only consider evacuated instances that are
still reported by the hypervisor. This means that if the compute
host is recovered in a way that the hypervisor lost the definition
of the instances (for example the compute host was redeployed) then
the allocation of these instances will not be deleted.
This patch makes sure that the instance allocation is cleaned up
even if the driver doesn't return that instance as exists on the
hypervisor.
Note that the functional test coverage will be added on top as it needs
some refactoring that would make the bugfix non backportable.
Change-Id: I4bc81b482380c5 778781659c4d167 a712316dab4
Closes-Bug: #1724172