diff options
| author | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-06-07 23:22:17 +0000 |
|---|---|---|
| committer | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-06-07 23:23:37 +0000 |
| commit | 8dbf60c81ba89f578f035e871bde622804053f54 (patch) | |
| tree | b6fddd7e719c08141bab7955bf25a1d3ae6a4f65 /openstack | |
| parent | 3f0df42daeb0229a1c04382ee8973f9b32e9de4b (diff) | |
| download | oslo-8dbf60c81ba89f578f035e871bde622804053f54.tar.gz oslo-8dbf60c81ba89f578f035e871bde622804053f54.tar.xz oslo-8dbf60c81ba89f578f035e871bde622804053f54.zip | |
Handle xmlrpclib.DateTime types when serializing to JSON
Fixes bug 1010124
Convert xmlrpclib.DateTime types to datetime so they can be serialized
without creating an exception.
Change-Id: Ifcab69ad81d39d7f4066df5c71c6ab6734fb1fab
Diffstat (limited to 'openstack')
| -rw-r--r-- | openstack/common/jsonutils.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/openstack/common/jsonutils.py b/openstack/common/jsonutils.py index fa8b8f9..12a8cf2 100644 --- a/openstack/common/jsonutils.py +++ b/openstack/common/jsonutils.py @@ -37,6 +37,7 @@ import datetime import inspect import itertools import json +import xmlrpclib def to_primitive(value, convert_instances=False, level=0): @@ -81,6 +82,12 @@ def to_primitive(value, convert_instances=False, level=0): # The try block may not be necessary after the class check above, # but just in case ... try: + # It's not clear why xmlrpclib created their own DateTime type, but + # for our purposes, make it a datetime type which is explicitly + # handled + if isinstance(value, xmlrpclib.DateTime): + value = datetime.datetime(*tuple(value.timetuple())[:6]) + if isinstance(value, (list, tuple)): o = [] for v in value: |
