summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-22 17:09:01 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-22 17:09:01 -0400
commitb4f4d14e453aaec849e95268e6327fa07e5ff03e (patch)
tree77d2bec6a65e98ea7cce9082665c41cca57371c6 /src
parent80b4ca09bf4a815efd0726b96e3d032f76e1366d (diff)
downloadbcfg2-b4f4d14e453aaec849e95268e6327fa07e5ff03e.tar.gz
bcfg2-b4f4d14e453aaec849e95268e6327fa07e5ff03e.tar.bz2
bcfg2-b4f4d14e453aaec849e95268e6327fa07e5ff03e.zip
fixed handling of regex filename patterns in GroupSpool/EntrySet
Diffstat (limited to 'src')
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py5
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py2
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Decisions.py5
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Probes.py3
-rw-r--r--src/lib/Bcfg2/Server/Plugins/TGenshi.py7
-rw-r--r--src/lib/Bcfg2/Server/Plugins/TemplateHelper.py4
6 files changed, 17 insertions, 9 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py
index f858c7b44..f841cef22 100644
--- a/src/lib/Bcfg2/Server/Plugin.py
+++ b/src/lib/Bcfg2/Server/Plugin.py
@@ -1063,8 +1063,9 @@ class SpecificData(object):
class EntrySet(Debuggable):
"""Entry sets deal with the host- and group-specific entries."""
ignore = re.compile("^(\.#.*|.*~|\\..*\\.(sw[px])|.*\\.genshi_include)$")
+ basename_is_regex=False
- def __init__(self, basename, path, entry_type, encoding, is_regex=False):
+ def __init__(self, basename, path, entry_type, encoding):
Debuggable.__init__(self, name=basename)
self.path = path
self.entry_type = entry_type
@@ -1073,7 +1074,7 @@ class EntrySet(Debuggable):
self.infoxml = None
self.encoding = encoding
- if is_regex:
+ if self.basename_is_regex:
base_pat = basename
else:
base_pat = re.escape(basename)
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
index 4b9403320..fe993ab54 100644
--- a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
@@ -160,7 +160,7 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
import glob
submodules = []
for path in __path__:
- for submodule in glob.glob("%s/*.py" % path):
+ for submodule in glob.glob(os.path.join(path, "*.py")):
mod = '.'.join(submodule.split("/")[-1].split('.')[:-1])
if mod != '__init__':
submodules.append((None, mod, True))
diff --git a/src/lib/Bcfg2/Server/Plugins/Decisions.py b/src/lib/Bcfg2/Server/Plugins/Decisions.py
index 78b549c2c..90d9ecbe3 100644
--- a/src/lib/Bcfg2/Server/Plugins/Decisions.py
+++ b/src/lib/Bcfg2/Server/Plugins/Decisions.py
@@ -14,6 +14,8 @@ class DecisionFile(Bcfg2.Server.Plugin.SpecificData):
return [(x.get('type'), x.get('name')) for x in self.contents.xpath('.//Decision')]
class DecisionSet(Bcfg2.Server.Plugin.EntrySet):
+ basename_is_regex = True
+
def __init__(self, path, fam, encoding):
"""Container for decision specification files.
@@ -24,8 +26,7 @@ class DecisionSet(Bcfg2.Server.Plugin.EntrySet):
"""
Bcfg2.Server.Plugin.EntrySet.__init__(self, '(white|black)list', path,
- DecisionFile, encoding,
- is_regex=True)
+ DecisionFile, encoding)
try:
fam.AddMonitor(path, self)
except OSError:
diff --git a/src/lib/Bcfg2/Server/Plugins/Probes.py b/src/lib/Bcfg2/Server/Plugins/Probes.py
index cae06b659..7f300ebe0 100644
--- a/src/lib/Bcfg2/Server/Plugins/Probes.py
+++ b/src/lib/Bcfg2/Server/Plugins/Probes.py
@@ -114,12 +114,13 @@ class ProbeSet(Bcfg2.Server.Plugin.EntrySet):
ignore = re.compile("^(\.#.*|.*~|\\..*\\.(tmp|sw[px])|probed\\.xml)$")
probename = re.compile("(.*/)?(?P<basename>\S+?)(\.(?P<mode>(?:G\d\d)|H)_\S+)?$")
bangline = re.compile('^#!\s*(?P<interpreter>.*)$')
+ basename_is_regex = True
def __init__(self, path, fam, encoding, plugin_name):
self.plugin_name = plugin_name
Bcfg2.Server.Plugin.EntrySet.__init__(self, '[0-9A-Za-z_\-]+', path,
Bcfg2.Server.Plugin.SpecificData,
- encoding, is_regex=True)
+ encoding)
fam.AddMonitor(path, self)
def HandleEvent(self, event):
diff --git a/src/lib/Bcfg2/Server/Plugins/TGenshi.py b/src/lib/Bcfg2/Server/Plugins/TGenshi.py
index c84e0a506..c7335a0c0 100644
--- a/src/lib/Bcfg2/Server/Plugins/TGenshi.py
+++ b/src/lib/Bcfg2/Server/Plugins/TGenshi.py
@@ -31,7 +31,7 @@ def removecomment(stream):
yield kind, data, pos
-class TemplateFile:
+class TemplateFile(object):
"""Template file creates Genshi template structures for the loaded file."""
def __init__(self, name, specific, encoding):
@@ -121,6 +121,10 @@ class TemplateFile:
raise Bcfg2.Server.Plugin.PluginExecutionError('Genshi template loading error: %s' % err)
+class TemplateEntrySet(Bcfg2.Server.Plugin.EntrySet):
+ basename_is_regex = True
+
+
class TGenshi(Bcfg2.Server.Plugin.GroupSpool):
"""
The TGenshi generator implements a templating
@@ -130,5 +134,6 @@ class TGenshi(Bcfg2.Server.Plugin.GroupSpool):
name = 'TGenshi'
__author__ = 'jeff@ocjtech.us'
filename_pattern = 'template\.(txt|newtxt|xml)'
+ es_cls = TemplateEntrySet
es_child_cls = TemplateFile
deprecated = True
diff --git a/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py b/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
index 79da8da75..224637e3d 100644
--- a/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
+++ b/src/lib/Bcfg2/Server/Plugins/TemplateHelper.py
@@ -51,12 +51,12 @@ class HelperModule(Bcfg2.Server.Plugin.SpecificData):
class HelperSet(Bcfg2.Server.Plugin.EntrySet):
ignore = re.compile("^(\.#.*|.*~|\\..*\\.(sw[px])|.*\.py[co])$")
fpattern = '[0-9A-Za-z_\-]+\.py'
+ basename_is_regex = True
def __init__(self, path, fam, encoding, plugin_name):
self.plugin_name = plugin_name
Bcfg2.Server.Plugin.EntrySet.__init__(self, self.fpattern, path,
- HelperModule, encoding,
- is_regex=True)
+ HelperModule, encoding)
fam.AddMonitor(path, self)
def HandleEvent(self, event):