From 56252f4d7e8fbc481b6382a657dac659b6582fe0 Mon Sep 17 00:00:00 2001 From: Hans Lindgren Date: Mon, 25 Mar 2013 15:53:12 +0100 Subject: 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 --- nova/virt/xenapi/vmops.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'nova/virt') 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.""" -- cgit