diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-06-05 22:40:38 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-06-05 22:40:38 +0000 |
| commit | 7f082255d47090c6bb0f8f89dcf13c2c206a4de2 (patch) | |
| tree | 3305256412e160bca50b317447bcac435c7ddbeb /nova/objects | |
| parent | c9695c1d734593a30c5b36626c73e4eb1cb277bc (diff) | |
| parent | 414e1457632b5eea82274ad8694d2b324d4e200e (diff) | |
| download | nova-7f082255d47090c6bb0f8f89dcf13c2c206a4de2.tar.gz nova-7f082255d47090c6bb0f8f89dcf13c2c206a4de2.tar.xz nova-7f082255d47090c6bb0f8f89dcf13c2c206a4de2.zip | |
Merge "Make the datetime utility function coerce to UTC"
Diffstat (limited to 'nova/objects')
| -rw-r--r-- | nova/objects/utils.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/nova/objects/utils.py b/nova/objects/utils.py index dd654045c..21ef6faeb 100644 --- a/nova/objects/utils.py +++ b/nova/objects/utils.py @@ -15,6 +15,7 @@ """Utility methods for objects""" import datetime +import iso8601 import netaddr from nova.openstack.common import timeutils @@ -22,8 +23,16 @@ from nova.openstack.common import timeutils def datetime_or_none(dt): """Validate a datetime or None value.""" - if dt is None or isinstance(dt, datetime.datetime): - return dt + if dt is None: + return None + elif isinstance(dt, datetime.datetime): + if dt.utcoffset() is None: + # NOTE(danms): Legacy objects from sqlalchemy are stored in UTC, + # but are returned without a timezone attached. + # As a transitional aid, assume a tz-naive object is in UTC. + return dt.replace(tzinfo=iso8601.iso8601.Utc()) + else: + return dt raise ValueError('A datetime.datetime is required here') |
