diff options
author | Gordon Messmer <gordon@dragonsdawn.net> | 2014-09-11 14:02:09 -0700 |
---|---|---|
committer | Gordon Messmer <gordon@dragonsdawn.net> | 2014-09-11 14:02:09 -0700 |
commit | 4cc4989ee2227e7527c639186dac3f0f0b2710fd (patch) | |
tree | 76a8caf735cfa674f9767c8dea540f341997d3f3 /src/lib/Bcfg2/Server | |
parent | 4462816a4a2c26ef7fc94f51b6485feb1ab44c27 (diff) | |
download | bcfg2-4cc4989ee2227e7527c639186dac3f0f0b2710fd.tar.gz bcfg2-4cc4989ee2227e7527c639186dac3f0f0b2710fd.tar.bz2 bcfg2-4cc4989ee2227e7527c639186dac3f0f0b2710fd.zip |
Update CfgJinja2Generator.py to more closely match git master code.
The first version matched Bcfg2-1.3.4.
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py index aaf9f4fc0..e36ee78aa 100644 --- a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py +++ b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py @@ -2,8 +2,10 @@ <http://jinja.pocoo.org/>`_ templating system to generate :ref:`server-plugins-generators-cfg` files. """ -from Bcfg2.Server.Plugin import PluginExecutionError -from Bcfg2.Server.Plugins.Cfg import CfgGenerator, SETUP +import Bcfg2.Options +from Bcfg2.Server.Plugin import PluginExecutionError, \ + DefaultTemplateDataProvider, get_template_data +from Bcfg2.Server.Plugins.Cfg import CfgGenerator try: from jinja2 import Template @@ -12,6 +14,18 @@ except ImportError: HAS_JINJA2 = False +class DefaultJinja2DataProvider(DefaultTemplateDataProvider): + """ Template data provider for Jinja2 templates. Jinja2 and + Genshi currently differ over the value of the ``path`` variable, + which is why this is necessary. """ + + def get_template_data(self, entry, metadata, template): + rv = DefaultTemplateDataProvider.get_template_data(self, entry, + metadata, template) + rv['path'] = rv['name'] + return rv + + class CfgJinja2Generator(CfgGenerator): """ The CfgJinja2Generator allows you to use the `Jinja2 <http://jinja.pocoo.org/>`_ templating system to generate @@ -24,15 +38,15 @@ class CfgJinja2Generator(CfgGenerator): #: .crypt.jinja2 files __priority__ = 50 - def __init__(self, fname, spec, encoding): - CfgGenerator.__init__(self, fname, spec, encoding) + def __init__(self, fname, spec): + CfgGenerator.__init__(self, fname, spec) if not HAS_JINJA2: raise PluginExecutionError("Jinja2 is not available") __init__.__doc__ = CfgGenerator.__init__.__doc__ def get_data(self, entry, metadata): - template = Template(self.data.decode(self.encoding)) - name = entry.get('realname', entry.get('name')) - return template.render(metadata=metadata, name=name, path=name, - source_path=name, repo=SETUP['repo']) + template = Template(self.data.decode(Bcfg2.Options.setup.encoding)) + return template.render( + get_template_data(entry, metadata, self.name, + default=DefaultJinja2DataProvider())) get_data.__doc__ = CfgGenerator.get_data.__doc__ |