Merge "Fix cuncurrency problem in wait_for_cloud_init_status function"
This commit is contained in:
commit
534329600d
|
@ -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(
|
||||||
|
|
Loading…
Reference in New Issue