def test_live_migration_set_vmstate_error(self): inst = { "uuid": "fake-instance-id", "vm_state": vm_states.ACTIVE, } dest = 'fake_host' block_migration = False disk_over_commit = False self.mox.StubOutWithMock(self.manager, '_schedule_live_migration') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.manager._schedule_live_migration( self.context, inst, dest, block_migration, disk_over_commit).AndRaise(ValueError) db.instance_update_and_get_original(self.context, inst["uuid"], { "vm_state": vm_states.ERROR, }).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc( self.context, mox.IsA(conductor_api.LocalAPI), inst, mox.IsA(ValueError), mox.IgnoreArg()) self.mox.ReplayAll() self.manager = utils.ExceptionHelper(self.manager) self.assertRaises(ValueError, self.manager.live_migration, self.context, inst, dest, block_migration, disk_over_commit)
def test_live_migration_compute_service_notavailable(self): inst = { "uuid": "fake-instance-id", "vm_state": vm_states.ACTIVE, "task_state": task_states.MIGRATING, } dest = 'fake_host' block_migration = False disk_over_commit = False self.mox.StubOutWithMock(self.manager, '_schedule_live_migration') self.mox.StubOutWithMock(compute_utils, 'add_instance_fault_from_exc') self.mox.StubOutWithMock(db, 'instance_update_and_get_original') self.manager._schedule_live_migration( self.context, inst, dest, block_migration, disk_over_commit).AndRaise( exception.ComputeServiceUnavailable(host="src")) db.instance_update_and_get_original( self.context, inst["uuid"], { "vm_state": inst['vm_state'], "task_state": None, "expected_task_state": task_states.MIGRATING, }).AndReturn((inst, inst)) compute_utils.add_instance_fault_from_exc( self.context, mox.IsA(conductor_api.LocalAPI), inst, mox.IsA(exception.ComputeServiceUnavailable), mox.IgnoreArg()) self.mox.ReplayAll() self.manager = utils.ExceptionHelper(self.manager) self.assertRaises(exception.ComputeServiceUnavailable, self.manager.live_migration, self.context, inst, dest, block_migration, disk_over_commit)
def __init__(self): # TODO(danms): This needs to be something more generic for # other/future users of this sort of functionality. self._manager = utils.ExceptionHelper(manager.ConductorManager())