summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2012-07-09 13:50:05 -0400
committerScott Moser <smoser@ubuntu.com>2012-07-09 13:50:05 -0400
commit972c4e0d1bcfe40414dfb08525eb0fc35cec102e (patch)
tree75b3fc822c57354932df312f235460655e2fea3e
parentf1b72be4b4923d3effb80e1898f76ba0f81aab23 (diff)
downloadvyos-cloud-init-972c4e0d1bcfe40414dfb08525eb0fc35cec102e.tar.gz
vyos-cloud-init-972c4e0d1bcfe40414dfb08525eb0fc35cec102e.zip
DataSourceEc2: only do dns check in mirror selection
This returns the check for an archive mirror in the DataSourceEc2 to only do so by DNS resolution. The 'rework' branch had made the check wait and timeout on attempts to reach the mirror. This resulted in 120 seconds of waiting before failure. For now, just go back to the old situation of checking by dns.
-rw-r--r--cloudinit/sources/DataSourceEc2.py19
-rw-r--r--cloudinit/util.py5
-rw-r--r--config/cloud.cfg2
3 files changed, 15 insertions, 11 deletions
diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py
index cb460de1..6f7cfd43 100644
--- a/cloudinit/sources/DataSourceEc2.py
+++ b/cloudinit/sources/DataSourceEc2.py
@@ -87,6 +87,7 @@ class DataSourceEc2(sources.DataSource):
return self.get_mirror_from_availability_zone()
def get_mirror_from_availability_zone(self, availability_zone=None):
+ # Return type None indicates there is no cloud specific mirror
# Availability is like 'us-west-1b' or 'eu-west-1a'
if availability_zone is None:
availability_zone = self.get_availability_zone()
@@ -94,26 +95,26 @@ class DataSourceEc2(sources.DataSource):
if self.is_vpc():
return None
- # Use the distro to get the mirror
if not availability_zone:
return None
- mirror_tpl = self.distro.get_option('availability_zone_template')
- if not mirror_tpl:
+ mirror_tpl = self.distro.get_option('package_mirror_ec2_template', None)
+
+ if mirror_tpl is None:
return None
+ # in EC2, the 'region' is 'us-east-1' if 'zone' is 'us-east-1a'
tpl_params = {
'zone': availability_zone.strip(),
+ 'region': availability_zone[:-1]
}
mirror_url = mirror_tpl % (tpl_params)
- (max_wait, timeout) = self._get_url_settings()
- worked = uhelp.wait_for_url([mirror_url], max_wait=max_wait,
- timeout=timeout, status_cb=LOG.warn)
- if not worked:
- return None
+ found = util.search_for_mirror([mirror_url])
+ if found is not None:
+ return mirror_url
- return mirror_url
+ return None
def _get_url_settings(self):
mcfg = self.ds_cfg
diff --git a/cloudinit/util.py b/cloudinit/util.py
index d7dd20b5..d0d7a303 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -805,7 +805,10 @@ def is_resolvable_url(url):
def search_for_mirror(candidates):
- """ Search through a list of mirror urls for one that works """
+ """
+ Search through a list of mirror urls for one that works
+ This needs to return quickly.
+ """
for cand in candidates:
try:
if is_resolvable_url(cand):
diff --git a/config/cloud.cfg b/config/cloud.cfg
index 5dae4047..cb51d061 100644
--- a/config/cloud.cfg
+++ b/config/cloud.cfg
@@ -70,5 +70,5 @@ system_info:
templates_dir: /etc/cloud/templates/
upstart_dir: /etc/init/
package_mirror: http://archive.ubuntu.com/ubuntu
- availability_zone_template: http://%(zone)s.ec2.archive.ubuntu.com/ubuntu/
+ package_mirror_ec2_template: http://%(region)s.ec2.archive.ubuntu.com/ubuntu/
ssh_svcname: ssh