summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
index 476dc1fc6..84309b5dd 100644
--- a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
+++ b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
@@ -3,7 +3,8 @@
:ref:`server-plugins-generators-cfg` files. """
import Bcfg2.Options
-from Bcfg2.Server.Plugin import PluginExecutionError
+from Bcfg2.Server.Plugin import PluginExecutionError, \
+ DefaultTemplateDataProvider, get_template_data
from Bcfg2.Server.Plugins.Cfg import CfgGenerator
try:
@@ -13,6 +14,18 @@ except ImportError:
HAS_CHEETAH = False
+class DefaultCheetahDataProvider(DefaultTemplateDataProvider):
+ """ Template data provider for Cheetah templates. Cheetah 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 CfgCheetahGenerator(CfgGenerator):
""" The CfgCheetahGenerator allows you to use the `Cheetah
<http://www.cheetahtemplate.org/>`_ templating system to generate
@@ -37,10 +50,9 @@ class CfgCheetahGenerator(CfgGenerator):
def get_data(self, entry, metadata):
template = Template(self.data.decode(Bcfg2.Options.setup.encoding),
compilerSettings=self.settings)
- template.metadata = metadata
- template.name = entry.get('realname', entry.get('name'))
- template.path = entry.get('realname', entry.get('name'))
- template.source_path = self.name
- template.repo = Bcfg2.Options.setup.repository
+ for key, val in get_template_data(
+ entry, metadata, self.name,
+ default=DefaultCheetahDataProvider()).items():
+ setattr(template, key, val)
return template.respond()
get_data.__doc__ = CfgGenerator.get_data.__doc__