From 4c8e4123afd87873fff81902befe2c3cc0bcaff0 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 9 Jun 2004 18:36:20 +0000 Subject: Switch to better api for fam handing (Logical change 1.21) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@88 ce84e21b-d406-0410-9b95-82705330c041 --- src/Core.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/Core.py b/src/Core.py index d6bd4e6b1..b230b6a4e 100644 --- a/src/Core.py +++ b/src/Core.py @@ -30,6 +30,7 @@ class fam(object): self.handles[h.requestID()] = h if obj != None: self.users[h.requestID()] = obj + return h.requestID() def HandleEvent(self): event = self.fm.nextEvent() @@ -52,12 +53,11 @@ class Core(object): def __init__(self, repository, generators): self.datastore = repository self.fam = fam() - self.provides = {'Service':{},'ConfigFile':{},'Packages':{}} self.pubspace = {} self.generators = [] for generator in generators: g = getattr(__import__(generator),generator) - self.generators.append(g(self, self.datastore, self.fam)) + self.generators.append(g(self, self.datastore)) # we need to inventory and setup generators # Process generator requirements for g in self.generators: @@ -65,9 +65,6 @@ class Core(object): if not self.pubspace.has_key(prq): raise GeneratorError, (g.name, prq) g.CompleteSetup() - for etype in g.__provides__.keys(): - for entry in g.__provides__[etype]: - self.provides[etype][entry] = getattr(g,g.__provides__[etype][entry]) def PublishValue(self,owner,key,value): if not self.pubspace.has_key(key): @@ -85,10 +82,19 @@ class Core(object): return self.pubspace[key].value raise KeyError,key - def GetConfigFile(self,filename,client): - if self.provides['ConfigFile'].has_key(filename): - return self.Get('ConfigFile', filename, client) - raise KeyError, filename + def GetEntry(self, key1, key2): + for d in map(lambda x:x.__provides__, self.generators): + if d.has_key(key1): + if d[key1].has_key(key2): + return d[key1][key2] + raise KeyError, (key1, key2) + + def GetConfigFile(self,filename,metadata): + try: + self.Get("ConfigFile", filename, metadata) + except: + raise KeyError, filename + + def Get(self,type,name,metadata): + return self.GetEntry(type, name)(name, metadata) - def Get(self,type,name,client): - return self.provides[type][name](name,client) -- cgit v1.2.3-1-g7c22