summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2004-08-11 19:54:35 +0000
committerNarayan Desai <desai@mcs.anl.gov>2004-08-11 19:54:35 +0000
commit97ee9e654ac62cb591f29529e39dd9ad61d74c9e (patch)
tree10065c335517211ddcb41baf1cd48ebce7722f76 /src
parente8aafbde3c19a6566c10e9549604630a0e1cc801 (diff)
downloadbcfg2-97ee9e654ac62cb591f29529e39dd9ad61d74c9e.tar.gz
bcfg2-97ee9e654ac62cb591f29529e39dd9ad61d74c9e.tar.bz2
bcfg2-97ee9e654ac62cb591f29529e39dd9ad61d74c9e.zip
Rename: src/Generator.py -> src/lib/Server/Generator.py
(Logical change 1.33) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@169 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src')
-rw-r--r--src/lib/Server/Generator.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/lib/Server/Generator.py b/src/lib/Server/Generator.py
index e69de29bb..eb66404a2 100644
--- a/src/lib/Server/Generator.py
+++ b/src/lib/Server/Generator.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+# $Id$
+
+from Error import GeneratorError
+
+from syslog import syslog, LOG_ERR
+
+class Generator(object):
+ '''This is a class that generators can be subclassed from.
+ __name__, __version__, and __author__ must be set for the module
+ __provides__ is a dictionary mapping listing the entity type and name to a function name
+ __requires__ is a set of external published data needed for operation'''
+
+ __name__ = None
+ __version__ = None
+ __provides__ = {}
+ __requires__ = []
+
+ def __init__(self, core, datastore):
+ self.core = core
+ self.data = "%s/%s"%(datastore,self.__name__)
+ self.__setup__()
+
+ def __setup__(self):
+ '''This method must be overloaded during subclassing.
+ All module specific setup, including all publication, occurs here.'''
+
+ def CompleteSetup(self):
+ self.ReadAll()
+ print "%s loaded"%(self.__version__)
+
+ def Cron(self):
+ '''Cron defines periodic tasks to maintain data coherence'''
+ pass
+
+ def Publish(self,key,value):
+ self.core.Publish(self.__name__,key,value)
+
+ def Read(self,key):
+ self.core.ReadValue(key)
+
+ def ReadAll(self):
+ self.external = {}
+ for field in self.__requires__:
+ self.external[field] = self.Read(field)
+
+ def GetMetadata(self,client,field):
+ '''GetMetadata returns current metadata file client. Field can be one of:
+ image, tags, bundles'''
+ pass
+
+ def Notify(self,region):
+ '''Generate change notification for region'''
+ pass
+
+ def GetProbes(self, metadata):
+ return []
+
+ def AcceptProbeData(self, client, probedata):
+ return