<div dir="ltr"><br><div class="gmail_extra"><br clear="all"><div><div><br></div>-Dolph</div>
<br><br><div class="gmail_quote">On Mon, Jun 3, 2013 at 6:33 AM, Flavio Percoco <span dir="ltr"><<a href="mailto:flavio@redhat.com" target="_blank">flavio@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hi,<br>
<br>
I'm planning to re-factor current Oslo's jsonutils module and as part<br>
of that re-factor process I'd like to add a better support for datetimes<br>
objects.<br>
<br>
Before going further with the implementation, I'd like to get some<br>
feedback from folks and see if any of you have already done it or at<br>
least thought about it.<br>
<br>
Currently jsonutils serializes datetimes using timeutils.strtime<br>
function, which returns a ISO8601 formatted string. Since this is a<br>
string, there's no easy way to understand, when de-serializing,<br>
whether it is a datetime, was a datetime before and / or should be<br>
de-serialized as datetime.<br>
<br>
The first point is:<br>
<br>
1) Do we really need this?<br>
From a "compatibiliy" POV I'd prefer not having it and avoid<br>
sending datetimes that are supposed to be de-serialized. However,<br>
there are definitely cases were this is useful and makes<br>
implementations way easier.<br>
<br>
2) Does it make sense to have this in Oslo?<br>
<br>
My bet is yes. We currently need it in Glance and I think other<br>
projects can benefit from this - nova does something similar. (We<br>
can use Glance as a POC for this).<br></blockquote><div><br></div><div style>keystone could definitely use this, as long as it can handle ISO 8601 extended time formats w/ microseconds, e.g. "2013-02-27T16:30:59.999999Z"</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
3) I've put some thoughts on it that I'd like to share:<br>
<br>
1) Try always to convert the str to datetime - using<br>
timeutils.parse_strtime. The drawback is that we might convert to<br>
datetimes values that weren't datetime before being serialized.<br>
Similar to what nova's sqlalchemy api does[0].<br>
<br>
2) Add a prefix / suffix to the serialized datetime. This will<br>
allow the de-serializer to know whether it should be converted to<br>
datetime.<br></blockquote><div><br></div><div style>If this happens automatically, won't it just break existing clients?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
3) Serialize the datetime as a dictionary with the following<br>
structure:<br>
<br>
{"_type": "datetime", "_value": "....", "_format": "%Y-%m-%dT%H:%M:%S.%f"}<br>
The above will allow the de-serializer to know whether it<br>
should be converted, the object type (datetime, date or time)<br>
and the format it was serialized with. I don't like this idea<br>
but I see the benefit of having all that information.<br></blockquote><div><br></div><div style>Agree with the hesitation.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
[0]<br>
<a href="https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L276" target="_blank">https://github.com/openstack/<u></u>nova/blob/master/nova/db/<u></u>sqlalchemy/api.py#L276</a><br>
<br>
Any thoughts / ideas?<br>
<br>
Cheers,<br>
FF<span class=""><font color="#888888"><br>
<br>
-- <br>
@flaper87<br>
Flavio Percoco<br>
<br>
______________________________<u></u>_________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
</font></span></blockquote></div><br></div></div>