def test_reject_out_of_sync_serveradmin(self): obj = Query({'hostname': VM_HOSTNAME}, ['disk_size_gib']).get() obj['disk_size_gib'] += 1 obj.commit() with self.assertRaises(InconsistentAttributeError): vm_migrate(VM_HOSTNAME)
def test_offline_migration_netcat(self): vm_migrate( VM_HOSTNAME, offline=True, offline_transport='netcat', ) self.check_vm_present()
def test_igvm_migration_log(self, performance_value, mock_time): for hv in self.hvs: hv.dataset_obj['igvm_migration_log'].clear() hv.dataset_obj.commit() src_hv = self.vm.hypervisor.dataset_obj['hostname'] cpu_usage_vm_src = self.vm.hypervisor.estimate_vm_cpu_usage(self.vm) timestamp = 1234567890 vm_migrate( VM_HOSTNAME, offline=True, offline_transport='drbd', ) src_hv_obj = (Query({ 'hostname': src_hv }, ['igvm_migration_log']).get()) self.assertEqual(list(src_hv_obj['igvm_migration_log']), ['{} -{}'.format(timestamp, round(cpu_usage_vm_src))]) with _get_vm(VM_HOSTNAME) as vm: dest_hv_obj = (Query( { 'hostname': vm.hypervisor.dataset_obj['hostname'] }, ['igvm_migration_log']).get()) cpu_usage_vm_dest = vm.hypervisor.estimate_vm_cpu_usage(vm) self.assertEqual( list(dest_hv_obj['igvm_migration_log']), ['{} +{}'.format(timestamp, round(cpu_usage_vm_dest))])
def test_rollback_drbd(self): obj = Query({'hostname': VM_HOSTNAME}, ['puppet_environment']).get() obj['puppet_environment'] = 'doesnotexist' obj.commit() with self.assertRaises(IGVMError): vm_migrate( VM_HOSTNAME, offline=True, run_puppet=True, offline_transport='drbd', ) self.check_vm_present()
def test_rollback_netcat(self): # TODO: consider the usage of self.vm_obj instead of new Query obj = Query({'hostname': VM_HOSTNAME}, ['puppet_environment']).get() obj['puppet_environment'] = 'doesnotexist' obj.commit() with self.assertRaises(IGVMError): vm_migrate( VM_HOSTNAME, offline=True, run_puppet=True, offline_transport='netcat', ) self.check_vm_present()
def _xfs_migrate_wrapper(self, *args, **kwargs): """ xfs dump/restore cause the corrupted files on restored disk from time to time. This is relatively rare case and I am not able to find the root reason yet. The rollback works quite good, but it fails to migrate. This wrapper do two retries on this particullar error """ for _ in range(3): try: vm_migrate(*args, **kwargs) return except XfsMigrationError as e: exc = e if e.args[0] == 'xfs dump/restore caused warnings': continue raise exc raise BaseException('xfs migration failed in 3 attempts')
def test_reject_online_with_puppet(self): with self.assertRaises(IGVMError): vm_migrate(VM_HOSTNAME, run_puppet=True)
def test_online_migration(self): vm_migrate(VM_HOSTNAME) self.check_vm_present()