Use custom JSONType columns
Use custom JSONType columns

the JSONType from sqlalchemy_utils is quite brittle as it only does
primitive json.dumps on values. This leads to various sorts of
StorageFailure exceptions in taskflow when, for example, an unserializable
exception bubbles up to the 'failure' field of AtomDetails.

This patch sublclasses the JSONType from sqlalchemy_utils and overrides
two of its methods that do (de)serialization to work via
oslo.serialization functions. They deal with such occurencies much
better, for example, by providing 'str' as a fallback default.

Change-Id: I3b9e9498b155199a4e707006a0cf22cda0567c06
Related-Bug: #1935957

openstack/taskflow,openstack/taskflow