summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-06-18 17:22:01 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2012-06-18 17:22:01 -0700
commitd2de0fbdcadd09a94ffb399e8969cc7bbcb66340 (patch)
tree98ea4355339b19ca8faccc771e89abcc2d84ea3b /cloudinit
parentd42536f0c8a0e7eb84248c7f4f3264c317a9a04d (diff)
downloadvyos-cloud-init-d2de0fbdcadd09a94ffb399e8969cc7bbcb66340.tar.gz
vyos-cloud-init-d2de0fbdcadd09a94ffb399e8969cc7bbcb66340.zip
1. Decreasing of logging in piping routing
2. Fixup of merge dict after found out that it depends on the src return for non dict types 3. Only merge kernel config if there was any kernel config
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/util.py34
1 files changed, 14 insertions, 20 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py
index b6fa959b..aaeaa5fc 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -275,15 +275,20 @@ def is_ipv4(instr):
def merge_base_cfg(cfgfile, cfg_builtin=None):
syscfg = read_conf_with_confd(cfgfile)
-
+
kern_contents = read_cc_from_cmdline()
kerncfg = {}
if kern_contents:
kerncfg = load_yaml(kern_contents, default={})
- # kernel parameters override system config
- combined = mergedict(kerncfg, syscfg)
+ # Kernel parameters override system config
+ if kerncfg:
+ combined = mergedict(kerncfg, syscfg)
+ else:
+ combined = syscfg
+
if cfg_builtin:
+ # Combined over-ride anything builtin
fin = mergedict(combined, cfg_builtin)
else:
fin = combined
@@ -450,18 +455,11 @@ def mergedict(src, cand):
Nested dictionaries are merged recursively.
"""
if isinstance(src, dict) and isinstance(cand, dict):
- for k, v in cand.iteritems():
+ for (k, v) in cand.iteritems():
if k not in src:
src[k] = v
else:
src[k] = mergedict(src[k], v)
- else:
- if not isinstance(src, dict):
- raise TypeError(("Attempting to merge a non dictionary "
- "source type: %s") % (obj_name(src)))
- if not isinstance(cand, dict):
- raise TypeError(("Attempting to merge a non dictionary "
- "candidate type: %s") % (obj_name(cand)))
return src
@@ -616,7 +614,7 @@ def read_conf_d(confd):
# remove anything not ending in '.cfg'
confs = [f for f in confs if f.endswith(".cfg")]
-
+
# remove anything not a file
confs = [f for f in confs if os.path.isfile(os.path.join(confd, f))]
@@ -646,7 +644,8 @@ def read_conf_with_confd(cfgfile):
if not confd or not os.path.isdir(confd):
return cfg
- return mergedict(read_conf_d(confd), cfg)
+ cfg = mergedict(read_conf_d(confd), cfg)
+ return cfg
def read_cc_from_cmdline(cmdline=None):
@@ -752,13 +751,10 @@ def get_fqdn_from_hosts(hostname, filename="/etc/hosts"):
return fqdn
-def get_cmdline_url(names=None, starts=None, cmdline=None):
+def get_cmdline_url(names=('cloud-config-url', 'url'),
+ starts="#cloud-config", cmdline=None):
if cmdline is None:
cmdline = get_cmdline()
- if not names:
- names = ('cloud-config-url', 'url')
- if not starts:
- starts = "#cloud-config"
data = keyval_str_to_dict(cmdline)
url = None
@@ -895,8 +891,6 @@ def get_cmdline():
def pipe_in_out(in_fh, out_fh, chunk_size=1024, chunk_cb=None):
bytes_piped = 0
- LOG.debug(("Transferring the contents of %s "
- "to %s in chunks of size %sb"), in_fh, out_fh, chunk_size)
while True:
data = in_fh.read(chunk_size)
if data == '':