From 4a43e919be39194c1641d416c3c54a686b340cf1 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 9 Jun 2004 18:36:20 +0000 Subject: 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 --- src/Metadata.py | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) (limited to 'src') 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 + -- cgit v1.2.3-1-g7c22