From 8dbf60c81ba89f578f035e871bde622804053f54 Mon Sep 17 00:00:00 2001 From: Johannes Erdfelt Date: Thu, 7 Jun 2012 23:22:17 +0000 Subject: 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 --- openstack/common/jsonutils.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'openstack') 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: -- cgit