summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-14 11:02:50 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-14 11:02:50 -0400
commit554022ae751777a6f853f54663dc5e9fab818dce (patch)
tree6e67a8c708d26ad0ee7b3be10116af5f0c386363 /src/lib
parented48c3c7cd7da8fac30a791ce2495706b6fa3876 (diff)
downloadbcfg2-554022ae751777a6f853f54663dc5e9fab818dce.tar.gz
bcfg2-554022ae751777a6f853f54663dc5e9fab818dce.tar.bz2
bcfg2-554022ae751777a6f853f54663dc5e9fab818dce.zip
added tests for Specificity/SpecificData
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py36
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):