Throw a more user-friendly exception during template rendering process.

This commit is contained in:
Tomaz Muraus 2013-10-16 16:48:17 +02:00
parent 807e602228
commit 922f61899e

View file

@ -20,6 +20,7 @@ import re
import codecs
import jinja2
from jinja2.runtime import StrictUndefined
from jinja2.exceptions import TemplateSyntaxError
import yaml
import json
from ansible import errors
@ -448,7 +449,15 @@ def template_from_file(basedir, path, vars):
setattr(environment,key.strip(),ast.literal_eval(val.strip()))
environment.template_class = J2Template
t = environment.from_string(data)
try:
t = environment.from_string(data)
except TemplateSyntaxError, e:
# Throw an exception which includes a more user friendly error message
values = {'name': realpath, 'lineno': e.lineno, 'error': str(e)}
msg = 'file: %(name)s, line number: %(lineno)s, error: %(error)s' % \
values
error = errors.AnsibleError(msg)
raise error
vars = vars.copy()
try:
template_uid = pwd.getpwuid(os.stat(realpath).st_uid).pw_name