diff options
author | Rob Crittenden <rcritten@redhat.com> | 2010-06-25 13:37:27 -0400 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2010-07-12 09:32:33 -0400 |
commit | ccaf537aa6323c5161d3420b653025771db75010 (patch) | |
tree | 2e1e2dc830369d9619244e2ce11b039537578c1c /ipalib | |
parent | 7f9485f5bfc62f3a9d082d03b8118619bc283a94 (diff) | |
download | freeipa-ccaf537aa6323c5161d3420b653025771db75010.tar.gz freeipa-ccaf537aa6323c5161d3420b653025771db75010.tar.xz freeipa-ccaf537aa6323c5161d3420b653025771db75010.zip |
Handle errors raised by plugins more gracefully in mod_wsgi.
This started as an effort to display a more useful error message in the
Apache error log if retrieving the schema failed. I broadened the scope
a little to include limiting the output in the Apache error log
so errors are easier to find.
This adds a new configuration option, startup_traceback. Outside of
lite-server.py it is False by default so does not display the traceback
that lead to the StandardError being raised. This makes the mod_wsgi
error much easier to follow.
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/constants.py | 1 | ||||
-rw-r--r-- | ipalib/plugable.py | 5 | ||||
-rw-r--r-- | ipalib/plugins/migration.py | 5 |
3 files changed, 8 insertions, 3 deletions
diff --git a/ipalib/constants.py b/ipalib/constants.py index 05fa1e667..20f1d95d7 100644 --- a/ipalib/constants.py +++ b/ipalib/constants.py @@ -120,6 +120,7 @@ DEFAULT_CONFIG = ( # Debugging: ('verbose', 0), ('debug', False), + ('startup_traceback', False), ('mode', 'production'), # CA plugin: diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 397004eb1..fd5f31a76 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -536,8 +536,9 @@ class API(DictProxy): 'skipping plugin module %s: %s', fullname, e.reason ) except StandardError, e: - import traceback - self.log.error('could not load plugin module %r\n%s', pyfile, traceback.format_exc()) + if self.env.startup_traceback: + import traceback + self.log.error('could not load plugin module %r\n%s', pyfile, traceback.format_exc()) raise e def finalize(self): diff --git a/ipalib/plugins/migration.py b/ipalib/plugins/migration.py index 55a21572c..a2773efb8 100644 --- a/ipalib/plugins/migration.py +++ b/ipalib/plugins/migration.py @@ -31,7 +31,10 @@ from ipalib import api, errors, output, uuid from ipalib import Command, List, Password, Str from ipalib.cli import to_cli if api.env.in_server and api.env.context in ['lite', 'server']: - from ipaserver.plugins.ldap2 import ldap2 + try: + from ipaserver.plugins.ldap2 import ldap2 + except StandardError, e: + raise e from ipalib import _ from ipalib.text import Gettext # FIXME: remove once the other Gettext FIXME is removed |