diff options
| author | Dmitry Tantsur <dtantsur@protonmail.com> | 2020-07-02 12:18:53 +0200 |
|---|---|---|
| committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2020-07-02 12:18:53 +0200 |
| commit | a4855c544cac35e92ce7c20143536ca7a3bb847a (patch) | |
| tree | 14ae02f91ac45403f19db38e5684d30d72c8e6cd /ironic_python_agent/encoding.py | |
| parent | c1c093fc2e56411bb9f677034b4925aaed624d6d (diff) | |
| download | ironic-python-agent-a4855c544cac35e92ce7c20143536ca7a3bb847a.tar.gz | |
Fix serializing ironic-lib exceptions
Change-Id: If1408e4b81d263c56b4bbab618dd0737db5f762e
Story: #2007889
Task: #40268
Diffstat (limited to 'ironic_python_agent/encoding.py')
| -rw-r--r-- | ironic_python_agent/encoding.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ironic_python_agent/encoding.py b/ironic_python_agent/encoding.py index 715d1341..b1b44cd1 100644 --- a/ironic_python_agent/encoding.py +++ b/ironic_python_agent/encoding.py @@ -15,6 +15,8 @@ import json import uuid +from ironic_lib import exception as lib_exc + class Serializable(object): """Base class for things that can be serialized.""" @@ -43,6 +45,14 @@ class SerializableComparable(Serializable): return self.serialize() != other.serialize() +def serialize_lib_exc(exc): + """Serialize an ironic-lib exception.""" + return {'type': exc.__class__.__name__, + 'code': exc.code, + 'message': str(exc), + 'details': ''} + + class RESTJSONEncoder(json.JSONEncoder): """A slightly customized JSON encoder.""" def encode(self, o): @@ -68,5 +78,7 @@ class RESTJSONEncoder(json.JSONEncoder): return o.serialize() elif isinstance(o, uuid.UUID): return str(o) + elif isinstance(o, lib_exc.IronicException): + return serialize_lib_exc(o) else: return json.JSONEncoder.default(self, o) |
