From 2c20e675de5c7f840b75f023bf65802fa010fd37 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Tue, 24 May 2011 12:46:34 +0100 Subject: Modified cloudinit/DataSourceEc2.py and cloudinit/boto_utils.py to check both http://169.254.169.254 and http://instance-data:8773 for meta data service. LP: #761847 --- cloudinit/DataSourceEc2.py | 48 +++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 9f1cf840..289fa425 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -31,6 +31,7 @@ import errno class DataSourceEc2(DataSource.DataSource): api_ver = '2009-04-04' seeddir = seeddir + '/ec2' + metadata_address = "169.254.169.254" def __str__(self): return("DataSourceEc2") @@ -46,8 +47,8 @@ class DataSourceEc2(DataSource.DataSource): try: if not self.wait_for_metadata_service(): return False - self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver) - self.metadata = boto_utils.get_instance_metadata(self.api_ver) + self.userdata_raw = boto_utils.get_instance_userdata(metadata_address,self.api_ver) + self.metadata = boto_utils.get_instance_metadata(metadata_address,self.api_ver) return True except Exception as e: print e @@ -100,30 +101,33 @@ class DataSourceEc2(DataSource.DataSource): log.warn("Failed to get timeout, using %s" % timeout) sleeptime = 1 - address = '169.254.169.254' + addresslist = ['169.254.169.254', "instance-data"] starttime = time.time() - url="http://%s/%s/meta-data/instance-id" % (address,self.api_ver) for x in range(sleeps): - # given 100 sleeps, this ends up total sleep time of 1050 sec - sleeptime=int(x/5)+1 - - reason = "" - try: - req = urllib2.Request(url) - resp = urllib2.urlopen(req, timeout=timeout) - if resp.read() != "": return True - reason = "empty data [%s]" % resp.getcode() - except urllib2.HTTPError as e: - reason = "http error [%s]" % e.code - except urllib2.URLError as e: - reason = "url error [%s]" % e.reason - - if x == 0: - log.warning("waiting for metadata service at %s\n" % url) + for address in addresslist: + url="http://%s/%s/meta-data/instance-id" % (address,self.api_ver) + # given 100 sleeps, this ends up total sleep time of 1050 sec + sleeptime=int(x/5)+1 + + reason = "" + try: + req = urllib2.Request(url) + resp = urllib2.urlopen(req, timeout=timeout) + if resp.read() != "": + metadata_address = address + return True + reason = "empty data [%s]" % resp.getcode() + except urllib2.HTTPError as e: + reason = "http error [%s]" % e.code + except urllib2.URLError as e: + reason = "url error [%s]" % e.reason + + if x == 0: + log.warning("waiting for metadata service at %s\n" % url) - log.warning(" %s [%02s/%s]: %s\n" % - (time.strftime("%H:%M:%S",time.gmtime()), x+1, sleeps, reason)) + log.warning(" %s [%02s/%s]: %s\n" % + (time.strftime("%H:%M:%S",time.gmtime()), x+1, sleeps, reason)) time.sleep(sleeptime) log.critical("giving up on md after %i seconds\n" % -- cgit v1.2.3 From 707a01fb1af5c8c493b021b782d73d01cd018ae4 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Tue, 24 May 2011 12:47:52 +0100 Subject: Modified cloudinit/DataSourceEc2.py and cloudinit/boto_utils.py to check both http://169.254.169.254 and http://instance-data:8773 for meta data service. LP: #761847 --- cloudinit/DataSourceEc2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 289fa425..38284463 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -101,7 +101,7 @@ class DataSourceEc2(DataSource.DataSource): log.warn("Failed to get timeout, using %s" % timeout) sleeptime = 1 - addresslist = ['169.254.169.254', "instance-data"] + addresslist = ['169.254.169.254', "instance-data:8773"] starttime = time.time() for x in range(sleeps): -- cgit v1.2.3 From 25dc96dafb3ea94d4f798990bcf26825855f899b Mon Sep 17 00:00:00 2001 From: keyz182 Date: Wed, 25 May 2011 11:48:41 +0100 Subject: Modified to reflect changes suggested by Scott Moser --- cloudinit/DataSourceEc2.py | 18 ++++++++++++------ cloudinit/boto_utils.py | 8 ++++---- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 38284463..2bf7ea8c 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -47,8 +47,8 @@ class DataSourceEc2(DataSource.DataSource): try: if not self.wait_for_metadata_service(): return False - self.userdata_raw = boto_utils.get_instance_userdata(metadata_address,self.api_ver) - self.metadata = boto_utils.get_instance_metadata(metadata_address,self.api_ver) + self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,None,metadata_address) + self.metadata = boto_utils.get_instance_metadata(self.api_ver,metadata_address) return True except Exception as e: print e @@ -101,27 +101,33 @@ class DataSourceEc2(DataSource.DataSource): log.warn("Failed to get timeout, using %s" % timeout) sleeptime = 1 - addresslist = ['169.254.169.254', "instance-data:8773"] + addresslist = [['169.254.169.254',80], ["instance-data",8773]] starttime = time.time() for x in range(sleeps): for address in addresslist: - url="http://%s/%s/meta-data/instance-id" % (address,self.api_ver) + host="http://%s:%i/" % (address[0],address[1]) + url="%s%s/meta-data/instance-id" % (host,self.api_ver) + # given 100 sleeps, this ends up total sleep time of 1050 sec sleeptime=int(x/5)+1 - + + reason = "" try: + socket.getaddrinfo(address[0],address[1]) req = urllib2.Request(url) resp = urllib2.urlopen(req, timeout=timeout) if resp.read() != "": - metadata_address = address + metadata_address = host return True reason = "empty data [%s]" % resp.getcode() except urllib2.HTTPError as e: reason = "http error [%s]" % e.code except urllib2.URLError as e: reason = "url error [%s]" % e.reason + except socket.gaierror as e: + reason = "url error [%s]" % e if x == 0: log.warning("waiting for metadata service at %s\n" % url) diff --git a/cloudinit/boto_utils.py b/cloudinit/boto_utils.py index 8eb7a575..e60e804d 100644 --- a/cloudinit/boto_utils.py +++ b/cloudinit/boto_utils.py @@ -60,7 +60,7 @@ def retry_url(url, retry_on_404=True): sys.stderr.write('Caught exception reading instance data, giving up\n') return '' -def get_instance_metadata(url='169.254.169.254',version='latest'): +def get_instance_metadata(version='latest',url='http://169.254.169.254/'): """ Returns the instance metadata as a nested Python dictionary. Simple values (e.g. local_hostname, hostname, etc.) will be @@ -68,11 +68,11 @@ def get_instance_metadata(url='169.254.169.254',version='latest'): be stored in the dict as a list of string values. More complex fields such as public-keys and will be stored as nested dicts. """ - url = 'http://%s/%s/meta-data/' % (url,version) + url = '%s%s/meta-data/' % (url,version) return _get_instance_metadata(url) -def get_instance_userdata(url='169.254.169.254',version='latest', sep=None): - url = 'http://%s/%s/user-data' % (url,version) +def get_instance_userdata(version='latest', sep=None,url='http://169.254.169.254/'): + url = '%s%s/user-data' % (url,version) user_data = retry_url(url, retry_on_404=False) if user_data: if sep: -- cgit v1.2.3 From a0ea36906c02faa26a764aaefc4aafb3fc0f65f4 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Wed, 25 May 2011 11:50:07 +0100 Subject: Fix for default metadata_address value --- cloudinit/DataSourceEc2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 2bf7ea8c..2e7eb2a7 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -31,7 +31,7 @@ import errno class DataSourceEc2(DataSource.DataSource): api_ver = '2009-04-04' seeddir = seeddir + '/ec2' - metadata_address = "169.254.169.254" + metadata_address = "http://169.254.169.254:80/" def __str__(self): return("DataSourceEc2") -- cgit v1.2.3 From 6bdaa810dd02c63b6c560c0283bf375716ff6ad0 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Wed, 25 May 2011 16:42:04 +0100 Subject: Fixed silly mistake self.metadata_address instead of metadata_address. D'oh. --- cloudinit/DataSourceEc2.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 2e7eb2a7..e90c29b7 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -47,8 +47,8 @@ class DataSourceEc2(DataSource.DataSource): try: if not self.wait_for_metadata_service(): return False - self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,None,metadata_address) - self.metadata = boto_utils.get_instance_metadata(self.api_ver,metadata_address) + self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,None,self.metadata_address) + self.metadata = boto_utils.get_instance_metadata(self.api_ver,self.metadata_address) return True except Exception as e: print e @@ -119,8 +119,9 @@ class DataSourceEc2(DataSource.DataSource): req = urllib2.Request(url) resp = urllib2.urlopen(req, timeout=timeout) if resp.read() != "": - metadata_address = host + self.metadata_address = host return True + log.info("Using $s for metadata" % self.metadata_address) reason = "empty data [%s]" % resp.getcode() except urllib2.HTTPError as e: reason = "http error [%s]" % e.code -- cgit v1.2.3 From 7a251d636671828a51374933463d336774fe8403 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Thu, 26 May 2011 14:14:03 +0100 Subject: Remove any unresolveable addresses before attempting to access metadata. --- cloudinit/DataSourceEc2.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index e90c29b7..942581bf 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -80,6 +80,12 @@ class DataSourceEc2(DataSource.DataSource): except: return fallback + def try_to_resolve_metadata(self,addresstup): + try: + socket.getaddrinfo(addresstup[0],addresstup[1]) + return True + except Exception as e: + return False def wait_for_metadata_service(self, sleeps = None): mcfg = self.ds_cfg @@ -103,7 +109,15 @@ class DataSourceEc2(DataSource.DataSource): sleeptime = 1 addresslist = [['169.254.169.254',80], ["instance-data",8773]] starttime = time.time() - + + # Remove addresses from the list that wont resolve. + addresslist[:] = [x for x in addresslist if try_to_resolve_metadata(x)] + + log.warning("Checking the following for metadata service:") + for addr in addresslist: + log.warning("\thttp://%s:%i/meta-data/instance-id" % (addr[0],addr[1])) + + for x in range(sleeps): for address in addresslist: host="http://%s:%i/" % (address[0],address[1]) @@ -112,10 +126,9 @@ class DataSourceEc2(DataSource.DataSource): # given 100 sleeps, this ends up total sleep time of 1050 sec sleeptime=int(x/5)+1 - reason = "" try: - socket.getaddrinfo(address[0],address[1]) + log.warning("Trying to access metadata service at %s" % url) req = urllib2.Request(url) resp = urllib2.urlopen(req, timeout=timeout) if resp.read() != "": @@ -127,11 +140,10 @@ class DataSourceEc2(DataSource.DataSource): reason = "http error [%s]" % e.code except urllib2.URLError as e: reason = "url error [%s]" % e.reason - except socket.gaierror as e: - reason = "url error [%s]" % e - - if x == 0: - log.warning("waiting for metadata service at %s\n" % url) + + #not needed? Addresses being checked are displayed above + #if x == 0: + # log.warning("waiting for metadata service at %s" % url) log.warning(" %s [%02s/%s]: %s\n" % (time.strftime("%H:%M:%S",time.gmtime()), x+1, sleeps, reason)) -- cgit v1.2.3 From deb6d2356e3989d09029264c74b7d65c8f4414a3 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Thu, 26 May 2011 16:07:15 +0100 Subject: Another silly typo. --- cloudinit/DataSourceEc2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 942581bf..0d04f607 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -110,8 +110,8 @@ class DataSourceEc2(DataSource.DataSource): addresslist = [['169.254.169.254',80], ["instance-data",8773]] starttime = time.time() - # Remove addresses from the list that wont resolve. - addresslist[:] = [x for x in addresslist if try_to_resolve_metadata(x)] + # Remove addresses from the list that wont resolve. + addresslist[:] = [x for x in addresslist if self.try_to_resolve_metadata(x)] log.warning("Checking the following for metadata service:") for addr in addresslist: -- cgit v1.2.3 From 2d1e87fb520292c6c30484ea7acad84adb0487d3 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Sat, 28 May 2011 00:50:41 +0100 Subject: Added support for loading metadata urls from config files. --- cloudinit/DataSourceEc2.py | 90 ++++++++++++++++++------------- cloudinit/boto_utils.py | 8 +-- doc/examples/cloud-config-datasources.txt | 7 +++ 3 files changed, 64 insertions(+), 41 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 0d04f607..d4b7635f 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -28,8 +28,9 @@ import boto_utils import os.path import errno + class DataSourceEc2(DataSource.DataSource): - api_ver = '2009-04-04' + api_ver = '2009-04-04' seeddir = seeddir + '/ec2' metadata_address = "http://169.254.169.254:80/" @@ -37,18 +38,18 @@ class DataSourceEc2(DataSource.DataSource): return("DataSourceEc2") def get_data(self): - seedret={ } - if util.read_optional_seed(seedret,base=self.seeddir+ "/"): + seedret={} + if util.read_optional_seed(seedret, base=self.seeddir+ "/"): self.userdata_raw = seedret['user-data'] self.metadata = seedret['meta-data'] log.debug("using seeded ec2 data in %s" % self.seeddir) return True - + try: if not self.wait_for_metadata_service(): return False - self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,None,self.metadata_address) - self.metadata = boto_utils.get_instance_metadata(self.api_ver,self.metadata_address) + self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver, None, self.metadata_address) + self.metadata = boto_utils.get_instance_metadata(self.api_ver, self.metadata_address) return True except Exception as e: print e @@ -80,11 +81,13 @@ class DataSourceEc2(DataSource.DataSource): except: return fallback - def try_to_resolve_metadata(self,addresstup): + def try_to_resolve_metadata(self, address): + log.warning("Trying %s" % address) try: - socket.getaddrinfo(addresstup[0],addresstup[1]) + socket.getaddrinfo(address.split(":")[1][2:], address.split(":")[2]) return True except Exception as e: + log.warning("%s failed with %s" % (address, e)) return False def wait_for_metadata_service(self, sleeps = None): @@ -92,61 +95,73 @@ class DataSourceEc2(DataSource.DataSource): if sleeps is None: sleeps = 30 try: - sleeps = int(mcfg.get("retries",sleeps)) + sleeps = int(mcfg.get("retries", sleeps)) except Exception as e: util.logexc(log) log.warn("Failed to get number of sleeps, using %s" % sleeps) - if sleeps == 0: return False + if sleeps == 0: + return False timeout=2 try: - timeout = int(mcfg.get("timeout",timeout)) + timeout = int(mcfg.get("timeout", timeout)) except Exception as e: util.logexc(log) log.warn("Failed to get timeout, using %s" % timeout) sleeptime = 1 - addresslist = [['169.254.169.254',80], ["instance-data",8773]] + + addresslist = ["http://169.254.169.254:80", "http://instance-data:8773"] + try: + addresslist = mcfg.get("metadata_url", addresslist) + except Exception as e: + util.logexc(log) + log.warn("Failed to get metadata URLs, using defaults") + starttime = time.time() - - # Remove addresses from the list that wont resolve. + + log.warning("Attempting to resolve metadata services") + #for addr in addresslist: + # log.warning("\t%s/meta-data/instance-id" % addr) + + # Remove addresses from the list that wont resolve. addresslist[:] = [x for x in addresslist if self.try_to_resolve_metadata(x)] - - log.warning("Checking the following for metadata service:") + + log.warning("The following metadata service addresses resolved:") for addr in addresslist: - log.warning("\thttp://%s:%i/meta-data/instance-id" % (addr[0],addr[1])) - - + log.warning("\t%s/meta-data/instance-id" % addr) + + for x in range(sleeps): + log.warning("[%02s/%s] Trying Metadata Services:" % (time.strftime("%H:%M:%S", time.gmtime()), x+1, sleeps)) for address in addresslist: - host="http://%s:%i/" % (address[0],address[1]) - url="%s%s/meta-data/instance-id" % (host,self.api_ver) - + url="%s/%s/meta-data/instance-id" % (address, self.api_ver) + # given 100 sleeps, this ends up total sleep time of 1050 sec sleeptime=int(x/5)+1 - + reason = "" try: - log.warning("Trying to access metadata service at %s" % url) + #log.warning("\t - Trying %s" % url) req = urllib2.Request(url) resp = urllib2.urlopen(req, timeout=timeout) - if resp.read() != "": - self.metadata_address = host + if resp.read() != "": + self.metadata_address = address + log.warning("\nUsing %s for metadata" % self.metadata_address) return True - log.info("Using $s for metadata" % self.metadata_address) reason = "empty data [%s]" % resp.getcode() except urllib2.HTTPError as e: reason = "http error [%s]" % e.code except urllib2.URLError as e: reason = "url error [%s]" % e.reason - + #not needed? Addresses being checked are displayed above - #if x == 0: + #if x == 0: # log.warning("waiting for metadata service at %s" % url) - log.warning(" %s [%02s/%s]: %s\n" % - (time.strftime("%H:%M:%S",time.gmtime()), x+1, sleeps, reason)) + log.warning("\t%s - Failed With : %s" % (address, reason)) + log.warning("Sleeping for %d seconds\n" % sleeptime) time.sleep(sleeptime) log.critical("giving up on md after %i seconds\n" % @@ -177,10 +192,10 @@ class DataSourceEc2(DataSource.DataSource): # when the kernel named them 'vda' or 'xvda' # we want to return the correct value for what will actually # exist in this instance - mappings = { "sd": ("vd", "xvd") } + mappings = {"sd": ("vd", "xvd")} ofound = found short = os.path.basename(found) - + if not found.startswith("/"): found="/dev/%s" % found @@ -188,11 +203,12 @@ class DataSourceEc2(DataSource.DataSource): return(found) for nfrom, tlist in mappings.items(): - if not short.startswith(nfrom): continue + if not short.startswith(nfrom): + continue for nto in tlist: cand = "/dev/%s%s" % (nto, short[len(nfrom):]) if os.path.exists(cand): - log.debug("remapped device name %s => %s" % (found,cand)) + log.debug("remapped device name %s => %s" % (found, cand)) return(cand) return ofound @@ -204,8 +220,8 @@ class DataSourceEc2(DataSource.DataSource): return True return False -datasources = [ - ( DataSourceEc2, ( DataSource.DEP_FILESYSTEM , DataSource.DEP_NETWORK ) ), +datasources = [ + (DataSourceEc2, (DataSource.DEP_FILESYSTEM, DataSource.DEP_NETWORK)), ] # return a list of data sources that match this set of dependencies diff --git a/cloudinit/boto_utils.py b/cloudinit/boto_utils.py index e60e804d..a2cb9ca6 100644 --- a/cloudinit/boto_utils.py +++ b/cloudinit/boto_utils.py @@ -60,7 +60,7 @@ def retry_url(url, retry_on_404=True): sys.stderr.write('Caught exception reading instance data, giving up\n') return '' -def get_instance_metadata(version='latest',url='http://169.254.169.254/'): +def get_instance_metadata(version='latest',url='http://169.254.169.254'): """ Returns the instance metadata as a nested Python dictionary. Simple values (e.g. local_hostname, hostname, etc.) will be @@ -68,11 +68,11 @@ def get_instance_metadata(version='latest',url='http://169.254.169.254/'): be stored in the dict as a list of string values. More complex fields such as public-keys and will be stored as nested dicts. """ - url = '%s%s/meta-data/' % (url,version) + url = '%s/%s/meta-data/' % (url,version) return _get_instance_metadata(url) -def get_instance_userdata(version='latest', sep=None,url='http://169.254.169.254/'): - url = '%s%s/user-data' % (url,version) +def get_instance_userdata(version='latest', sep=None,url='http://169.254.169.254'): + url = '%s/%s/user-data' % (url,version) user_data = retry_url(url, retry_on_404=False) if user_data: if sep: diff --git a/doc/examples/cloud-config-datasources.txt b/doc/examples/cloud-config-datasources.txt index 3333792e..a625e76d 100644 --- a/doc/examples/cloud-config-datasources.txt +++ b/doc/examples/cloud-config-datasources.txt @@ -8,3 +8,10 @@ datasource: # after each try, a sleep of int(try_number/5)+1 is done # default sleep is 30 retries : 30 + + #metadata_url: a list of URLs to check for metadata services + metadata_url: + - http://169.254.169.254:80 + - http://instance-data:8773 + + -- cgit v1.2.3 From f55bc489c4a177747948c32310869607507f4e1e Mon Sep 17 00:00:00 2001 From: keyz182 Date: Sat, 28 May 2011 00:56:47 +0100 Subject: Removed unnecessary newline --- cloudinit/DataSourceEc2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index d4b7635f..b1b02e8e 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -148,7 +148,7 @@ class DataSourceEc2(DataSource.DataSource): resp = urllib2.urlopen(req, timeout=timeout) if resp.read() != "": self.metadata_address = address - log.warning("\nUsing %s for metadata" % self.metadata_address) + log.warning("Success! Using %s for metadata" % self.metadata_address) return True reason = "empty data [%s]" % resp.getcode() except urllib2.HTTPError as e: -- cgit v1.2.3 From 0497869b736cf06ec07f2c584a0bc3292781b44e Mon Sep 17 00:00:00 2001 From: keyz182 Date: Sat, 28 May 2011 01:36:29 +0100 Subject: log.warn to log.warning removed extra args from string format --- cloudinit/DataSourceEc2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index b1b02e8e..bb0b015a 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -117,7 +117,7 @@ class DataSourceEc2(DataSource.DataSource): addresslist = mcfg.get("metadata_url", addresslist) except Exception as e: util.logexc(log) - log.warn("Failed to get metadata URLs, using defaults") + log.warning("Failed to get metadata URLs, using defaults") starttime = time.time() @@ -134,7 +134,7 @@ class DataSourceEc2(DataSource.DataSource): for x in range(sleeps): - log.warning("[%02s/%s] Trying Metadata Services:" % (time.strftime("%H:%M:%S", time.gmtime()), x+1, sleeps)) + log.warning("[%02s/%s] Trying Metadata Services:" % (x+1, sleeps)) for address in addresslist: url="%s/%s/meta-data/instance-id" % (address, self.api_ver) -- cgit v1.2.3 From f3d0fa0b4df167cbed32335eb77b7293b31e91b2 Mon Sep 17 00:00:00 2001 From: keyz182 Date: Sat, 28 May 2011 01:44:00 +0100 Subject: changed config key name --- cloudinit/DataSourceEc2.py | 2 +- doc/examples/cloud-config-datasources.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index bb0b015a..786ab78f 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -114,7 +114,7 @@ class DataSourceEc2(DataSource.DataSource): addresslist = ["http://169.254.169.254:80", "http://instance-data:8773"] try: - addresslist = mcfg.get("metadata_url", addresslist) + addresslist = mcfg.get("metadata_urls", addresslist) except Exception as e: util.logexc(log) log.warning("Failed to get metadata URLs, using defaults") diff --git a/doc/examples/cloud-config-datasources.txt b/doc/examples/cloud-config-datasources.txt index a625e76d..e04f8976 100644 --- a/doc/examples/cloud-config-datasources.txt +++ b/doc/examples/cloud-config-datasources.txt @@ -10,7 +10,7 @@ datasource: retries : 30 #metadata_url: a list of URLs to check for metadata services - metadata_url: + metadata_urls: - http://169.254.169.254:80 - http://instance-data:8773 -- cgit v1.2.3 From b7dfa8c9b75c74208f134dfd15538601fedc0258 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 1 Jun 2011 16:11:16 -0400 Subject: revert some white space changes versus trunk just to avoid unnecessary changes (and confusion in 'annotate') --- cloudinit/DataSourceEc2.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'cloudinit/DataSourceEc2.py') diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py index 786ab78f..00d882aa 100644 --- a/cloudinit/DataSourceEc2.py +++ b/cloudinit/DataSourceEc2.py @@ -28,9 +28,8 @@ import boto_utils import os.path import errno - class DataSourceEc2(DataSource.DataSource): - api_ver = '2009-04-04' + api_ver = '2009-04-04' seeddir = seeddir + '/ec2' metadata_address = "http://169.254.169.254:80/" @@ -38,13 +37,13 @@ class DataSourceEc2(DataSource.DataSource): return("DataSourceEc2") def get_data(self): - seedret={} - if util.read_optional_seed(seedret, base=self.seeddir+ "/"): + seedret={ } + if util.read_optional_seed(seedret,base=self.seeddir+ "/"): self.userdata_raw = seedret['user-data'] self.metadata = seedret['meta-data'] log.debug("using seeded ec2 data in %s" % self.seeddir) return True - + try: if not self.wait_for_metadata_service(): return False @@ -95,17 +94,16 @@ class DataSourceEc2(DataSource.DataSource): if sleeps is None: sleeps = 30 try: - sleeps = int(mcfg.get("retries", sleeps)) + sleeps = int(mcfg.get("retries",sleeps)) except Exception as e: util.logexc(log) log.warn("Failed to get number of sleeps, using %s" % sleeps) - if sleeps == 0: - return False + if sleeps == 0: return False timeout=2 try: - timeout = int(mcfg.get("timeout", timeout)) + timeout = int(mcfg.get("timeout",timeout)) except Exception as e: util.logexc(log) log.warn("Failed to get timeout, using %s" % timeout) @@ -192,10 +190,10 @@ class DataSourceEc2(DataSource.DataSource): # when the kernel named them 'vda' or 'xvda' # we want to return the correct value for what will actually # exist in this instance - mappings = {"sd": ("vd", "xvd")} + mappings = { "sd": ("vd", "xvd") } ofound = found short = os.path.basename(found) - + if not found.startswith("/"): found="/dev/%s" % found @@ -203,12 +201,11 @@ class DataSourceEc2(DataSource.DataSource): return(found) for nfrom, tlist in mappings.items(): - if not short.startswith(nfrom): - continue + if not short.startswith(nfrom): continue for nto in tlist: cand = "/dev/%s%s" % (nto, short[len(nfrom):]) if os.path.exists(cand): - log.debug("remapped device name %s => %s" % (found, cand)) + log.debug("remapped device name %s => %s" % (found,cand)) return(cand) return ofound @@ -220,8 +217,8 @@ class DataSourceEc2(DataSource.DataSource): return True return False -datasources = [ - (DataSourceEc2, (DataSource.DEP_FILESYSTEM, DataSource.DEP_NETWORK)), +datasources = [ + ( DataSourceEc2, ( DataSource.DEP_FILESYSTEM , DataSource.DEP_NETWORK ) ), ] # return a list of data sources that match this set of dependencies -- cgit v1.2.3