From daba175ee575fa690d5d3ad24b94f0c59611cf22 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 11 Aug 2004 19:54:35 +0000 Subject: Rename: src/Core.py -> src/lib/Server/Core.py }(Logical change 1.33) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@166 ce84e21b-d406-0410-9b95-82705330c041 --- src/Core.py | 111 ------------------------------------------------------------ 1 file changed, 111 deletions(-) delete mode 100644 src/Core.py diff --git a/src/Core.py b/src/Core.py deleted file mode 100644 index a87c6a589..000000000 --- a/src/Core.py +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/python -# $Id$ - -from os import stat -from stat import ST_MODE, S_ISDIR -from syslog import syslog, LOG_ERR - -from Error import PublishError -from Types import Clause - -import _fam - -class fam(object): - '''The fam object contains alteration monitors''' - - def __init__(self): - self.fm = _fam.open() - self.users = {} - self.handles = {} - - def fileno(self): - return self.fm.fileno() - - def AddMonitor(self, path, obj=None): - m = stat(path)[ST_MODE] - if S_ISDIR(m): - h = self.fm.monitorDirectory(path, None) - self.handles[h.requestID()] = h - else: - h = self.fm.monitorFile(path, None) - self.handles[h.requestID()] = h - if obj != None: - self.users[h.requestID()] = obj - return h.requestID() - - def HandleEvent(self): - event = self.fm.nextEvent() - id = event.requestID - if self.users.has_key(id): - self.users[id].HandleEvent(event) - -class PublishedValue(object): - def __init__(self,owner,key,value): - self.owner=owner - self.key=key - self.value=value - - def Update(self,owner,value): - if owner != self.owner: - raise PublishError, (self.key,owner) - self.value=value - -class Core(object): - def __init__(self, repository, structures, generators): - self.datastore = repository - self.fam = fam() - self.pubspace = {} - self.structures = [] - for structure in structures: - s = getattr(__import__(structure),structure) - self.structures.append(s(self, self.datastore)) - self.generators = [] - for generator in generators: - g = getattr(__import__(generator),generator) - self.generators.append(g(self, self.datastore)) - # we need to inventory and setup generators - # Process generator requirements - for g in self.generators: - for prq in g.__requires__: - if not self.pubspace.has_key(prq): - raise GeneratorError, (g.name, prq) - g.CompleteSetup() - - def PublishValue(self,owner,key,value): - if not self.pubspace.has_key(key): - # This is a new entry - self.pubspace[key]=PublishedValue(owner,key,value) - else: - # This is an old entry. Update can fai - try: - self.pubspace[key].Update(owner,value) - except PublishError,e: - syslog(LOG_ERR, "Publish conflict for %s. Owner %s, Modifier %s"%(key,self.pubspace[key].owner,owner)) - - def ReadValue(self,key): - if self.pubspace.has_key(key): - return self.pubspace[key].value - raise KeyError,key - - def GetStructures(self, metadata): - return reduce(lambda x,y:x+y, map(lambda x:x.Construct(metadata), self.structures)) - - def BindStructure(self, structure, metadata): - for entry in structure.getchildren(): - self.Bind(entry, metadata) - - def Bind(self, entry, metadata): - g = [x for x in self.generators if x.__provides__.get(entry.tag, {}).has_key(entry.attrib['name'])] - if len(g) == 1: - return g[0].__provides__[entry.tag][entry.attrib['name']](entry, metadata) - elif len(g) > 1: - print "Data Integrity error for %s %s"%(entry.tag, entry.attrib['name']) - else: - for g in self.generators: - if hasattr(g, "FindHandler"): - try: - return g.FindHandler(entry)(entry, metadata) - except: - print g, "failed" - raise KeyError, (entry.tag,entry.attrib['name']) - -- cgit v1.2.3-1-g7c22