Add wait_for_all_instances_status for test_reboot_computes_recovery

This test was failing because VM status after compute reboot is ACTIVE
for some time. The test should wait until VM status is SHUTDOWN

Change-Id: I679493bafc235b1c87ab4a48ac6aa2453b6083b3
This commit is contained in:
Eduardo Olivares 2020-04-07 12:12:00 +02:00
parent 8e469b87a5
commit 664e1079bb
2 changed files with 17 additions and 3 deletions

View File

@ -25,6 +25,9 @@ def overcloud_health_checks(passive_checks_only=False):
if not passive_checks_only:
# create a uniq stack
check_vm_create()
else:
# verify VM status is updated after reboot
nova.wait_for_all_instances_status('SHUTOFF')
nova.start_all_instances()
containers.assert_all_tripleo_containers_running()
containers.assert_equal_containers_state()

View File

@ -41,9 +41,7 @@ def check_nova_services_health(timeout=120, interval=2):
def start_all_instances():
"""try to start all stopped overcloud instances"""
nova_client = nova.get_nova_client()
servers = nova_client.servers.list()
for instance in servers:
for instance in nova.list_servers():
activated_instance = nova.activate_server(instance)
time.sleep(3)
instance_info = 'instance {nova_instance} is {state} on {host}'.format(
@ -54,3 +52,16 @@ def start_all_instances():
LOG.info(instance_info)
if activated_instance.status != 'ACTIVE':
tobiko.fail(instance_info)
def wait_for_all_instances_status(status, timeout=None):
"""wait for all instances for a certain status or raise an exception"""
for instance in nova.list_servers():
nova.wait_for_server_status(server=instance.id, status=status,
timeout=timeout)
instance_info = 'instance {nova_instance} is {state} on {host}'.format(
nova_instance=instance.name,
state=status,
host=instance._info[ # pylint: disable=W0212
'OS-EXT-SRV-ATTR:hypervisor_hostname'])
LOG.info(instance_info)