summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-08 15:09:54 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-08 15:36:02 -0400
commitc35347887bb3d452d6104b13308d853b3da44b68 (patch)
tree569d5a6d94bfbd598a645c5511818d94b384acb4 /src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
parent16b7ac3cb7f9a49e6b7985059c3d08e984cf468c (diff)
downloadbcfg2-c35347887bb3d452d6104b13308d853b3da44b68.tar.gz
bcfg2-c35347887bb3d452d6104b13308d853b3da44b68.tar.bz2
bcfg2-c35347887bb3d452d6104b13308d853b3da44b68.zip
modularized Cfg
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
new file mode 100644
index 000000000..08f01e005
--- /dev/null
+++ b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgCheetahGenerator.py
@@ -0,0 +1,33 @@
+import copy
+import logging
+import Bcfg2.Server.Plugin
+from Bcfg2.Server.Plugins.Cfg import CfgGenerator
+
+logger = logging.getLogger(__name__)
+
+try:
+ import Cheetah.Template
+ import Cheetah.Parser
+ have_cheetah = True
+except:
+ have_cheetah = False
+
+
+class CfgCheetahGenerator(CfgGenerator):
+ __extensions__ = ['cheetah']
+ settings = dict(useStackFrames=False)
+
+ def __init__(self, fname, spec, encoding):
+ CfgGenerator.__init__(self, fname, spec, encoding)
+ if not have_cheetah:
+ msg = "Cfg: Cheetah is not available: %s" % entry.get("name")
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
+
+ def get_data(self, entry, metadata):
+ template = Cheetah.Template.Template(self.data,
+ compilerSettings=self.settings)
+ template.metadata = metadata
+ template.path = entry.get('realname', entry.get('name'))
+ template.source_path = self.path
+ return template.respond()