summaryrefslogtreecommitdiff
path: root/cloud-init.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloud-init.py')
-rwxr-xr-xcloud-init.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/cloud-init.py b/cloud-init.py
index 92d8a091..0902d966 100755
--- a/cloud-init.py
+++ b/cloud-init.py
@@ -23,6 +23,7 @@ import sys
import cloudinit
import cloudinit.util as util
import cloudinit.CloudConfig as CC
+import cloudinit.DataSource as ds
import time
import logging
import errno
@@ -32,10 +33,19 @@ def warn(wstr):
def main():
cmds = ( "start", "start-local" )
+ deps = { "start" : ( ds.DEP_FILESYSTEM, ds.DEP_NETWORK ),
+ "start-local" : ( ds.DEP_FILESYSTEM, ) }
+
cmd = ""
if len(sys.argv) > 1:
cmd = sys.argv[1]
+ cfg_path = None
+ if len(sys.argv) > 2:
+ # this is really for debugging only
+ # but you can invoke on development system with ./config/cloud.cfg
+ cfg_path = sys.argv[2]
+
if not cmd in cmds:
sys.stderr.write("bad command %s. use one of %s\n" % (cmd, cmds))
sys.exit(1)
@@ -49,12 +59,17 @@ def main():
warn("unable to open /proc/uptime\n")
uptime = "na"
- source_type = "all"
- if cmd == "start-local":
- source_type = "local"
+ try:
+ cfg = cloudinit.get_base_cfg(cfg_path)
+ except Exception as e:
+ warn("Failed to get base config. falling back to builtin: %s\n" % e)
+ try:
+ cfg = cloudinit.get_builtin_cfg()
+ except Exception as e:
+ warn("Unable to load builtin config\n")
+ raise
try:
- cfg = cloudinit.get_base_cfg()
(outfmt, errfmt) = CC.get_output_cfg(cfg,"init")
CC.redirect_output(outfmt, errfmt)
except Exception as e:
@@ -80,7 +95,7 @@ def main():
if cmd == "start-local":
cloudinit.purge_cache()
- cloud = cloudinit.CloudInit(source_type=source_type)
+ cloud = cloudinit.CloudInit(ds_deps=deps[cmd])
try:
cloud.get_data_source()