nova/nova
Matthew Booth 4b53e4edf9 Ensure attachment cleanup on failure in driver.pre_live_migration
Previously, if the call to driver.pre_live_migration failed (which in
libvirt can happen with a DestinationDiskExists exception), the
compute manager wouldn't rollback/cleanup volume attachments, leading
to corrupt volume attachment information, and, depending on the
backend, the instance being unable to access its volume. This patch
moves the driver.pre_live_migration call inside the existing
try/except, allowing the compute manager to properly rollback/cleanup
volume attachments.

The compute manager has its own _rollback_live_migration() cleanup in
case the pre_live_migration() RPC call to the destination fails. There
should be no conflicts between the cleanup in that and the new volume
cleanup in the except block. The remove_volume_connection() ->
driver_detach() -> detach_volume() call catches the InstanceNotFound
exception and warns about the instance disappearing (it was never
really on the destination in the first place). The attachment_delete()
in _rollback_live_migration() is contingent on there being an
old_vol_attachment in migrate_data, which there isn't because
pre_live_migration() raised instead of returning.

Conflicts in nova/compute/manager.py due to absence of setting
migrate_data.wait_for_vif_plug from 5aadff75c3.

Change-Id: I67f66e95d69ae6df22e539550a3eac697ea8f5d8
Closes-bug: 1778206
(cherry picked from commit 1a29248d5e)
(cherry picked from commit 6aecf475db)
2018-10-23 14:33:16 -04:00
..
CA
api Handle HostMappingNotFound when deleting a compute service 2018-07-18 12:59:07 +00:00
cells Add instance action record for snapshot instances 2017-12-11 17:46:38 +08:00
cmd nova-manage - fix online_data_migrations counts 2018-09-27 14:57:09 -04:00
common
compute Ensure attachment cleanup on failure in driver.pre_live_migration 2018-10-23 14:33:16 -04:00
conductor Add unshelve instance error info to fault table 2018-07-18 08:43:40 +08:00
conf Wait for network-vif-plugged before starting live migration 2018-08-22 12:34:54 -04:00
console Fix accumulated nits 2018-01-16 14:54:04 +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/queens 2018-09-19 16:20:36 +00:00
hacking trivial: Rename 'policy_check' -> 'policy' 2017-10-25 17:56:40 +01:00
image Workaround glanceclient bug when CONF.glance.api_servers not set 2018-02-08 09:06:48 -05:00
ipv6
keymgr Remove deprecated keymgr code 2017-09-11 15:48:30 -04:00
locale Imported Translations from Zanata 2018-03-01 06:16:22 +00:00
network Handle network-changed event for a specific port 2018-06-28 00:16:33 +00:00
notifications Merge "Remove noisy DEBUG log" into stable/queens 2018-09-21 12:01:58 +00:00
objects Filter deleted computes from get_all_by_uuids() 2018-09-21 14:46:35 -04:00
pci Address nits in I46d483f9de6776db1b025f925890624e5e682ada 2018-01-02 15:57:50 +00:00
policies Add policy rule to block image-backed servers with 0 root disk flavor 2018-06-18 13:51:41 -04:00
privsep stable-only: fix typo in IVS related privsep method 2018-10-03 19:28:30 +00:00
scheduler Revert "Make host_aggregate_map dictionary case-insensitive" 2018-09-25 19:10:48 -04:00
servicegroup Fix service list for disabled compute using MC driver 2018-09-16 19:12:55 +00:00
tests Ensure attachment cleanup on failure in driver.pre_live_migration 2018-10-23 14:33:16 -04:00
virt Merge "libvirt: Use os.stat and os.path.getsize for RAW disk inspection" into stable/queens 2018-10-05 10:03:47 +00:00
vnc
volume Use ksa session for cinder microversion check 2018-03-29 21:55:40 +00:00
__init__.py
availability_zones.py
baserpc.py
block_device.py Add uuid column to BlockDeviceMapping 2017-12-17 14:28:35 +00:00
cache_utils.py
config.py Set default of oslo.privsep.daemon logging to INFO level 2018-09-15 02:21:10 +00:00
context.py Allow cinderv2 endpoints within the request context catalog 2018-06-05 10:04:06 +01:00
crypto.py
debugger.py
exception.py [placement] Retry allocation writes server side 2018-08-03 14:41:15 +01:00
exception_wrapper.py rename binary to source in versioned notifications 2017-07-25 17:36:04 +02:00
filters.py
hooks.py
i18n.py correct referenced url in comments 2018-01-18 09:16:37 +08:00
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 Fix server_group_members quota check 2018-07-11 15:04:34 -04:00
rpc.py Remove dead code of api.fault notification sending 2017-10-09 17:29:40 +02:00
safe_utils.py Allow wrapping of closures 2017-07-20 10:07:52 +01:00
service.py Move conductor wait_until_ready() delay before manager init 2018-09-01 17:25:02 -04:00
service_auth.py Fix NoneType error when [service_user] is misconfigured 2017-11-28 12:22:30 -06:00
test.py Fix the request context in ServiceFixture 2018-09-04 19:36:26 +00:00
utils.py Merge "Handle TZ change in iso8601 >=0.1.12" 2018-01-31 00:36:50 +00:00
version.py
weights.py
wsgi.py