summaryrefslogtreecommitdiff
path: root/cloudinit/sources
diff options
context:
space:
mode:
authorDouglas Jordan <dojordan@microsoft.com>2018-03-23 12:04:18 -0600
committerChad Smith <chad.smith@canonical.com>2018-03-23 12:04:18 -0600
commit2d618e27687470a8a3649f44598819bdee8cdb03 (patch)
tree396a821b2ac2e332695ec72b909b54d39c124312 /cloudinit/sources
parent097a2967abd6c78edfbdc035e7141f2d142f17ae (diff)
downloadvyos-cloud-init-2d618e27687470a8a3649f44598819bdee8cdb03.tar.gz
vyos-cloud-init-2d618e27687470a8a3649f44598819bdee8cdb03.zip
Reduce AzurePreprovisioning HTTP timeouts.
Reducing timeout to 1 second as IMDS responds within a handful of milliseconds. Also get rid of max_retries to prevent exiting out of polling loop early due to IMDS outage / upgrade. Reduce Azure PreProvisioning HTTP timeouts during polling to avoid waiting an extra minute. LP: #1752977
Diffstat (limited to 'cloudinit/sources')
-rw-r--r--cloudinit/sources/DataSourceAzure.py31
1 files changed, 9 insertions, 22 deletions
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
index 0bb7fad9..0ee622e2 100644
--- a/cloudinit/sources/DataSourceAzure.py
+++ b/cloudinit/sources/DataSourceAzure.py
@@ -20,7 +20,7 @@ from cloudinit import net
from cloudinit.net.dhcp import EphemeralDHCPv4
from cloudinit import sources
from cloudinit.sources.helpers.azure import get_metadata_from_fabric
-from cloudinit.url_helper import readurl, wait_for_url, UrlError
+from cloudinit.url_helper import readurl, UrlError
from cloudinit import util
LOG = logging.getLogger(__name__)
@@ -49,7 +49,6 @@ DEFAULT_FS = 'ext4'
AZURE_CHASSIS_ASSET_TAG = '7783-7084-3265-9085-8269-3286-77'
REPROVISION_MARKER_FILE = "/var/lib/cloud/data/poll_imds"
IMDS_URL = "http://169.254.169.254/metadata/reprovisiondata"
-IMDS_RETRIES = 5
def find_storvscid_from_sysctl_pnpinfo(sysctl_out, deviceid):
@@ -451,36 +450,24 @@ class DataSourceAzure(sources.DataSource):
headers = {"Metadata": "true"}
LOG.debug("Start polling IMDS")
- def sleep_cb(response, loop_n):
- return 1
-
- def exception_cb(msg, exception):
+ def exc_cb(msg, exception):
if isinstance(exception, UrlError) and exception.code == 404:
- return
- LOG.warning("Exception during polling. Will try DHCP.",
- exc_info=True)
-
+ return True
# If we get an exception while trying to call IMDS, we
# call DHCP and setup the ephemeral network to acquire the new IP.
- raise exception
+ return False
need_report = report_ready
- for i in range(IMDS_RETRIES):
+ while True:
try:
with EphemeralDHCPv4() as lease:
if need_report:
self._report_ready(lease=lease)
need_report = False
- wait_for_url([url], max_wait=None, timeout=60,
- status_cb=LOG.info,
- headers_cb=lambda url: headers, sleep_time=1,
- exception_cb=exception_cb,
- sleep_time_cb=sleep_cb)
- return str(readurl(url, headers=headers))
- except Exception:
- LOG.debug("Exception during polling-retrying dhcp" +
- " %d more time(s).", (IMDS_RETRIES - i),
- exc_info=True)
+ return readurl(url, timeout=1, headers=headers,
+ exception_cb=exc_cb, infinite=True).contents
+ except UrlError:
+ pass
def _report_ready(self, lease):
"""Tells the fabric provisioning has completed