summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/server/plugins/generators/rules.txt4
-rw-r--r--src/lib/Server/Plugins/Rules.py10
2 files changed, 7 insertions, 7 deletions
diff --git a/doc/server/plugins/generators/rules.txt b/doc/server/plugins/generators/rules.txt
index 70d894958..6bc407371 100644
--- a/doc/server/plugins/generators/rules.txt
+++ b/doc/server/plugins/generators/rules.txt
@@ -369,6 +369,10 @@ do::
</Group>
</Rules>
+Regular expressions are anchored at both ends, so ``<Service
+name="bcfg2".../>`` will *not* match a Service named ``bcfg2-server``;
+you'd have to explicitly specify ``<Service name="bcfg2.*".../>``.
+
Note that only one Rule can apply to any abstract entry, so you cannot
specify multiple regexs to match the same rule. In the use case
above, you would have to specify the services fully (except for type)
diff --git a/src/lib/Server/Plugins/Rules.py b/src/lib/Server/Plugins/Rules.py
index e8412c6f1..a146dca6a 100644
--- a/src/lib/Server/Plugins/Rules.py
+++ b/src/lib/Server/Plugins/Rules.py
@@ -12,12 +12,8 @@ class Rules(Bcfg2.Server.Plugin.PrioDir):
def HandlesEntry(self, entry, metadata):
if entry.tag in self.Entries:
- if entry.get("name") in self.Entries[entry.tag]:
- return True
- else:
- for rule in self.Entries[entry.tag].keys():
- if re.search(rule, entry.get('name')):
- return True
+ return self._matches(entry, metadata,
+ self.Entries[entry.tag].keys())
return False
def HandleEntry(self, entry, metadata):
@@ -35,7 +31,7 @@ class Rules(Bcfg2.Server.Plugin.PrioDir):
else:
# attempt regular expression matching
for rule in rules:
- if re.search(rule, entry.get('name')):
+ if re.match("%s$" % rule, entry.get('name')):
return True
return False