net_template.py: Fix jinja2 template file search path (#15134)
The change is needed to support the multiple include statements inside the jinja2 template file, as in '{% include ['another.j2'] %}'. statement. I need this capability, as OpenSwitch `switch` role needs to handle multiple *.j2 files and supporting the include statement inside jinja2 file is essential, otherwise I need to combine multiple template files into a single file, which easily causes conflicts between developers working on different parts of the teamplate, ports and interface.
This commit is contained in:
parent
af5195e336
commit
956829f0f0
1 changed files with 11 additions and 0 deletions
|
@ -93,6 +93,17 @@ class ActionModule(ActionBase):
|
||||||
except IOError:
|
except IOError:
|
||||||
return dict(failed=True, msg='unable to load src file')
|
return dict(failed=True, msg='unable to load src file')
|
||||||
|
|
||||||
|
# Create a template search path in the following order:
|
||||||
|
# [working_path, self_role_path, dependent_role_paths, dirname(source)]
|
||||||
|
searchpath = [working_path]
|
||||||
|
if self._task._role is not None:
|
||||||
|
searchpath.append(self._task._role._role_path)
|
||||||
|
dep_chain = self._task._block.get_dep_chain()
|
||||||
|
if dep_chain is not None:
|
||||||
|
for role in dep_chain:
|
||||||
|
searchpath.append(role._role_path)
|
||||||
|
searchpath.append(os.path.dirname(source))
|
||||||
|
self._templar.environment.loader.searchpath = searchpath
|
||||||
self._task.args['src'] = self._templar.template(template_data)
|
self._task.args['src'] = self._templar.template(template_data)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue