Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
 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())