diff options
author | aswinrajamannar <39812128+aswinrajamannar@users.noreply.github.com> | 2021-08-12 12:44:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-12 14:44:53 -0500 |
commit | e119ceceb7d76af7d75c04a8779b9c5fc68083a8 (patch) | |
tree | 25f04b412fc662e1940166a558fafa13bcae1113 /cloudinit | |
parent | 7781dec3306e9467f216cfcb36b7e10a8b38547a (diff) | |
download | vyos-cloud-init-e119ceceb7d76af7d75c04a8779b9c5fc68083a8.tar.gz vyos-cloud-init-e119ceceb7d76af7d75c04a8779b9c5fc68083a8.zip |
Azure: Check if interface is up after sleep when trying to bring it up (#972)
When bringing interface up by unbinding and then binding hv_netvsc
driver, it might take a short delay after binding for the link to be
up. So before trying unbind/bind again after sleep, check if the link
is up. This is a corner case when a preprovisioned VM is reused and
the NICs are hot-attached.
Diffstat (limited to 'cloudinit')
-rwxr-xr-x | cloudinit/sources/DataSourceAzure.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index 6df9934b..ba23139b 100755 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -923,6 +923,16 @@ class DataSourceAzure(sources.DataSource): sleep(sleep_duration) + # Since we just did a unbind and bind, check again after sleep + # but before doing unbind and bind again to avoid races where the + # link might take a slight delay after bind to be up. + if self.distro.networking.is_up(ifname): + msg = ("Link is up after checking after sleeping for %d secs" + " after %d attempts" % + (sleep_duration, attempts)) + report_diagnostic_event(msg, logger_func=LOG.info) + return + @azure_ds_telemetry_reporter def _create_report_ready_marker(self): path = REPORTED_READY_MARKER_FILE |