summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Lamar <brian.lamar@rackspace.com>2011-03-28 13:47:18 -0400
committerBrian Lamar <brian.lamar@rackspace.com>2011-03-28 13:47:18 -0400
commitde07a6409d575af5db748bdbfa2cc57881136d66 (patch)
tree95b095e9d2fe84595130711763026d9ea067cc54
parente043561a8d5dc0c3183ec7e3a5a44f2aa306d2fd (diff)
downloadnova-de07a6409d575af5db748bdbfa2cc57881136d66.tar.gz
nova-de07a6409d575af5db748bdbfa2cc57881136d66.tar.xz
nova-de07a6409d575af5db748bdbfa2cc57881136d66.zip
Decided to not break old format so this should work with the way Glance used to work and the way glace works now..The best of both worlds?
-rw-r--r--nova/image/glance.py12
-rw-r--r--nova/tests/image/test_glance.py27
2 files changed, 33 insertions, 6 deletions
diff --git a/nova/image/glance.py b/nova/image/glance.py
index 32c9fa6be..34fc78e71 100644
--- a/nova/image/glance.py
+++ b/nova/image/glance.py
@@ -230,5 +230,13 @@ def _parse_glance_iso8601_timestamp(timestamp):
"""
Parse a subset of iso8601 timestamps into datetime objects
"""
- ISO_FMT = "%Y-%m-%dT%H:%M:%S.%f"
- return datetime.datetime.strptime(timestamp, ISO_FMT)
+ ISO_FORMATS = ["%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%dT%H:%M:%S"]
+
+ for iso_format in ISO_FORMATS:
+ try:
+ return datetime.datetime.strptime(timestamp, iso_format)
+ except ValueError:
+ pass
+
+ raise ValueError(_("""%(timestamp)s does not follow any of the \
+signatures: %(ISO_FORMATS)s""") % (locals()))
diff --git a/nova/tests/image/test_glance.py b/nova/tests/image/test_glance.py
index dfa754b89..9d0b14613 100644
--- a/nova/tests/image/test_glance.py
+++ b/nova/tests/image/test_glance.py
@@ -55,6 +55,7 @@ class NullWriter(object):
class BaseGlanceTest(unittest.TestCase):
+ NOW_GLANCE_OLD_FORMAT = "2010-10-11T10:30:22"
NOW_GLANCE_FORMAT = "2010-10-11T10:30:22.000000"
NOW_DATETIME = datetime.datetime(2010, 10, 11, 10, 30, 22)
@@ -143,23 +144,41 @@ class TestGetterDateTimeNoneTests(BaseGlanceTest):
self.client.images = self._make_datetime_fixtures()
image_meta = self.service.show(self.context, 'image1')
self.assertDateTimesFilled(image_meta)
+ image_meta = self.service.show(self.context, 'image2')
+ self.assertDateTimesFilled(image_meta)
def test_detail_makes_datetimes(self):
self.client.images = self._make_datetime_fixtures()
image_meta = self.service.detail(self.context)[0]
self.assertDateTimesFilled(image_meta)
+ image_meta = self.service.detail(self.context)[1]
+ self.assertDateTimesFilled(image_meta)
def test_get_makes_datetimes(self):
self.client.images = self._make_datetime_fixtures()
writer = NullWriter()
image_meta = self.service.get(self.context, 'image1', writer)
self.assertDateTimesFilled(image_meta)
+ image_meta = self.service.get(self.context, 'image2', writer)
+ self.assertDateTimesFilled(image_meta)
def _make_datetime_fixtures(self):
- fixtures = {'image1': {'name': 'image1', 'is_public': True,
- 'created_at': self.NOW_GLANCE_FORMAT,
- 'updated_at': self.NOW_GLANCE_FORMAT,
- 'deleted_at': self.NOW_GLANCE_FORMAT}}
+ fixtures = {
+ 'image1': {
+ 'name': 'image1',
+ 'is_public': True,
+ 'created_at': self.NOW_GLANCE_FORMAT,
+ 'updated_at': self.NOW_GLANCE_FORMAT,
+ 'deleted_at': self.NOW_GLANCE_FORMAT,
+ },
+ 'image2': {
+ 'name': 'image2',
+ 'is_public': True,
+ 'created_at': self.NOW_GLANCE_OLD_FORMAT,
+ 'updated_at': self.NOW_GLANCE_OLD_FORMAT,
+ 'deleted_at': self.NOW_GLANCE_OLD_FORMAT,
+ },
+ }
return fixtures
def _make_none_datetime_fixtures(self):