DEFAULT_HEADERS = {'Content-Type': 'text/html'}
def error(op, username, fields, err, emsg, traceback):
- """Print an error page when a CodeError occurs"""
+ """Print an error page when an exception occurs"""
d = dict(op=op, user=username, fields=fields,
errorMessage=str(err), stderr=emsg, traceback=traceback)
details = templates.error_raw(searchList=[d])
def throwError(_, __, ___):
"""Throw an error, to test the error-tracing mechanisms."""
- raise CodeError("test of the emergency broadcast system")
+ raise RuntimeError("test of the emergency broadcast system")
mapping = dict(list=listVms,
vnc=vnc,
output_string = str(output)
checkpoint.checkpoint('output as a string')
except Exception, err:
- import traceback
if not fields.has_key('js'):
- if isinstance(err, CodeError):
- self.start('500 Internal Server Error', [('Content-Type', 'text/html')])
- e = revertStandardError()
- s = error(operation, self.username, fields,
- err, e, traceback.format_exc())
- yield str(s)
- return
if isinstance(err, InvalidInput):
self.start('200 OK', [('Content-Type', 'text/html')])
e = revertStandardError()
yield str(invalidInput(operation, self.username, fields, err, e))
return
- self.start('500 Internal Server Error', [('Content-Type', 'text/plain')])
- send_error_mail('xvm error: %s' % (err,),
- '%s\n' % (traceback.format_exc(),))
- yield '''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.
-----
-%s
-----
-%s
-----''' % (str(err), traceback.format_exc())
+ import traceback
+ self.start('500 Internal Server Error',
+ [('Content-Type', 'text/html')])
+ e = revertStandardError()
+ s = error(operation, self.username, fields,
+ err, e, traceback.format_exc())
+ yield str(s)
+ return
status = headers.setdefault('Status', '200 OK')
del headers['Status']
self.start(status, headers.items())