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
commit4c8e4123afd87873fff81902befe2c3cc0bcaff0 (patch)
treee5e77bf936d3e05876bffe58dd45fa5aa9fc968b /src
parentf129fdca2b322314e911992c0f037a4cde8edb8a (diff)
downloadbcfg2-4c8e4123afd87873fff81902befe2c3cc0bcaff0.tar.gz
bcfg2-4c8e4123afd87873fff81902befe2c3cc0bcaff0.tar.bz2
bcfg2-4c8e4123afd87873fff81902befe2c3cc0bcaff0.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/Core.py28
1 files changed, 17 insertions, 11 deletions
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)