diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2011-08-31 14:28:12 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2011-08-31 14:28:12 -0400 |
commit | acdbf137595b45de2dda5b9ba3b33a1bb836e075 (patch) | |
tree | 650d64241c1e57941ba54d673a76686dc43ba488 /src/lib/Server/Plugins | |
parent | 5b542f5d57ed6c7fdb7f9dc41427491eab5e7a45 (diff) | |
download | bcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.tar.gz bcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.tar.bz2 bcfg2-acdbf137595b45de2dda5b9ba3b33a1bb836e075.zip |
added regex support to Rules
Diffstat (limited to 'src/lib/Server/Plugins')
-rw-r--r-- | src/lib/Server/Plugins/Rules.py | 32 |
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 + |