summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2004-06-09 18:36:20 +0000
committerNarayan Desai <desai@mcs.anl.gov>2004-06-09 18:36:20 +0000
commit4a43e919be39194c1641d416c3c54a686b340cf1 (patch)
treea56613d31a90e668eaeabfe64a4cb6f7348094ae /src
parent217c5650e2a558972f75ae34668fa13641c84cd5 (diff)
downloadbcfg2-4a43e919be39194c1641d416c3c54a686b340cf1.tar.gz
bcfg2-4a43e919be39194c1641d416c3c54a686b340cf1.tar.bz2
bcfg2-4a43e919be39194c1641d416c3c54a686b340cf1.zip
add Image to Metadata class
(Logical change 1.21) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@92 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src')
-rw-r--r--src/Metadata.py50
1 files changed, 40 insertions, 10 deletions
diff --git a/src/Metadata.py b/src/Metadata.py
index 8de23f8b9..11a008e36 100644
--- a/src/Metadata.py
+++ b/src/Metadata.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
from threading import Lock
+from time import localtime, mktime
from Error import NodeConfigurationError
@@ -21,9 +22,12 @@ class NodeStatistics(object):
self.count = 0
self.fail = 0
+ def GetStats(self):
+ return (self.status, self.count, self.last, self.fail)
+
def Suceed(self,changeset):
self.count += 1
- self.last = localtime()
+ self.last = mktime(localtime())
self.status = True
self.changeset=changeset
@@ -42,9 +46,12 @@ class Client(object):
def UpdateStats(self,status,changeset):
if status:
- self.stats.Succeed(changeset)
+ self.stats.Suceed(changeset)
else:
self.stats.Fail(changeset)
+
+ def GetStats(self):
+ return self.stats.GetStats()
class ConfigurationRegion(object):
def __init__(self,name,scope,stype):
@@ -73,25 +80,25 @@ class Store(object):
def GetImage(self,node):
try:
- return self.nodes[node].image
+ return self.clients[node].image
except NodeConfigurationError, e:
- self.nodes[node]=Node(node,self.default['image'],self.default['tags'])
- return self.nodes[node].image
+ self.clients[node]=Node(node,self.default['image'],self.default['tags'])
+ return self.clients[node].image
def GetTags(self,node):
try:
- return self.nodes[node].tags
+ return self.clients[node].tags
except NodeConfigurationError, e:
- self.nodes[node]=Node(node,self.default['image'],self.default['tags'])
- return self.nodes[node].image
+ self.clients[node]=Node(node,self.default['image'],self.default['tags'])
+ return self.clients[node].image
def AddTag(self,node,tag):
if GetTags(node).count(tag) == 0:
- self.nodes[node].tags.append(tag)
+ self.clients[node].tags.append(tag)
def DelTag(self,node,tag):
if GetTags(node).count(tag) != 0:
- self.nodes[node].tags.remove(tag)
+ self.clients[node].tags.remove(tag)
def GetBundles(self,tag):
return self.bundles.get(tag,[])
@@ -102,3 +109,26 @@ class Store(object):
for bundle in self.GetBundles(tag):
ret[bundle]=True
return ret.keys()
+
+class Metadata(object):
+ '''The Metadata class is a container for all classes of metadata used by Bcfg2'''
+ def __init__(self, all, image, bundles, tags, hostname):
+ self.all = all
+ self.image = image
+ self.bundles = bundles
+ self.tags = tags
+ self.hostname = hostname
+
+ def Applies(self, other):
+ '''Applies checks if the object associated with this metadata is relevant to
+ the metadata supplied by other'''
+ for tag in self.tags:
+ if tag not in other.tags:
+ return False
+ for bundle in self.bundles:
+ if bundle not in other.bundles:
+ return False
+ if (self.hostname != None) and (self.hostname != other.hostname):
+ return False
+ return True
+