summaryrefslogtreecommitdiffstats
path: root/openstack
diff options
context:
space:
mode:
authorJohannes Erdfelt <johannes.erdfelt@rackspace.com>2012-06-07 23:22:17 +0000
committerJohannes Erdfelt <johannes.erdfelt@rackspace.com>2012-06-07 23:23:37 +0000
commit8dbf60c81ba89f578f035e871bde622804053f54 (patch)
treeb6fddd7e719c08141bab7955bf25a1d3ae6a4f65 /openstack
parent3f0df42daeb0229a1c04382ee8973f9b32e9de4b (diff)
downloadoslo-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.py7
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: