summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorHans Lindgren <hanlind@kth.se>2013-03-25 15:53:12 +0100
committerHans Lindgren <hanlind@kth.se>2013-03-25 21:50:46 +0100
commit56252f4d7e8fbc481b6382a657dac659b6582fe0 (patch)
tree6c15fe8881815cc8d5b6c2aaf76dd6b764abb686 /nova/virt
parent2d02ce3ba00c3e4300bb841483d00d18210f79ff (diff)
NoneType exception thrown if driver live-migration check returns None
XenAPI driver live-migration checks must return dicts as required by the virt api interface. Resolves bug 1158603. Change-Id: I0db364a17e3069b0b7e3f19030afc35283edecfb
Diffstat (limited to 'nova/virt')
-rw-r--r--nova/virt/xenapi/vmops.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py
index ce3301fd9..ca1aa46cc 100644
--- a/nova/virt/xenapi/vmops.py
+++ b/nova/virt/xenapi/vmops.py
@@ -1658,21 +1658,21 @@ class VMOps(object):
:param disk_over_commit: if true, allow disk over commit
"""
+ dest_check_data = {}
if block_migration:
migrate_send_data = self._migrate_receive(ctxt)
destination_sr_ref = vm_utils.safe_find_sr(self._session)
- dest_check_data = {
- "block_migration": block_migration,
- "migrate_data": {"migrate_send_data": migrate_send_data,
- "destination_sr_ref": destination_sr_ref}}
- return dest_check_data
+ dest_check_data.update(
+ {"block_migration": block_migration,
+ "migrate_data": {"migrate_send_data": migrate_send_data,
+ "destination_sr_ref": destination_sr_ref}})
else:
src = instance_ref['host']
self._ensure_host_in_aggregate(ctxt, src)
# TODO(johngarbutt) we currently assume
# instance is on a SR shared with other destination
# block migration work will be able to resolve this
- return None
+ return dest_check_data
def check_can_live_migrate_source(self, ctxt, instance_ref,
dest_check_data):
@@ -1684,17 +1684,17 @@ class VMOps(object):
destination, includes block_migration flag
"""
- if dest_check_data and 'migrate_data' in dest_check_data:
+ if 'migrate_data' in dest_check_data:
vm_ref = self._get_vm_opaque_ref(instance_ref)
migrate_data = dest_check_data['migrate_data']
try:
self._call_live_migrate_command(
"VM.assert_can_migrate", vm_ref, migrate_data)
- return dest_check_data
except self._session.XenAPI.Failure as exc:
LOG.exception(exc)
raise exception.MigrationError(_('VM.assert_can_migrate'
'failed'))
+ return dest_check_data
def _generate_vdi_map(self, destination_sr_ref, vm_ref):
"""generate a vdi_map for _call_live_migrate_command."""