Skip to content

Commit

Permalink
Wait VM getable after restoring
Browse files Browse the repository at this point in the history
  • Loading branch information
albinsun committed Aug 2, 2024
1 parent b252910 commit af6b1c3
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
11 changes: 11 additions & 0 deletions harvester_e2e_tests/fixtures/virtualmachines.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,17 @@ def configure(self, snooze=None, wait_timeout=None):
finally:
self.snooze, self.wait_timeout = s, t

def wait_getable(self, vm_name, endtime=None, callback=default_cb, **kws):
endtime = endtime or self._endtime()
while endtime > datetime.now():
ctx = ResponseContext('vm.get', *self.vms.get(vm_name, **kws))
if 200 == ctx.code and callback(ctx):
break
sleep(self.snooze)
else:
return False, ctx
return True, ctx

def wait_stopped(self, vm_name, endtime=None, callback=default_cb, **kws):
ctx = ResponseContext('vm.stop', *self.vms.stop(vm_name, **kws))
if 404 == ctx.code and callback(ctx):
Expand Down
14 changes: 14 additions & 0 deletions harvester_e2e_tests/integrations/test_4_vm_backup_restore.py
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,8 @@ def test_restore_with_new_vm(
spec = api_client.backups.RestoreSpec.for_new(restored_vm_name)
code, data = api_client.backups.restore(unique_vm_name, spec)
assert 201 == code, (code, data)
vm_getable, (code, data) = vm_checker.wait_getable(restored_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(restored_vm_name, ['default'])
Expand Down Expand Up @@ -478,6 +480,8 @@ def test_restore_replace_with_delete_vols(
spec = api_client.backups.RestoreSpec.for_existing(delete_volumes=True)
code, data = api_client.backups.restore(unique_vm_name, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down Expand Up @@ -596,6 +600,8 @@ def test_restore_replace_with_vm_shutdown_command(
spec = api_client.backups.RestoreSpec.for_existing(delete_volumes=True)
code, data = api_client.backups.restore(unique_vm_name, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down Expand Up @@ -689,6 +695,8 @@ def test_restore_replace_migrated_vm(
spec = api_client.backups.RestoreSpec.for_existing()
code, data = api_client.backups.restore(unique_vm_name, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down Expand Up @@ -861,6 +869,8 @@ def test_delete_first_backup(
spec = api_client.backups.RestoreSpec.for_existing(delete_volumes=True)
code, data = api_client.backups.restore(latest_backup, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down Expand Up @@ -955,6 +965,8 @@ def test_delete_last_backup(
spec = api_client.backups.RestoreSpec.for_existing(delete_volumes=True)
code, data = api_client.backups.restore(latest_backup, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down Expand Up @@ -1049,6 +1061,8 @@ def test_delete_middle_backup(
spec = api_client.backups.RestoreSpec.for_existing(delete_volumes=True)
code, data = api_client.backups.restore(latest_backup, spec)
assert 201 == code, f'Failed to restore backup with current VM replaced, {data}'
vm_getable, (code, data) = vm_checker.wait_getable(unique_vm_name)
assert vm_getable, (code, data)

# Check VM Started then get IPs (vm and host)
vm_got_ips, (code, data) = vm_checker.wait_ip_addresses(unique_vm_name, ['default'])
Expand Down

0 comments on commit af6b1c3

Please sign in to comment.