On 03/09/2017 01:37 AM, zengchen wrote:
I'm contributing on Karbor (https://wiki.openstack.org/wiki/Karbor).
Recently, I find a bug in the following codes.

def resume_operation(self, operation_id, **kwargs):
    end_time = kwargs.get('end_time_for_run')
    now = datetime.utcnow()

Instead of datetime.utcnow(), do:

 from oslo_utils import timeutils
 ...

 now = timeutils.utcnow(with_timezone=True)

Alternately, you might consider creating a closure that masks the with_timezone=True parameter. For instance, you could have a karbor.utils file that contains something like this:

 import functools

 from oslo_utils import timeutils


 utcnow = functools.partial(timeutils.utcnow, with_timezone=True)

and then in the file that has your resume_operation() method, you would instead:

 from karbor import utils
 ...

 now = utils.utcnow()

Best,
-jay

    if not isinstance(end_time, datetime) or now > end_time:
        return

'end_time_for_run' comes from DB with following definition.
    class ScheduledOperationState():
        fields = {
            'end_time_for_run': fields.DateTimeField(nullable=True),
        }
when 'now' compares to 'end_time', it will raise an exception as I
described before.

I mean now that timeutils.untcnow and datetime.utcnow will return a time
without
a timezone info attached by default, why not  change DateTimeField to
keep it
coincidence with them. I should be a good optimize in the point of view
of easy of use.
Certainly, I can change the codes as you described.

Really appreciate your reply.

Best Wishes!
zeng chen



At 2017-03-09 10:43:23, "Jay Pipes" <jaypi...@gmail.com> wrote:
On 03/08/2017 09:07 PM, zengchen wrote:
Hi, jay
Thanks for your reply. Do you means it is no need to do that optimization?
In my opinion, It is better if do some change. Thanks again.

I'm not quite following you. I don't believe there's any need to change
anything nor any need to optimize anything.

Can you elaborate on what issue you are facing?

Best,
-jay

At 2017-03-08 00:57:51, "Jay Pipes" <jaypi...@gmail.com> wrote:
On 03/07/2017 01:34 AM, zengchen wrote:
Hi, guys:
     I find a non-coincidence definition in Oslo,

     oslo_utils.timeutils.utcnow is defined like this:
         def utcnow(with_timezone=False):

    oslo_versonedobjects.fields.DateTimeField is defined like this
classDateTimeField(AutoTypedField): def__init__(self, tzinfo_aware=True,
**kwargs):

    a = utcnow()
    class ABC(VersionedObject):
        fields = {
            created_at = fields.DateTimeField()
        }
    b = ABC(), and fill it by db record.

    If I compare a and b.created_at,  it will raise an exception like this:
       'TypeError: can't compare offset-naive and offset-aware datetimes'
    because a's value is like this:
        datetime.datetime(2017, 3, 7, 2, 34, 50, 859002)
    b.created_at 's value is like this:
         datetime.datetime(2017, 3, 7, 2, 35, 27,
400786,*tzinfo=<iso8601.Utc>*)

   Can these two kinds of time's definition be coincident? For example:
       def utcnow(with_timezone=*False*):

       class DateTimeField(AutoTypedField):
            def __init__(self, tzinfo_aware=*False*, **kwargs):

Hi Zeng,

Yes, you will want to use utcnow(with_timezone=True) and the default
ovo.fields.DateTimeField definition *or* use utcnow() and a
ovo.fields.DateTimeField(tzinfo_aware=False) definition.

Best,
-jay

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to