From 9eb3dc7ed44d99652a17238724842e3067d46120 Mon Sep 17 00:00:00 2001 From: Hans Lindgren Date: Mon, 29 Apr 2013 23:17:41 +0200 Subject: Reset migrating task state for MigrationError exceptions Create an exception type for pre-check errors and add it to the list of exceptions for which instance task state is reset to ACTIVE to avoid cases where an instance get stuck in MIGRATING state. Convert existing instances of raise MigrationError in scheduler and driver pre-checks to have them raise the new MigrationPreCheckError exception instead. In addition, also make sure that expected exceptions are passed over RPC silently. Resolves bug 1171526. Change-Id: I00fa0962e555f895dd98861684ec7767fed3b37b --- nova/tests/scheduler/test_scheduler.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'nova/tests') diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py index 92b5f4ca4..461b81b4b 100644 --- a/nova/tests/scheduler/test_scheduler.py +++ b/nova/tests/scheduler/test_scheduler.py @@ -36,6 +36,7 @@ from nova.image import glance from nova.openstack.common import jsonutils from nova.openstack.common.notifier import api as notifier from nova.openstack.common import rpc +from nova.openstack.common.rpc import common as rpc_common from nova.scheduler import driver from nova.scheduler import manager from nova import servicegroup @@ -65,6 +66,12 @@ class SchedulerManagerTestCase(test.TestCase): self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'} fake_instance_actions.stub_out_action_events(self.stubs) + def stub_out_client_exceptions(self): + def passthru(exceptions, func, *args, **kwargs): + return func(*args, **kwargs) + + self.stubs.Set(rpc_common, 'catch_client_exception', passthru) + def test_1_correct_init(self): # Correct scheduler driver manager = self.manager @@ -231,6 +238,7 @@ class SchedulerManagerTestCase(test.TestCase): mox.IgnoreArg()) self.mox.ReplayAll() + self.stub_out_client_exceptions() self.assertRaises(exception.NoValidHost, self.manager.live_migration, self.context, inst, dest, block_migration, @@ -263,6 +271,7 @@ class SchedulerManagerTestCase(test.TestCase): mox.IgnoreArg()) self.mox.ReplayAll() + self.stub_out_client_exceptions() self.assertRaises(exception.ComputeServiceUnavailable, self.manager.live_migration, self.context, inst, dest, block_migration, -- cgit