mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Make dynamic inventory return byte str, not unicode
This commit is contained in:
parent
32309e37ce
commit
cef2a8795f
2 changed files with 22 additions and 1 deletions
|
@ -26,6 +26,7 @@ from ansible import utils
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
class InventoryScript(object):
|
class InventoryScript(object):
|
||||||
''' Host inventory parser for ansible using external inventory scripts. '''
|
''' Host inventory parser for ansible using external inventory scripts. '''
|
||||||
|
|
||||||
|
@ -53,6 +54,7 @@ class InventoryScript(object):
|
||||||
|
|
||||||
# not passing from_remote because data from CMDB is trusted
|
# not passing from_remote because data from CMDB is trusted
|
||||||
self.raw = utils.parse_json(self.data)
|
self.raw = utils.parse_json(self.data)
|
||||||
|
self.raw = utils.json_dict_unicode_to_bytes(self.raw)
|
||||||
|
|
||||||
all = Group('all')
|
all = Group('all')
|
||||||
groups = dict(all=all)
|
groups = dict(all=all)
|
||||||
|
@ -141,7 +143,7 @@ class InventoryScript(object):
|
||||||
if out.strip() == '':
|
if out.strip() == '':
|
||||||
return dict()
|
return dict()
|
||||||
try:
|
try:
|
||||||
return utils.parse_json(out)
|
return utils.json_dict_unicode_to_bytes(utils.parse_json(out))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise errors.AnsibleError("could not parse post variable response: %s, %s" % (cmd, out))
|
raise errors.AnsibleError("could not parse post variable response: %s, %s" % (cmd, out))
|
||||||
|
|
||||||
|
|
|
@ -1215,6 +1215,25 @@ def to_unicode(value):
|
||||||
return value
|
return value
|
||||||
return value.decode("utf-8")
|
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):
|
def get_diff(diff):
|
||||||
# called by --diff usage in playbook and runner via callbacks
|
# called by --diff usage in playbook and runner via callbacks
|
||||||
# include names in diffs 'before' and 'after' and do diff -U 10
|
# include names in diffs 'before' and 'after' and do diff -U 10
|
||||||
|
|
Loading…
Reference in a new issue