summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/TemplateHelper.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Server/Plugins/TemplateHelper.py')
-rw-r--r--src/lib/Server/Plugins/TemplateHelper.py83
1 files changed, 0 insertions, 83 deletions
diff --git a/src/lib/Server/Plugins/TemplateHelper.py b/src/lib/Server/Plugins/TemplateHelper.py
deleted file mode 100644
index 42eafed56..000000000
--- a/src/lib/Server/Plugins/TemplateHelper.py
+++ /dev/null
@@ -1,83 +0,0 @@
-import re
-import imp
-import sys
-import logging
-import Bcfg2.Server.Plugin
-
-logger = logging.getLogger(__name__)
-
-class HelperModule(Bcfg2.Server.Plugin.SpecificData):
- _module_name_re = re.compile(r'([^/]+?)\.py')
-
- def __init__(self, name, specific, encoding):
- Bcfg2.Server.Plugin.SpecificData.__init__(self, name, specific,
- encoding)
- match = self._module_name_re.search(self.name)
- if match:
- self._module_name = match.group(1)
- else:
- self._module_name = name
- self._attrs = []
-
- def handle_event(self, event):
- Bcfg2.Server.Plugin.SpecificData.handle_event(self, event)
- try:
- module = imp.load_source(self._module_name, self.name)
- except:
- err = sys.exc_info()[1]
- logger.error("TemplateHelper: Failed to import %s: %s" %
- (self.name, err))
- return
-
- if not hasattr(module, "__export__"):
- logger.error("TemplateHelper: %s has no __export__ list" %
- self.name)
- return
-
- for sym in module.__export__:
- if sym not in self._attrs and hasattr(self, sym):
- logger.warning("TemplateHelper: %s: %s is a reserved keyword, "
- "skipping export" % (self.name, sym))
- setattr(self, sym, getattr(module, sym))
- # remove old exports
- for sym in set(self._attrs) - set(module.__export__):
- delattr(self, sym)
-
- self._attrs = module.__export__
-
-
-class HelperSet(Bcfg2.Server.Plugin.EntrySet):
- ignore = re.compile("^(\.#.*|.*~|\\..*\\.(sw[px])|.*\.py[co])$")
-
- def __init__(self, path, fam, encoding, plugin_name):
- fpattern = '[0-9A-Za-z_\-]+\.py'
- self.plugin_name = plugin_name
- Bcfg2.Server.Plugin.EntrySet.__init__(self, fpattern, path,
- HelperModule, encoding)
- fam.AddMonitor(path, self)
-
- def HandleEvent(self, event):
- if (event.filename != self.path and
- not self.ignore.match(event.filename)):
- return self.handle_event(event)
-
-
-class TemplateHelper(Bcfg2.Server.Plugin.Plugin,
- Bcfg2.Server.Plugin.Connector):
- """ A plugin to provide helper classes and functions to templates """
- name = 'TemplateHelper'
- __author__ = 'chris.a.st.pierre@gmail.com'
-
- def __init__(self, core, datastore):
- Bcfg2.Server.Plugin.Plugin.__init__(self, core, datastore)
- Bcfg2.Server.Plugin.Connector.__init__(self)
-
- try:
- self.helpers = HelperSet(self.data, core.fam, core.encoding,
- self.name)
- except:
- raise Bcfg2.Server.Plugin.PluginInitError
-
- def get_additional_data(self, metadata):
- return dict([(h._module_name, h)
- for h in list(self.helpers.entries.values())])