diff options
| author | Hans Lindgren <hanlind@kth.se> | 2013-03-25 15:53:12 +0100 |
|---|---|---|
| committer | Hans Lindgren <hanlind@kth.se> | 2013-03-25 21:50:46 +0100 |
| commit | 56252f4d7e8fbc481b6382a657dac659b6582fe0 (patch) | |
| tree | 6c15fe8881815cc8d5b6c2aaf76dd6b764abb686 /nova/virt | |
| parent | 2d02ce3ba00c3e4300bb841483d00d18210f79ff (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.py | 16 |
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.""" |
