summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2011-02-18 23:29:46 -0500
committerScott Moser <smoser@ubuntu.com>2011-02-18 23:29:46 -0500
commit8ff88d588b621fac74ffb7a798cfd54cf74729ed (patch)
tree8d267c74dbd90f80d413119e3853b50a460014a6
parentbd6994b299b20c28ec4221dc732cdb3f1480d58d (diff)
downloadvyos-cloud-init-8ff88d588b621fac74ffb7a798cfd54cf74729ed.tar.gz
vyos-cloud-init-8ff88d588b621fac74ffb7a798cfd54cf74729ed.zip
handle no datasource better cloud-init-cfg
previously, cloud-init-cfg would call CloudConfig with no cloud specified. Then, CloudConfig would get a new cloudinit instance and specify no ds_deps (which means network and local). If no cache was found, it would wait again for the Ec2 metadata service (even if it wasn't supposed to). Now, we get the cloud instance in the main program and attempt to get the data source, but only from [], which will get only cached. Then, if its not found, exit silently.
-rwxr-xr-xcloud-init-cfg.py9
-rw-r--r--cloudinit/CloudConfig/__init__.py6
2 files changed, 11 insertions, 4 deletions
diff --git a/cloud-init-cfg.py b/cloud-init-cfg.py
index 49ddf302..0905eb5e 100755
--- a/cloud-init-cfg.py
+++ b/cloud-init-cfg.py
@@ -60,7 +60,14 @@ def main():
if os.environ.has_key(cfg_env_name):
cfg_path = os.environ[cfg_env_name]
- cc = CC.CloudConfig(cfg_path)
+ cloud = cloudinit.CloudInit(ds_deps=[]) # ds_deps=[], get only cached
+ try:
+ cloud.get_data_source()
+ except cloudinit.DataSourceNotFoundException as e:
+ # there was no datasource found, theres nothing to do
+ sys.exit(0)
+
+ cc = CC.CloudConfig(cfg_path,cloud)
try:
(outfmt, errfmt) = CC.get_output_cfg(cc.cfg,modename)
diff --git a/cloudinit/CloudConfig/__init__.py b/cloudinit/CloudConfig/__init__.py
index 0962c238..91853dfd 100644
--- a/cloudinit/CloudConfig/__init__.py
+++ b/cloudinit/CloudConfig/__init__.py
@@ -33,13 +33,13 @@ class CloudConfig():
cfgfile = None
cfg = None
- def __init__(self,cfgfile, cloud=None):
+ def __init__(self,cfgfile, cloud=None, ds_deps=[]):
if cloud == None:
- self.cloud = cloudinit.CloudInit()
+ self.cloud = cloudinit.CloudInit(ds_deps)
+ self.cloud.get_data_source()
else:
self.cloud = cloud
self.cfg = self.get_config_obj(cfgfile)
- self.cloud.get_data_source()
def get_config_obj(self,cfgfile):
try: