Merge "Fix cuncurrency problem in wait_for_cloud_init_status function"

This commit is contained in:
Zuul 2021-12-25 19:43:12 +00:00 committed by Gerrit Code Review
commit 534329600d
1 changed files with 12 additions and 5 deletions

View File

@ -26,7 +26,7 @@ LOG = log.getLogger(__name__)
CLOUD_INIT_TRANSIENT_STATES = { CLOUD_INIT_TRANSIENT_STATES = {
'done': tuple(['running']) 'done': ('running',)
} }
CLOUD_INIT_OUTPUT_FILE = '/var/log/cloud-init-output.log' CLOUD_INIT_OUTPUT_FILE = '/var/log/cloud-init-output.log'
@ -199,14 +199,21 @@ def wait_for_cloud_init_status(
timeout=timeout, timeout=timeout,
tail=tail) tail=tail)
actual_status: typing.Optional[str]
for attempt in tobiko.retry(timeout=timeout, for attempt in tobiko.retry(timeout=timeout,
interval=sleep_interval, interval=sleep_interval,
default_timeout=1200., default_timeout=1200.,
default_interval=5.): default_interval=5.):
actual_status = get_cloud_init_status(ssh_client=ssh_client, try:
timeout=attempt.time_left) actual_status = get_cloud_init_status(ssh_client=ssh_client,
if actual_status in expected_states: timeout=attempt.time_left)
break except sh.ShellCommandFailed:
LOG.exception('Unable to get cloud-init status')
actual_status = None
else:
if actual_status in expected_states:
break
if attempt.is_last: if attempt.is_last:
raise WaitForCloudInitTimeoutError( raise WaitForCloudInitTimeoutError(