summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-23 17:31:38 +0000
committerGerrit Code Review <review@openstack.org>2012-05-23 17:31:38 +0000
commit19ec093e81f94c9b00bddf2af25ac6dcc406590b (patch)
tree2f12cb6a6c75201e0ab953af183fb0d86e5925a4
parenta833a2e0279fc12a2c8343b6ce54a1480b7ec766 (diff)
parent8c34089997d6dd6491a779964792ce4a85f523fa (diff)
downloadnova-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.py27
-rw-r--r--nova/api/openstack/compute/versions.py7
-rw-r--r--nova/image/glance.py3
-rw-r--r--nova/tests/test_api.py20
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')