diff options
author | Scott Moser <smoser@ubuntu.com> | 2012-07-12 15:43:35 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-07-12 15:43:35 -0400 |
commit | 265f2c74bb7202c2641b387b5a09c92bbe6563c8 (patch) | |
tree | c1805a6de271b95e3e76bb7f709aacba1f15c58c | |
parent | 5e296811619c7e814f61c8671cd596fe4203a38a (diff) | |
download | vyos-cloud-init-265f2c74bb7202c2641b387b5a09c92bbe6563c8.tar.gz vyos-cloud-init-265f2c74bb7202c2641b387b5a09c92bbe6563c8.zip |
load_yaml: if conversion fails, but string is empty, return default
the problem sovled here is that most callers of yaml_load do not pass
'None' as a allowed type. I didn't want to change all the callers.
If the yaml.safe_load ended up being None we were raising a TypeError
and that was getting logged (meaning output to console). Even though
the this was not really bad.
So, if the type is not in the list, *and* it is not empty, then log
exception. If it in the list and empty, just debug.
empty input was occurring when cloud-config was empty (no user-data)
-rw-r--r-- | cloudinit/util.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cloudinit/util.py b/cloudinit/util.py index eb0b088a..23b67d48 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -609,7 +609,10 @@ def load_yaml(blob, default=None, allowed=(dict,)): (allowed, obj_name(converted))) loaded = converted except (yaml.YAMLError, TypeError, ValueError): - logexc(LOG, "Failed loading yaml blob") + if len(blob) == 0: + LOG.debug("load_yaml given empty string, returning default") + else: + logexc(LOG, "Failed loading yaml blob") return loaded |