From f339620a50ea14ee373a334441d5a946a92bbfae Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Thu, 13 May 2021 05:31:34 +1200 Subject: [PATCH] include the traceback in the response when a server method fails example: $ curl --unix-socket .subiquity/socket a/dry_run/crash Traceback (most recent call last): File "/home/mwhudson/src/subiquity/subiquity/common/api/server.py", line 122, in handler result = await implementation(**args) File "/home/mwhudson/src/subiquity/subiquity/server/dryrun.py", line 24, in crash_GET 1/0 ZeroDivisionError: division by zero --- subiquity/common/api/server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/subiquity/common/api/server.py b/subiquity/common/api/server.py index 8b5aeb75..14139f86 100644 --- a/subiquity/common/api/server.py +++ b/subiquity/common/api/server.py @@ -14,6 +14,7 @@ # along with this program. If not, see . import inspect +import traceback from aiohttp import web @@ -123,7 +124,9 @@ def _make_handler(controller, definition, implementation, serializer): serializer.serialize(def_ret_ann, result), headers={'x-status': 'ok'}) except Exception as exc: + tb = traceback.TracebackException.from_exception(exc) resp = web.Response( + text="".join(tb.format()), status=500, headers={ 'x-status': 'error',