mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Remove custom json encoder cleaner and strip proxy var stuff out before encoding
Fixes #12349
This commit is contained in:
parent
a431121f9f
commit
cc6627cdd6
2 changed files with 15 additions and 14 deletions
|
@ -35,7 +35,7 @@ from ansible.playbook.task import Task
|
|||
from ansible.template import Templar
|
||||
from ansible.utils.listify import listify_lookup_plugin_terms
|
||||
from ansible.utils.unicode import to_unicode
|
||||
from ansible.utils.vars import json_variable_cleaner
|
||||
from ansible.vars.unsafe_proxy import UnsafeProxy
|
||||
|
||||
from ansible.utils.debug import debug
|
||||
|
||||
|
@ -124,10 +124,21 @@ class TaskExecutor:
|
|||
if 'changed' not in res:
|
||||
res['changed'] = False
|
||||
|
||||
def _clean_res(res):
|
||||
if isinstance(res, dict):
|
||||
for k in res.keys():
|
||||
res[k] = _clean_res(res[k])
|
||||
elif isinstance(res, list):
|
||||
for idx,item in enumerate(res):
|
||||
res[idx] = _clean_res(item)
|
||||
elif isinstance(res, UnsafeProxy):
|
||||
return res._obj
|
||||
return res
|
||||
|
||||
debug("dumping result to json")
|
||||
result = json.dumps(res, default=json_variable_cleaner)
|
||||
res = _clean_res(res)
|
||||
debug("done dumping result, returning")
|
||||
return result
|
||||
return res
|
||||
except AnsibleError as e:
|
||||
return dict(failed=True, msg=to_unicode(e, nonstring='simplerepr'))
|
||||
finally:
|
||||
|
|
|
@ -20,6 +20,7 @@ from __future__ import (absolute_import, division, print_function)
|
|||
__metaclass__ = type
|
||||
|
||||
import ast
|
||||
from json import JSONEncoder
|
||||
from collections import MutableMapping
|
||||
|
||||
from six import iteritems, string_types
|
||||
|
@ -128,14 +129,3 @@ def isidentifier(ident):
|
|||
|
||||
return True
|
||||
|
||||
def json_variable_cleaner(obj):
|
||||
'''
|
||||
Used as the default= parameter to json.dumps(), this method helps
|
||||
clear out UnsafeProxy variables so they can be properly JSON encoded
|
||||
'''
|
||||
from ansible.vars.unsafe_proxy import UnsafeProxy
|
||||
if isinstance(obj, UnsafeProxy):
|
||||
return obj._obj
|
||||
else:
|
||||
return obj
|
||||
|
||||
|
|
Loading…
Reference in a new issue