diff options
| author | Dan Smith <danms@us.ibm.com> | 2013-06-04 14:43:16 -0700 |
|---|---|---|
| committer | Dan Smith <danms@us.ibm.com> | 2013-06-05 12:46:31 -0700 |
| commit | 414e1457632b5eea82274ad8694d2b324d4e200e (patch) | |
| tree | 962d1539a6ede565475f0beaafdb1e449069b852 /nova/objects | |
| parent | 5d9cb7dd354dc1a1eae9985521c0f4b2ea4d876e (diff) | |
| download | nova-414e1457632b5eea82274ad8694d2b324d4e200e.tar.gz nova-414e1457632b5eea82274ad8694d2b324d4e200e.tar.xz nova-414e1457632b5eea82274ad8694d2b324d4e200e.zip | |
Make the datetime utility function coerce to UTC
Getting datetime objects from existing sources (i.e. sqlalchemy)
is problematic because they're "timezone naive". Make the utility
function coerce these to UTC for easier conversion.
Related to blueprint unified-object-model
Change-Id: I61bc6b13f9bd9441d64cc6930e43e921af72a342
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') |
