summaryrefslogtreecommitdiff
path: root/cloudinit/DataSourceEc2.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2011-01-26 18:43:50 +0000
committerScott Moser <smoser@ubuntu.com>2011-01-26 18:43:50 +0000
commitdc5e7116e663d3b5cad165fcac8b3141f8ffbc05 (patch)
treeb180b671e54b4fb8975b6ba2032c53d4228b39b7 /cloudinit/DataSourceEc2.py
parent95d6fa02204799b4ea120faf3c75e216194fdd38 (diff)
downloadvyos-cloud-init-dc5e7116e663d3b5cad165fcac8b3141f8ffbc05.tar.gz
vyos-cloud-init-dc5e7116e663d3b5cad165fcac8b3141f8ffbc05.zip
rework of DataSource loading.
The DataSources that are loaded are now controlled entirely via configuration file of 'datasource_list', like: datasource_list: [ "NoCloud", "OVF", "Ec2" ] Each item in that list is a "DataSourceCollection". for each item in the list, cloudinit will attempt to load: cloudinit.DataSource<item> and, failing that, DataSource<item> The module is required to have a method named 'get_datasource_list' in it that takes a single list of "dependencies" and returns a list of python classes inside the collection that can run needing only those dependencies. The dependencies are defines in DataSource.py. Currently: DEP_FILESYSTEM = "FILESYSTEM" DEP_NETWORK = "NETWORK" When 'get_datasource_list' is called for the DataSourceOVF module with [DEP_FILESYSTEM], then DataSourceOVF returns a single item list with a reference to the 'DataSourceOVF' class. When 'get_datasource_list' is called for the DataSourceOVF module with [DEP_FILESYSTEM, DEP_NETWORK], it will return a single item list with a reference to 'DataSourceOVFNet'. cloudinit will then instanciate the class and call its 'get_data' method. if the get_data method returns 'True', then it selects this class as the selected Datasource.
Diffstat (limited to 'cloudinit/DataSourceEc2.py')
-rw-r--r--cloudinit/DataSourceEc2.py27
1 files changed, 16 insertions, 11 deletions
diff --git a/cloudinit/DataSourceEc2.py b/cloudinit/DataSourceEc2.py
index 8ecb28ad..183c57b8 100644
--- a/cloudinit/DataSourceEc2.py
+++ b/cloudinit/DataSourceEc2.py
@@ -18,7 +18,7 @@
import DataSource
-import cloudinit
+from cloudinit import seeddir
import cloudinit.util as util
import socket
import urllib2
@@ -30,10 +30,7 @@ import errno
class DataSourceEc2(DataSource.DataSource):
api_ver = '2009-04-04'
- seeddir = cloudinit.seeddir + '/ec2'
-
- def __init__(self):
- pass
+ seeddir = seeddir + '/ec2'
def __str__(self):
return("DataSourceEc2")
@@ -43,7 +40,7 @@ class DataSourceEc2(DataSource.DataSource):
if util.read_optional_seed(seedret,base=self.seeddir+ "/"):
self.userdata_raw = seedret['user-data']
self.metadata = seedret['meta-data']
- cloudinit.log.debug("using seeded ec2 data in %s" % self.seeddir)
+ self.log.debug("using seeded ec2 data in %s" % self.seeddir)
return True
try:
@@ -105,13 +102,13 @@ class DataSourceEc2(DataSource.DataSource):
reason = "url error [%s]" % e.reason
if x == 0:
- cloudinit.log.warning("waiting for metadata service at %s\n" % url)
+ self.log.warning("waiting for metadata service at %s\n" % url)
- cloudinit.log.warning(" %s [%02s/%s]: %s\n" %
+ self.log.warning(" %s [%02s/%s]: %s\n" %
(time.strftime("%H:%M:%S",time.gmtime()), x+1, sleeps, reason))
time.sleep(sleeptime)
- cloudinit.log.critical("giving up on md after %i seconds\n" %
+ self.log.critical("giving up on md after %i seconds\n" %
int(time.time()-starttime))
return False
@@ -131,7 +128,7 @@ class DataSourceEc2(DataSource.DataSource):
if entname == "ephemeral" and name == "ephemeral0":
found = device
if found == None:
- cloudinit.log.warn("unable to convert %s to a device" % name)
+ self.log.warn("unable to convert %s to a device" % name)
return None
# LP: #611137
@@ -154,7 +151,7 @@ class DataSourceEc2(DataSource.DataSource):
for nto in tlist:
cand = "/dev/%s%s" % (nto, short[len(nfrom):])
if os.path.exists(cand):
- cloudinit.log.debug("remapped device name %s => %s" % (found,cand))
+ self.log.debug("remapped device name %s => %s" % (found,cand))
return(cand)
return ofound
@@ -165,3 +162,11 @@ class DataSourceEc2(DataSource.DataSource):
(p4 not in self.metadata or self.metadata[p4] == "")):
return True
return False
+
+datasources = [
+ ( DataSourceEc2, ( DataSource.DEP_FILESYSTEM , DataSource.DEP_NETWORK ) ),
+]
+
+# return a list of data sources that match this set of dependencies
+def get_datasource_list(depends):
+ return(DataSource.list_from_depends(depends, datasources))