summaryrefslogtreecommitdiffstats
path: root/nova/objects
diff options
context:
space:
mode:
Diffstat (limited to 'nova/objects')
-rw-r--r--nova/objects/base.py6
-rw-r--r--nova/objects/instance.py6
-rw-r--r--nova/objects/utils.py8
3 files changed, 14 insertions, 6 deletions
diff --git a/nova/objects/base.py b/nova/objects/base.py
index abeebf990..0cfd08e6b 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -168,9 +168,9 @@ class NovaObject(object):
# by subclasses, but that is a special case. Objects inheriting from
# other objects will not receive this merging of fields contents.
fields = {
- 'created_at': obj_utils.datetime_or_none,
- 'updated_at': obj_utils.datetime_or_none,
- 'deleted_at': obj_utils.datetime_or_none,
+ 'created_at': obj_utils.datetime_or_str_or_none,
+ 'updated_at': obj_utils.datetime_or_str_or_none,
+ 'deleted_at': obj_utils.datetime_or_str_or_none,
}
def __init__(self):
diff --git a/nova/objects/instance.py b/nova/objects/instance.py
index 836d78c08..dbf9786df 100644
--- a/nova/objects/instance.py
+++ b/nova/objects/instance.py
@@ -58,9 +58,9 @@ class Instance(base.NovaObject):
'reservation_id': obj_utils.str_or_none,
- 'scheduled_at': obj_utils.datetime_or_none,
- 'launched_at': obj_utils.datetime_or_none,
- 'terminated_at': obj_utils.datetime_or_none,
+ 'scheduled_at': obj_utils.datetime_or_str_or_none,
+ 'launched_at': obj_utils.datetime_or_str_or_none,
+ 'terminated_at': obj_utils.datetime_or_str_or_none,
'availability_zone': obj_utils.str_or_none,
diff --git a/nova/objects/utils.py b/nova/objects/utils.py
index 042b7b36e..dd654045c 100644
--- a/nova/objects/utils.py
+++ b/nova/objects/utils.py
@@ -27,6 +27,14 @@ def datetime_or_none(dt):
raise ValueError('A datetime.datetime is required here')
+# NOTE(danms): Being tolerant of isotime strings here will help us
+# during our objects transition
+def datetime_or_str_or_none(val):
+ if isinstance(val, basestring):
+ return timeutils.parse_isotime(val)
+ return datetime_or_none(val)
+
+
def int_or_none(val):
"""Attempt to parse an integer value, or None."""
if val is None: