summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/Rules.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2011-08-31 14:28:12 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2011-08-31 14:28:12 -0400
commitacdbf137595b45de2dda5b9ba3b33a1bb836e075 (patch)
tree650d64241c1e57941ba54d673a76686dc43ba488 /src/lib/Server/Plugins/Rules.py
parent5b542f5d57ed6c7fdb7f9dc41427491eab5e7a45 (diff)
downloadbcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.tar.gz
bcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.tar.bz2
bcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.zip
added regex support to Rules
Diffstat (limited to 'src/lib/Server/Plugins/Rules.py')
-rw-r--r--src/lib/Server/Plugins/Rules.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/lib/Server/Plugins/Rules.py b/src/lib/Server/Plugins/Rules.py
index eb0547cdb..e8412c6f1 100644
--- a/src/lib/Server/Plugins/Rules.py
+++ b/src/lib/Server/Plugins/Rules.py
@@ -1,11 +1,41 @@
"""This generator provides rule-based entry mappings."""
__revision__ = '$Revision$'
+import re
import Bcfg2.Server.Plugin
-
class Rules(Bcfg2.Server.Plugin.PrioDir):
"""This is a generator that handles service assignments."""
name = 'Rules'
__version__ = '$Id$'
__author__ = 'bcfg-dev@mcs.anl.gov'
+
+ 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 False
+
+ def HandleEntry(self, entry, metadata):
+ return self.BindEntry(entry, metadata)
+
+ def BindEntry(self, entry, metadata):
+ attrs = self.get_attrs(entry, metadata)
+ for key, val in list(attrs.items()):
+ if key not in entry.attrib:
+ entry.attrib[key] = val
+
+ def _matches(self, entry, metadata, rules):
+ if Bcfg2.Server.Plugin.PrioDir._matches(self, entry, metadata, rules):
+ return True
+ else:
+ # attempt regular expression matching
+ for rule in rules:
+ if re.search(rule, entry.get('name')):
+ return True
+ return False
+