diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-02-13 08:27:04 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-02-13 08:27:04 +0000 |
commit | d980805880c681881504e269e03130e4452630ab (patch) | |
tree | 537c3b41d9c5e34d97fdc134c983f9e74bd899b4 /nova/scheduler | |
parent | 8462882137f254d77e372306e91aaa05c50ce423 (diff) | |
parent | be62d6a86971abac57a1cc03c985ba1e97fd55cb (diff) | |
download | nova-d980805880c681881504e269e03130e4452630ab.tar.gz nova-d980805880c681881504e269e03130e4452630ab.tar.xz nova-d980805880c681881504e269e03130e4452630ab.zip |
Merge "Handle compute node not available for live migration"
Diffstat (limited to 'nova/scheduler')
-rw-r--r-- | nova/scheduler/driver.py | 5 | ||||
-rw-r--r-- | nova/scheduler/manager.py | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py index 4ad548798..2565e4e40 100644 --- a/nova/scheduler/driver.py +++ b/nova/scheduler/driver.py @@ -222,7 +222,10 @@ class Scheduler(object): """ # Checking dest exists and compute node. - dservice_ref = db.service_get_by_compute_host(context, dest) + try: + dservice_ref = db.service_get_by_compute_host(context, dest) + except exception.NotFound: + raise exception.ComputeServiceUnavailable(host=dest) # Checking dest host is alive. if not self.servicegroup_api.service_is_up(dservice_ref): diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py index a129a1b6d..64a388f60 100644 --- a/nova/scheduler/manager.py +++ b/nova/scheduler/manager.py @@ -24,6 +24,7 @@ Scheduler Service import sys from nova.compute import rpcapi as compute_rpcapi +from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.conductor import api as conductor_api @@ -92,6 +93,16 @@ class SchedulerManager(manager.Manager): return self.driver.schedule_live_migration( context, instance, dest, block_migration, disk_over_commit) + except exception.ComputeServiceUnavailable as ex: + request_spec = {'instance_properties': { + 'uuid': instance['uuid'], }, + } + with excutils.save_and_reraise_exception(): + self._set_vm_state_and_notify('live_migration', + dict(vm_state=instance['vm_state'], + task_state=None, + expected_task_state=task_states.MIGRATING,), + context, ex, request_spec) except Exception as ex: with excutils.save_and_reraise_exception(): self._set_vm_state_and_notify('live_migration', |