diff options
author | Jenkins <jenkins@review.openstack.org> | 2012-05-23 17:31:38 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2012-05-23 17:31:38 +0000 |
commit | 19ec093e81f94c9b00bddf2af25ac6dcc406590b (patch) | |
tree | 2f12cb6a6c75201e0ab953af183fb0d86e5925a4 | |
parent | a833a2e0279fc12a2c8343b6ce54a1480b7ec766 (diff) | |
parent | 8c34089997d6dd6491a779964792ce4a85f523fa (diff) | |
download | nova-19ec093e81f94c9b00bddf2af25ac6dcc406590b.tar.gz nova-19ec093e81f94c9b00bddf2af25ac6dcc406590b.tar.xz nova-19ec093e81f94c9b00bddf2af25ac6dcc406590b.zip |
Merge "Use utils.parse_strtime rather than datetime.strptime"
-rw-r--r-- | nova/api/openstack/compute/contrib/simple_tenant_usage.py | 27 | ||||
-rw-r--r-- | nova/api/openstack/compute/versions.py | 7 | ||||
-rw-r--r-- | nova/image/glance.py | 3 | ||||
-rw-r--r-- | nova/tests/test_api.py | 20 |
4 files changed, 24 insertions, 33 deletions
diff --git a/nova/api/openstack/compute/contrib/simple_tenant_usage.py b/nova/api/openstack/compute/contrib/simple_tenant_usage.py index 763133f6c..eb8f86cc8 100644 --- a/nova/api/openstack/compute/contrib/simple_tenant_usage.py +++ b/nova/api/openstack/compute/contrib/simple_tenant_usage.py @@ -24,6 +24,7 @@ from nova.api.openstack import xmlutil from nova.compute import api from nova import exception from nova import flags +from nova import utils FLAGS = flags.FLAGS @@ -72,13 +73,13 @@ class SimpleTenantUsageController(object): terminated_at = instance['terminated_at'] if terminated_at is not None: if not isinstance(terminated_at, datetime.datetime): - terminated_at = datetime.datetime.strptime(terminated_at, - "%Y-%m-%d %H:%M:%S.%f") + terminated_at = utils.parse_strtime(terminated_at, + "%Y-%m-%d %H:%M:%S.%f") if launched_at is not None: if not isinstance(launched_at, datetime.datetime): - launched_at = datetime.datetime.strptime(launched_at, - "%Y-%m-%d %H:%M:%S.%f") + launched_at = utils.parse_strtime(launched_at, + "%Y-%m-%d %H:%M:%S.%f") if terminated_at and terminated_at < period_start: return 0 @@ -186,25 +187,23 @@ class SimpleTenantUsageController(object): return rval.values() def _parse_datetime(self, dtstr): - if isinstance(dtstr, datetime.datetime): + if not dtstr: + return utils.utcnow() + elif isinstance(dtstr, datetime.datetime): return dtstr try: - return datetime.datetime.strptime(dtstr, "%Y-%m-%dT%H:%M:%S") + return utils.parse_strtime(dtstr, "%Y-%m-%dT%H:%M:%S") except Exception: try: - return datetime.datetime.strptime(dtstr, - "%Y-%m-%dT%H:%M:%S.%f") + return utils.parse_strtime(dtstr, "%Y-%m-%dT%H:%M:%S.%f") except Exception: - return datetime.datetime.strptime(dtstr, - "%Y-%m-%d %H:%M:%S.%f") + return utils.parse_strtime(dtstr, "%Y-%m-%d %H:%M:%S.%f") def _get_datetime_range(self, req): qs = req.environ.get('QUERY_STRING', '') env = urlparse.parse_qs(qs) - period_start = self._parse_datetime(env.get('start', - [datetime.datetime.utcnow().isoformat()])[0]) - period_stop = self._parse_datetime(env.get('end', - [datetime.datetime.utcnow().isoformat()])[0]) + period_start = self._parse_datetime(env.get('start', [None])[0]) + period_stop = self._parse_datetime(env.get('end', [None])[0]) detailed = bool(env.get('detailed', False)) return (period_start, period_stop, detailed) diff --git a/nova/api/openstack/compute/versions.py b/nova/api/openstack/compute/versions.py index b964d87fe..f190dca03 100644 --- a/nova/api/openstack/compute/versions.py +++ b/nova/api/openstack/compute/versions.py @@ -15,13 +15,12 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - from lxml import etree from nova.api.openstack.compute.views import versions as views_versions from nova.api.openstack import wsgi from nova.api.openstack import xmlutil +from nova import utils LINKS = { @@ -125,8 +124,8 @@ class AtomSerializer(wsgi.XMLDictSerializer): def _get_most_recent_update(self, versions): recent = None for version in versions: - updated = datetime.datetime.strptime(version['updated'], - '%Y-%m-%dT%H:%M:%SZ') + updated = utils.parse_strtime(version['updated'], + '%Y-%m-%dT%H:%M:%SZ') if not recent: recent = updated elif updated > recent: diff --git a/nova/image/glance.py b/nova/image/glance.py index 3d3736491..1e98cbe11 100644 --- a/nova/image/glance.py +++ b/nova/image/glance.py @@ -20,7 +20,6 @@ from __future__ import absolute_import import copy -import datetime import json import random import sys @@ -404,7 +403,7 @@ def _parse_glance_iso8601_timestamp(timestamp): for iso_format in iso_formats: try: - return datetime.datetime.strptime(timestamp, iso_format) + return utils.parse_strtime(timestamp, iso_format) except ValueError: pass diff --git a/nova/tests/test_api.py b/nova/tests/test_api.py index fc78e1d4c..b0367dd8f 100644 --- a/nova/tests/test_api.py +++ b/nova/tests/test_api.py @@ -18,7 +18,6 @@ """Unit tests for the API endpoint""" -import datetime import httplib import random import StringIO @@ -37,6 +36,7 @@ from nova.compute import api as compute_api from nova import context from nova import exception from nova import test +from nova import utils class FakeHttplibSocket(object): @@ -249,19 +249,13 @@ class ApiEc2TestCase(test.TestCase): """ conv = apirequest._database_to_isoformat # sqlite database representation with microseconds - time_to_convert = datetime.datetime.strptime( - "2011-02-21 20:14:10.634276", - "%Y-%m-%d %H:%M:%S.%f") - self.assertEqual( - conv(time_to_convert), - '2011-02-21T20:14:10.634Z') + time_to_convert = utils.parse_strtime("2011-02-21 20:14:10.634276", + "%Y-%m-%d %H:%M:%S.%f") + self.assertEqual(conv(time_to_convert), '2011-02-21T20:14:10.634Z') # mysqlite database representation - time_to_convert = datetime.datetime.strptime( - "2011-02-21 19:56:18", - "%Y-%m-%d %H:%M:%S") - self.assertEqual( - conv(time_to_convert), - '2011-02-21T19:56:18.000Z') + time_to_convert = utils.parse_strtime("2011-02-21 19:56:18", + "%Y-%m-%d %H:%M:%S") + self.assertEqual(conv(time_to_convert), '2011-02-21T19:56:18.000Z') def test_xmlns_version_matches_request_version(self): self.expect_http(api_version='2010-10-30') |