summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins
diff options
context:
space:
mode:
authorGordon Messmer <gordon@dragonsdawn.net>2014-09-11 14:02:09 -0700
committerGordon Messmer <gordon@dragonsdawn.net>2014-09-11 14:02:09 -0700
commit4cc4989ee2227e7527c639186dac3f0f0b2710fd (patch)
tree76a8caf735cfa674f9767c8dea540f341997d3f3 /src/lib/Bcfg2/Server/Plugins
parent4462816a4a2c26ef7fc94f51b6485feb1ab44c27 (diff)
downloadbcfg2-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/Plugins')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py30
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__