more complete and informative errors

mostly templating issues now all return data templated and actual error
fixes #14781
This commit is contained in:
Brian Coca 2016-03-03 13:52:09 -05:00
parent 0031a72e0d
commit 4cfd042839

View file

@ -40,7 +40,7 @@ from ansible.template.safe_eval import safe_eval
from ansible.template.template import AnsibleJ2Template from ansible.template.template import AnsibleJ2Template
from ansible.template.vars import AnsibleJ2Vars from ansible.template.vars import AnsibleJ2Vars
from ansible.utils.debug import debug from ansible.utils.debug import debug
from ansible.utils.unicode import to_unicode from ansible.utils.unicode import to_unicode, to_str
try: try:
from hashlib import sha1 from hashlib import sha1
@ -473,10 +473,10 @@ class Templar:
try: try:
t = myenv.from_string(data) t = myenv.from_string(data)
except TemplateSyntaxError as e: except TemplateSyntaxError as e:
raise AnsibleError("template error while templating string: %s. String: %s" % (str(e), data)) raise AnsibleError("template error while templating string: %s. String: %s" % (to_str(e), to_str(data)))
except Exception as e: except Exception as e:
if 'recursion' in str(e): if 'recursion' in to_str(e):
raise AnsibleError("recursive loop detected in template string: %s" % data) raise AnsibleError("recursive loop detected in template string: %s" % to_str(data))
else: else:
return data return data
@ -492,13 +492,12 @@ class Templar:
res = j2_concat(rf) res = j2_concat(rf)
except TypeError as te: except TypeError as te:
if 'StrictUndefined' in str(te): if 'StrictUndefined' in str(te):
raise AnsibleUndefinedVariable( errmsg = "Unable to look up a name or access an attribute in template string (%s).\n" % to_str(data)
"Unable to look up a name or access an attribute in template string. " + \ errmsg += "Make sure your variable name does not contain invalid characters like '-': %s" % to_str(te)
"Make sure your variable name does not contain invalid characters like '-'." raise AnsibleUndefinedVariable(errmsg)
)
else: else:
debug("failing because of a type error, template data is: %s" % data) debug("failing because of a type error, template data is: %s" % to_str(data))
raise AnsibleError("an unexpected type error occurred. Error was %s" % te) raise AnsibleError("Unexpected templating type error occurred on (%s): %s" % (to_str(data),to_str(te)))
if preserve_trailing_newlines: if preserve_trailing_newlines:
# The low level calls above do not preserve the newline # The low level calls above do not preserve the newline