Beispiel #1
0
class Template(object):

    def __init__(self, root_dir, ops_config):
        loader = ChoiceLoader([
            FileSystemLoader(root_dir),
            FileSystemLoader("/")
        ])

        mode = ops_config.get('jinja2.undefined')
        undefined = Undefined
        if mode == 'StrictUndefined':
            undefined = StrictUndefined
        elif mode == 'DebugUndefined':
            undefined = DebugUndefined

        self.env = Environment(loader=loader, undefined=undefined)

        self.filter_plugin_loader = PluginLoader(
                'FilterModule',
                'ansible.plugins.filter',
                ops_config.ansible_filter_plugins.split(':'),
                'filter_plugins'
        )

        for filter in self.filter_plugin_loader.all():
            self.env.filters.update(filter.filters())

    def render(self, source, vars):
        jinja_template = self.env.get_template(source)

        return jinja_template.render(**vars)