diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2004-12-15 02:17:35 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2004-12-15 02:17:35 +0000 |
commit | 6cd7e084604d0fd5c844782a8b48460799eabd5d (patch) | |
tree | 7c16391d4ba281d095bc34f31625640875745daf /src/lib/Server/Core.py | |
parent | dd8bcf06f0031584c9d38986422c796fedb7bd7c (diff) | |
download | bcfg2-6cd7e084604d0fd5c844782a8b48460799eabd5d.tar.gz bcfg2-6cd7e084604d0fd5c844782a8b48460799eabd5d.tar.bz2 bcfg2-6cd7e084604d0fd5c844782a8b48460799eabd5d.zip |
remove debugging
2004/12/14 19:28:04-06:00 anl.gov!desai
add error reporting for generator instantiation errors
2004/12/14 19:08:32-06:00 anl.gov!desai
switch to GeneratorError
(Logical change 1.160)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@709 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Core.py')
-rw-r--r-- | src/lib/Server/Core.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/lib/Server/Core.py b/src/lib/Server/Core.py index 3e4ae93b6..82748b0b3 100644 --- a/src/lib/Server/Core.py +++ b/src/lib/Server/Core.py @@ -3,14 +3,14 @@ __revision__ = '$Revision$' from os import stat from stat import ST_MODE, S_ISDIR +from sys import exc_info from syslog import syslog, LOG_ERR +from traceback import extract_tb from time import time import _fam -class GeneratorError(Exception): - '''This error is raised upon generator failures''' - pass +from Bcfg2.Server.Generator import GeneratorError, GeneratorInitError class PublishError(Exception): '''This error is raised upon publication failures''' @@ -89,7 +89,18 @@ class Core(object): syslog(LOG_ERR, 'Failed to load generator %s' % (generator)) continue gen = getattr(mod, generator) - self.generators.append(gen(self, self.datastore)) + 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__) + (t, v, tb)=exc_info() + for line in extract_tb(tb): + syslog(LOG_ERR, ' File "%s", line %i, in %s\n %s\n'%line) + syslog(LOG_ERR, "%s: %s\n"%(t, v)) + del t, v, tb # we need to inventory and setup generators # Process generator requirements for gen in self.generators: @@ -127,8 +138,8 @@ class Core(object): for entry in [child for child in structure.getchildren() if child.tag not in ['SymLink', 'Directory']]: try: self.Bind(entry, metadata) - except KeyError, key: - syslog(LOG_ERR, "Unable to locate %s" % key) + except GeneratorError, key: + syslog(LOG_ERR, "Failed to bind entry: %s %s" % (entry.tag, entry.get('name'))) def Bind(self, entry, metadata): '''Bind an entry using the appropriate generator''' @@ -141,11 +152,8 @@ class Core(object): else: for gen in self.generators: if hasattr(gen, "FindHandler"): - try: - return gen.FindHandler(entry)(entry, metadata) - except: - print gen, "failed" - raise KeyError, (entry.tag, entry.get('name')) + return gen.FindHandler(entry)(entry, metadata) + raise GeneratorError, (entry.tag, entry.get('name')) def RunCronTasks(self): '''Run periodic tasks for generators''' |