nova/nova
Sahid Orentino Ferdjaoui 92bd7ea118 libvirt: disconnect volume from host during detach
Under certain failure scenarios it may be that although the libvirt
definition for the volume has been removed for the instance that the
associated storage lun on the compute server may not have been fully
cleaned up yet.

In case users try an other attempt to detach volume we should not stop
the process whether the device is not found in domain definition but
try to disconnect the logical device from host.

This commit makes the process to attempt a disconnect volume even if
the device is not attached to the guest.

Closes-Bug: #1727260
Signed-off-by: Sahid Orentino Ferdjaoui <sahid.ferdjaoui@redhat.com>

(cherry picked from commit ce531dd1b7)
(cherry picked from commit d6a072b5c5)

Conflicts:
	nova/tests/unit/virt/libvirt/test_driver.py

NOTE: The conflicts were due to the newer testcase mocking
'nova.virt.libvirt.host.Host._get_domain' where the older code calls
'nova.virt.libvirt.host.Host.get_domain', and also dealing with the
fact that the older code doesn't pass 'encryption' to
self._disconnect_volume().

This latter issue means that we need to move the call to
encryptor.detach_volume() to ensure it gets called if we hit
exception.DeviceNotFound when detaching the device from
the guest.  This is similar to the original code proposed
in https://review.openstack.org/#/c/515008/9/nova/virt/libvirt/driver.py
but it requires special handling for the scenario where cryptsetup
tries to destroy a dm-crypt device that has already been destroyed.

Signed-off-by: Chris Friesen <chris.friesen@windriver.com>
Change-Id: I4182642aab3fd2ffb1c97d2de9bdca58982289d8
2018-04-19 20:04:45 +00:00
..
CA
api Return 400 when compute host is not found 2018-03-08 06:24:09 +00:00
cells Merge "Handle uuids in os-hypervisors API" 2017-07-20 01:03:27 +00:00
cmd Add --by-service to discover_hosts 2018-03-21 10:43:19 -07:00
common
compute Merge "compute: Cleans up allocations after failed resize" into stable/pike 2018-03-31 00:53:19 +00:00
conductor Store block device mappings in cell0 2018-02-21 18:11:41 -05:00
conf libvirt: Allow to specify granular CPU feature flags 2018-04-10 20:18:50 +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 Make request_spec.spec MediumText 2017-12-18 10:37:25 -05: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 possible TypeError in VIF.fixed_ips 2018-01-08 14:06:38 +01:00
notifications Fix sending legacy instance.update notification 2017-10-10 13:20:34 -04:00
objects Merge "Do not set allocation.id in AllocationList.create_all()" into stable/pike 2018-03-30 17:46:33 +00:00
pci Modify PciPassthroughFilter to accept lists 2017-04-11 19:49:07 +00:00
policies Merge "Add policy granularity to the Flavors API" 2017-08-10 11:47:12 +00:00
scheduler Merge "Handle volume-backed instances in IsolatedHostsFilter" into stable/pike 2018-03-21 21:42:34 +00:00
servicegroup Fix the display of updated_at time when using memcache driver. 2017-05-26 16:48:07 +08:00
tests libvirt: disconnect volume from host during detach 2018-04-19 20:04:45 +00:00
virt libvirt: disconnect volume from host during detach 2018-04-19 20:04:45 +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 db: Add attachment_id to block_device_mapping 2017-03-16 15:26:33 -04:00
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 Merge "Handle glance exception during rotating instance backup" into stable/pike 2018-03-08 15:43:26 +00: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 Make TestRPC inherit from the base nova TestCase 2017-10-13 13:20:44 +00:00
utils.py Move the last_bytes util method to libvirt 2017-07-26 08:36:32 +10:00
version.py
weights.py Correct some spelling errors 2017-02-25 02:45:30 +00:00
wsgi.py