diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-14 11:02:50 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-14 11:02:50 -0400 |
commit | 554022ae751777a6f853f54663dc5e9fab818dce (patch) | |
tree | 6e67a8c708d26ad0ee7b3be10116af5f0c386363 /src/lib/Bcfg2/Server | |
parent | ed48c3c7cd7da8fac30a791ce2495706b6fa3876 (diff) | |
download | bcfg2-554022ae751777a6f853f54663dc5e9fab818dce.tar.gz bcfg2-554022ae751777a6f853f54663dc5e9fab818dce.tar.bz2 bcfg2-554022ae751777a6f853f54663dc5e9fab818dce.zip |
added tests for Specificity/SpecificData
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugin.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py index bb8973aec..b630081d4 100644 --- a/src/lib/Bcfg2/Server/Plugin.py +++ b/src/lib/Bcfg2/Server/Plugin.py @@ -1002,6 +1002,12 @@ class Specificity(object): def __lt__(self, other): return self.__cmp__(other) < 0 + def __gt__(self, other): + return self.__cmp__(other) > 0 + + def __eq__(self, other): + return self.__cmp__(other) == 0 + def matches(self, metadata): return self.all or \ self.hostname == metadata.hostname or \ @@ -1010,26 +1016,36 @@ class Specificity(object): def __cmp__(self, other): """Sort most to least specific.""" if self.all: - return 1 - if self.group: + if other.all: + return 0 + else: + return 1 + elif other.all: + return -1 + elif self.group: if other.hostname: return 1 if other.group and other.prio > self.prio: return 1 if other.group and other.prio == self.prio: return 0 + elif other.group: + return -1 + elif self.hostname and other.hostname: + return 0 return -1 - def more_specific(self, other): - """Test if self is more specific than other.""" + def __str__(self): + rv = [self.__class__.__name__, ': '] if self.all: - True + rv.append("all") elif self.group: - if other.hostname: - return True - elif other.group and other.prio > self.prio: - return True - return False + rv.append("Group %s, priority %s" % (self.group, self.prio)) + elif self.hostname: + rv.append("Host %s" % self.hostname) + if self.delta: + rv.append(", delta=%s" % self.delta) + return "".join(rv) class SpecificData(object): |