summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Core.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2005-09-07 19:16:34 +0000
committerNarayan Desai <desai@mcs.anl.gov>2005-09-07 19:16:34 +0000
commit7939c4a82bc27a0bf349c57d7d3c3ab4c944e551 (patch)
tree69c9daa646a4f62f9f37c6958b9a989008a43987 /src/lib/Server/Core.py
parent525a5af7e998f3d639ae57165f1881097c52b5c1 (diff)
downloadbcfg2-7939c4a82bc27a0bf349c57d7d3c3ab4c944e551.tar.gz
bcfg2-7939c4a82bc27a0bf349c57d7d3c3ab4c944e551.tar.bz2
bcfg2-7939c4a82bc27a0bf349c57d7d3c3ab4c944e551.zip
finish switch to new plugin API
(Logical change 1.301) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1230 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Core.py')
-rw-r--r--src/lib/Server/Core.py74
1 files changed, 30 insertions, 44 deletions
diff --git a/src/lib/Server/Core.py b/src/lib/Server/Core.py
index ed99b0f85..9996183c7 100644
--- a/src/lib/Server/Core.py
+++ b/src/lib/Server/Core.py
@@ -97,43 +97,42 @@ class Core(object):
raise CoreInitError, "metadata path incorrect"
self.stats = Statistics("%s/statistics.xml" % (mpath))
-
- for structure in cfile.get('server', 'structures').split(','):
- if not self.plugins.has_key(structure):
+
+ structures = cfile.get('server', 'structures').split(',')
+ generators = cfile.get('server', 'generators').split(',')
+
+ for plugin in structures + generators:
+ if not self.plugins.has_key(plugin):
try:
mod = getattr(__import__("Bcfg2.Server.Plugins.%s" %
(structure)).Server.Plugins, structure)
except ImportError:
- syslog(LOG_ERR, "Failed to load structure %s" % (structure))
+ syslog(LOG_ERR, "Failed to load plugin %s" % (plugin))
continue
- struct = getattr(mod, structure)
+ struct = getattr(mod, plugin)
try:
self.plugins[structure] = struct(self, self.datastore)
- self.structures.append(self.plugins[structure])
except PluginInitError:
- syslog(LOG_ERR, "Failed to instantiate plugin %s" % structure)
-
- for generator in cfile.get('server', 'generators').split(','):
- try:
- mod = getattr(__import__("Bcfg2.Server.Generators.%s" %
- (generator)).Server.Generators, generator)
- except ImportError:
- syslog(LOG_ERR, 'Failed to load generator %s' % (generator))
- continue
- gen = getattr(mod, generator)
- try:
- self.generators.append(gen(self, self.datastore))
- except GeneratorInitError:
- syslog(LOG_ERR, "Failed to instantiate generator %s" % gen.__name__)
- except:
- print "Unexpected initiantiation failure for generator %s" % gen.__name__
- syslog(LOG_ERR, "Unexpected initiantiation failure for generator %s" % gen.__name__)
- (trace, val, trb)=exc_info()
- for line in extract_tb(trb):
- syslog(LOG_ERR, ' File "%s", line %i, in %s\n %s\n'%line)
- syslog(LOG_ERR, "%s: %s\n"%(trace, val))
- del trace, val, trb
-
+ syslog(LOG_ERR, "Failed to instantiate plugin %s" % (plugin))
+ except:
+ syslog(LOG_ERR, "Unexpected initiantiation failure for plugin %s" % (plugin))
+ (trace, val, trb)=exc_info()
+ for line in extract_tb(trb):
+ syslog(LOG_ERR, ' File "%s", line %i, in %s\n %s\n'%line)
+ syslog(LOG_ERR, "%s: %s\n"%(trace, val))
+ del trace, val, trb
+
+ for plugin in structures:
+ if self.plugins.has_key(plugin):
+ self.structures.append(self.plugins[plugin])
+ else:
+ syslog(LOG_ERR, "Plugin %s not loaded. Not enabled as a Structure" % (plugin))
+ for plugin in generators:
+ if self.plugins.has_key(plugin):
+ self.generators.append(self.plugins[plugin])
+ else:
+ syslog(LOG_ERR, "Plugin %s not loaded. Not enabled as a Generator" % (plugin))
+
def GetStructures(self, metadata):
'''Get all structures for client specified by metadata'''
return reduce(lambda x, y:x+y,
@@ -150,9 +149,9 @@ class Core(object):
def Bind(self, entry, metadata):
'''Bind an entry using the appropriate generator'''
glist = [gen for gen in self.generators if
- gen.__provides__.get(entry.tag, {}).has_key(entry.get('name'))]
+ gen.Entries.get(entry.tag, {}).has_key(entry.get('name'))]
if len(glist) == 1:
- return glist[0].__provides__[entry.tag][entry.get('name')](entry, metadata)
+ return glist[0].Entries[entry.tag][entry.get('name')](entry, metadata)
elif len(glist) > 1:
syslog(LOG_ERR, "%s %s served by multiple generators" % (entry.tag, entry.get('name')))
else:
@@ -161,15 +160,6 @@ class Core(object):
return gen.FindHandler(entry)(entry, metadata)
raise GeneratorError, (entry.tag, entry.get('name'))
- def RunCronTasks(self):
- '''Run periodic tasks for generators'''
- generators = [gen for gen in self.generators if gen.__croninterval__]
- for generator in generators:
- current = time()
- if ((current - self.cron.get(generator, 0)) > generator.__croninterval__):
- generator.Cron()
- self.cron[generator] = current
-
def BuildConfiguration(self, client):
'''Build Configuration for client'''
start = time()
@@ -213,10 +203,6 @@ class Core(object):
except:
self.LogFailure("FamEvent")
try:
- self.core.RunCronTasks()
- except:
- self.LogFailure("Cron")
- try:
self.core.stats.WriteBack()
except:
self.LogFailure("Statistics")