Fix regression in jinja2 include search path

Since commit 3c39bb5, the 'ansible_search_path' variable is used to set
jinja2's search path for {% include %} directives. However, this path is
the the proper one because our templates live in 'templates' subdirs in
our search path.

This is a regression because previously, our include search path would
include the dirname of the currently interpreted file, which worked most
of the time.

fixes #18526
This commit is contained in:
Virgil Dupras 2016-11-24 13:17:05 -05:00
parent b606078d69
commit c96c8532c8

View file

@ -49,6 +49,9 @@ class LookupModule(LookupBase):
# set jinja2 internal search path for includes # set jinja2 internal search path for includes
if 'ansible_search_path' in variables: if 'ansible_search_path' in variables:
searchpath = variables['ansible_search_path'] searchpath = variables['ansible_search_path']
# our search paths aren't actually the proper ones for jinja includes.
# We want to search into the 'templates' subdir of each search path.
searchpath = [os.path.join(p, 'templates') for p in searchpath]
else: else:
searchpath = [self._loader._basedir, os.path.dirname(lookupfile)] searchpath = [self._loader._basedir, os.path.dirname(lookupfile)]
self._templar.environment.loader.searchpath = searchpath self._templar.environment.loader.searchpath = searchpath