Make dynamic inventory return byte str, not unicode

This commit is contained in:
Toshio Kuratomi 2014-10-02 20:26:09 -04:00
commit cef2a8795f
2 changed files with 22 additions and 1 deletions

View file

@ -1215,6 +1215,25 @@ def to_unicode(value):
return value
return value.decode("utf-8")
def json_dict_unicode_to_bytes(d):
''' Recursively convert dict keys and values to byte str
Specialized for json return because this only handles, lists, tuples,
and dict container types (the containers that the json module returns)
'''
if isinstance(d, unicode):
return d.encode('utf-8')
elif isinstance(d, dict):
return dict(map(json_dict_unicode_to_bytes, d.iteritems()))
elif isinstance(d, list):
return list(map(json_dict_unicode_to_bytes, d))
elif isinstance(d, tuple):
return tuple(map(json_dict_unicode_to_bytes, d))
else:
return d
def get_diff(diff):
# called by --diff usage in playbook and runner via callbacks
# include names in diffs 'before' and 'after' and do diff -U 10