in cfn_clean/__init__.py [0:0]
def cfn_literal_parser(source):
"""
Sanitize the source:
* Keep json body for specific resource properties
"""
if isinstance(source, dict):
for key, value in source.items():
if key == "Type":
for item in UNCONVERTED_KEYS:
if value == item[0]:
# Checking if this resource has "Properties" and the property literal to maintain
# Better check than just try/except KeyError :-)
if source.get("Properties") and source.get("Properties", {}).get(item[1]):
if isinstance(source["Properties"][item[1]], dict) and \
not has_intrinsic_functions(source["Properties"][item[1]].keys()):
source["Properties"][item[1]] = LiteralString(u"{}".format(json.dumps(
source["Properties"][item[1]],
indent=2,
separators=(',', ': '))
))
else:
source[key] = cfn_literal_parser(value)
elif isinstance(source, list):
return [cfn_literal_parser(item) for item in source]
return source