summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2015-10-05 13:19:59 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2015-10-05 13:19:59 -0500
commit470723f1c9eabbeec63bba154e6d5c6dc75153ac (patch)
tree63c1e4b6b6a3e7b589bb4380d4a1bd073d94b519 /src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
parent35a2ad1d76790b62b3dbb41cb7fa112c81dc4d5f (diff)
parent3d2fca1e8573d60e67bb2fe642fb78c517d5ccc2 (diff)
downloadbcfg2-470723f1c9eabbeec63bba154e6d5c6dc75153ac.tar.gz
bcfg2-470723f1c9eabbeec63bba154e6d5c6dc75153ac.tar.bz2
bcfg2-470723f1c9eabbeec63bba154e6d5c6dc75153ac.zip
Merge pull request #299 from AlexanderS/fix/caching
Expire metadata cache in all Connector plugins.
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/TemplateHelper.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/TemplateHelper.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py b/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
index b0b8d0061..ff67571fa 100644
--- a/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
+++ b/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
@@ -15,9 +15,10 @@ MODULE_RE = re.compile(r'(?P<filename>(?P<module>[^\/]+)\.py)$')
class HelperModule(Debuggable):
""" Representation of a TemplateHelper module """
- def __init__(self, name):
+ def __init__(self, name, core):
Debuggable.__init__(self)
self.name = name
+ self.core = core
#: The name of the module as used by get_additional_data().
#: the name of the file with .py stripped off.
@@ -44,6 +45,10 @@ class HelperModule(Debuggable):
if event and event.code2str() not in ['exists', 'changed', 'created']:
return
+ # expire the metadata cache, because the module might have changed
+ if self.core.metadata_cache_mode in ['cautious', 'aggressive']:
+ self.core.metadata_cache.expire()
+
try:
module = imp.load_source(
safe_module_name('TemplateHelper', self._module_name),
@@ -101,7 +106,6 @@ class TemplateHelper(Plugin, Connector, DirectoryBacked, TemplateDataProvider):
__author__ = 'chris.a.st.pierre@gmail.com'
ignore = re.compile(r'^(\.#.*|.*~|\..*\.(sw[px])|.*\.py[co])$')
patterns = MODULE_RE
- __child__ = HelperModule
def __init__(self, core):
Plugin.__init__(self, core)
@@ -109,6 +113,10 @@ class TemplateHelper(Plugin, Connector, DirectoryBacked, TemplateDataProvider):
DirectoryBacked.__init__(self, self.data)
TemplateDataProvider.__init__(self)
+ # The HelperModule needs access to the core, so we have to construct
+ # it manually and add the custom argument.
+ self.__child__ = lambda fname: HelperModule(fname, core)
+
def get_additional_data(self, _):
return dict([(h._module_name, h) # pylint: disable=W0212
for h in self.entries.values()])