From 11296ab29d0cf5da53aad09fc3ade609e199c70b Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sat, 9 Feb 2019 16:40:41 +0100
Subject: [PATCH] construct object if task result is an Exception

---
 inventory_provider/tasks/worker.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index b5c7a0c1..3b7db454 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -416,5 +416,13 @@ def check_task_status(task_id):
         'success': r.status == states.SUCCESS,
     }
     if r.result:
-        result['result'] = r.result
+        # TODO: only discovered this case by testing, is this the only one?
+        #       ... otherwise need to pre-test json serialization
+        if isinstance(r.result, Exception):
+            result['result'] = {
+                'error type': type(r.result).__name__,
+                'message': str(r.result)
+            }
+        else:
+            result['result'] = r.result
     return result
-- 
GitLab