Fix loop in waiter when error_ok is True

If error_ok=True is passed to wait_for_status and a resource
is in 'ERROR' status, the function infinitely loops

check_timeout value is now considered in case of ERROR statuses in
resources.

Story: 2008110
Task: 40826

Change-Id: I9d62b2f4ec55a6fd6cba38d446711c16f03a5ade
This commit is contained in:
Gregory Thiemonge 2020-09-07 08:37:51 +02:00 committed by Ann Taraday
parent a5b6008537
commit 3adefa4a4d

View File

@ -68,7 +68,7 @@ def wait_for_status(show_client, id, status_key, status,
LOG.info('{name}\'s status updated to {status}.'.format(
name=show_client.__name__, status=status))
return object_details
elif object_details[status_key] == 'ERROR':
elif object_details[status_key] == 'ERROR' and not error_ok:
message = ('{name} {field} updated to an invalid state of '
'ERROR'.format(name=show_client.__name__,
field=status_key))
@ -76,9 +76,9 @@ def wait_for_status(show_client, id, status_key, status,
if caller:
message = '({caller}) {message}'.format(caller=caller,
message=message)
if not error_ok:
raise exceptions.UnexpectedResponseCode(message)
elif int(time.time()) - start >= check_timeout:
raise exceptions.UnexpectedResponseCode(message)
if int(time.time()) - start >= check_timeout:
message = (
'{name} {field} failed to update to {expected_status} within '
'the required time {timeout}. Current status of {name}: '