From 2ceb21a06962e780e76e376870f489725ebd3381 Mon Sep 17 00:00:00 2001 From: Greg Price Date: Fri, 13 Jun 2008 02:58:13 -0400 Subject: [PATCH] send mail on all exceptions svn path=/trunk/packages/sipb-xen-www/; revision=599 --- code/main.py | 7 +++++-- code/templates/error.tmpl | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/code/main.py b/code/main.py index 5874928..7531852 100755 --- a/code/main.py +++ b/code/main.py @@ -17,7 +17,7 @@ def revertStandardError(): """Move stderr to stdout, and return the contents of the old stderr.""" errio = sys.stderr if not isinstance(errio, StringIO): - return None + return '' sys.stderr = sys.stdout errio.seek(0) return errio.read() @@ -120,6 +120,9 @@ DEFAULT_HEADERS = {'Content-Type': 'text/html'} def error(op, username, fields, err, emsg): """Print an error page when a CodeError occurs""" + send_error_mail('xvm error on %s for %s: %s' % (op, username, err), + 'error on %s for %s: %s\n\n%s\n' + % (op, username, err, emsg)) d = dict(op=op, user=username, errorMessage=str(err), stderr=emsg) return templates.error(searchList=[d]) @@ -581,7 +584,7 @@ def unauthFront(_, _2, fields): def throwError(_, __, ___): """Throw an error, to test the error-tracing mechanisms.""" - raise RuntimeError("This is a test of the emergency broadcast system.") + raise CodeError("test of the emergency broadcast system") mapping = dict(list=listVms, vnc=vnc, diff --git a/code/templates/error.tmpl b/code/templates/error.tmpl index b129599..37f9cc6 100644 --- a/code/templates/error.tmpl +++ b/code/templates/error.tmpl @@ -6,7 +6,17 @@ ERROR! #end def #def body -

$errorMessage in operation $op. This shouldn't happen! Please -email xvm@mit.edu to explain how it happened. Stderr:

-
$stderr
+

Uh-oh! We experienced an error. Sorry about that. We've gotten +mail about it.

+ +

Feel free to poke us at xvm@mit.edu if this bug is +consistently biting you and we don't seem to be fixing it.

+ +

In case you're curious, the gory details are here.

+ +
+Error on operation $op for user $user: $errorMessage
+Error output (if any):
+$stderr
+
#end def -- 1.7.9.5