summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_debug.py
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2014-11-21 18:10:16 -0800
committerJoshua Harlow <harlowja@yahoo-inc.com>2014-11-21 18:10:16 -0800
commitad492708076e20c20f7c8ee96b1b2250bcad7d8f (patch)
treefc8eefe5b13c31af9bc8bb42b4919e28c41886a2 /cloudinit/config/cc_debug.py
parent61882a004937d5e6d922a6cdc4d65aa5a6315ea8 (diff)
parent2d9d3811b4b1d4ea078a0bba6cf5e067339c14f3 (diff)
downloadvyos-cloud-init-ad492708076e20c20f7c8ee96b1b2250bcad7d8f.tar.gz
vyos-cloud-init-ad492708076e20c20f7c8ee96b1b2250bcad7d8f.zip
Pretty up the debug module
Previously the usage of the yaml_dumps module was causing any python unicode key and value to show up as: 'item': !!python/unicode "some string" This was not very pretty... Fix this by using safe_dumps (which is also a good thing to use and allow_unicode=True). Also create a tiny helper function in the cc_debug module that does not include the yaml start and end footers (since this module has its own footers and headers). Also includes a basic sanity test for this module.
Diffstat (limited to 'cloudinit/config/cc_debug.py')
-rw-r--r--cloudinit/config/cc_debug.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/cloudinit/config/cc_debug.py b/cloudinit/config/cc_debug.py
index a3af4500..8c489426 100644
--- a/cloudinit/config/cc_debug.py
+++ b/cloudinit/config/cc_debug.py
@@ -33,11 +33,14 @@ It can be configured with the following option structure::
Log configurations are not output.
"""
-from cloudinit import type_utils
-from cloudinit import util
import copy
from StringIO import StringIO
+from cloudinit import type_utils
+from cloudinit import util
+
+SKIP_KEYS = frozenset(['log_cfgs'])
+
def _make_header(text):
header = StringIO()
@@ -50,6 +53,11 @@ def _make_header(text):
return header.getvalue()
+def _dumps(obj):
+ text = util.yaml_dumps(obj, explicit_start=False, explicit_end=False)
+ return text.rstrip()
+
+
def handle(name, cfg, cloud, log, args):
"""Handler method activated by cloud-init."""
@@ -67,7 +75,7 @@ def handle(name, cfg, cloud, log, args):
return
# Clean out some keys that we just don't care about showing...
dump_cfg = copy.deepcopy(cfg)
- for k in ['log_cfgs']:
+ for k in SKIP_KEYS:
dump_cfg.pop(k, None)
all_keys = list(dump_cfg.keys())
for k in all_keys:
@@ -76,10 +84,10 @@ def handle(name, cfg, cloud, log, args):
# Now dump it...
to_print = StringIO()
to_print.write(_make_header("Config"))
- to_print.write(util.yaml_dumps(dump_cfg))
+ to_print.write(_dumps(dump_cfg))
to_print.write("\n")
to_print.write(_make_header("MetaData"))
- to_print.write(util.yaml_dumps(cloud.datasource.metadata))
+ to_print.write(_dumps(cloud.datasource.metadata))
to_print.write("\n")
to_print.write(_make_header("Misc"))
to_print.write("Datasource: %s\n" %