Support a whitelisted subset of jinja2 template options

pull/8026/head
Henry Finucane 11 years ago
parent 746f52c5aa
commit de64bbdc5f

@ -80,6 +80,8 @@ class Flags:
FILTER_PLUGINS = None
_LISTRE = re.compile(r"(\w+)\[(\d+)\]")
JINJA2_OVERRIDE = '#jinja2:'
JINJA2_ALLOWED_OVERRIDES = ['trim_blocks', 'lstrip_blocks', 'newline_sequence', 'keep_trailing_newline']
def lookup(name, *args, **kwargs):
from ansible import utils
@ -230,6 +232,18 @@ def template_from_file(basedir, path, vars, vault_password=None):
except:
raise errors.AnsibleError("unable to read %s" % realpath)
# Get jinja env overrides from template
if data.startswith(JINJA2_OVERRIDE):
eol = data.find('\n')
line = data[len(JINJA2_OVERRIDE):eol]
data = data[eol+1:]
for pair in line.split(','):
(key,val) = pair.split(':')
key = key.strip()
if key in JINJA2_ALLOWED_OVERRIDES:
setattr(environment, key, ast.literal_eval(val.strip()))
environment.template_class = J2Template
try:
t = environment.from_string(data)

Loading…
Cancel
Save