def test_migrate_live_invalid_cpu_info(self): self._test_migrate_live_failed_with_exception( exception.InvalidCPUInfo(reason=""))
def test_live_migration_auto_set_dest(self): instance = self._live_migration_instance() # Confirm scheduler picks target host if none given. self.mox.StubOutWithMock(db, 'instance_type_get') self.mox.StubOutWithMock(self.driver, '_live_migration_src_check') self.mox.StubOutWithMock(self.driver, 'select_hosts') self.mox.StubOutWithMock(self.driver, '_live_migration_common_check') self.mox.StubOutWithMock(rpc, 'call') self.mox.StubOutWithMock(self.driver.compute_rpcapi, 'live_migration') dest = None block_migration = False disk_over_commit = False instance_type = instance_types.extract_instance_type(instance) request_spec = {'instance_properties': instance, 'instance_type': instance_type, 'instance_uuids': [instance['uuid']], 'image': self.image_service.show(self.context, instance['image_ref']) } self.driver._live_migration_src_check(self.context, instance) db.instance_type_get(self.context, instance_type['id']).MultipleTimes().AndReturn( instance_type) # First selected host raises exception.InvalidHypervisorType self.driver.select_hosts(self.context, request_spec, {'ignore_hosts': [instance['host']]}).AndReturn(['fake_host2']) self.driver._live_migration_common_check(self.context, instance, 'fake_host2').AndRaise(exception.InvalidHypervisorType()) # Second selected host raises exception.InvalidCPUInfo self.driver.select_hosts(self.context, request_spec, {'ignore_hosts': [instance['host'], 'fake_host2']}).AndReturn(['fake_host3']) self.driver._live_migration_common_check(self.context, instance, 'fake_host3') rpc.call(self.context, "compute.fake_host3", {"method": 'check_can_live_migrate_destination', "args": {'instance': instance, 'block_migration': block_migration, 'disk_over_commit': disk_over_commit}, "version": compute_rpcapi.ComputeAPI.BASE_RPC_API_VERSION}, None).AndRaise(exception.InvalidCPUInfo(reason="")) # Third selected host pass all checks self.driver.select_hosts(self.context, request_spec, {'ignore_hosts': [instance['host'], 'fake_host2', 'fake_host3']}).AndReturn(['fake_host4']) self.driver._live_migration_common_check(self.context, instance, 'fake_host4') rpc.call(self.context, "compute.fake_host4", {"method": 'check_can_live_migrate_destination', "args": {'instance': instance, 'block_migration': block_migration, 'disk_over_commit': disk_over_commit}, "version": compute_rpcapi.ComputeAPI.BASE_RPC_API_VERSION}, None).AndReturn({}) self.driver.compute_rpcapi.live_migration(self.context, host=instance['host'], instance=instance, dest='fake_host4', block_migration=block_migration, migrate_data={}) self.mox.ReplayAll() result = self.driver.schedule_live_migration(self.context, instance=instance, dest=dest, block_migration=block_migration, disk_over_commit=disk_over_commit) self.assertEqual(result, None)