summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-06-25 13:37:27 -0400
committerRob Crittenden <rcritten@redhat.com>2010-07-12 09:32:33 -0400
commitccaf537aa6323c5161d3420b653025771db75010 (patch)
tree2e1e2dc830369d9619244e2ce11b039537578c1c /ipalib
parent7f9485f5bfc62f3a9d082d03b8118619bc283a94 (diff)
downloadfreeipa-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.py1
-rw-r--r--ipalib/plugable.py5
-rw-r--r--ipalib/plugins/migration.py5
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