diff options
author | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-06-18 17:22:01 -0700 |
---|---|---|
committer | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-06-18 17:22:01 -0700 |
commit | d2de0fbdcadd09a94ffb399e8969cc7bbcb66340 (patch) | |
tree | 98ea4355339b19ca8faccc771e89abcc2d84ea3b /cloudinit | |
parent | d42536f0c8a0e7eb84248c7f4f3264c317a9a04d (diff) | |
download | vyos-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.py | 34 |
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 == '': |