summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-25 19:32:11 +0000
committerGerrit Code Review <review@openstack.org>2012-05-25 19:32:11 +0000
commita75486d6240cd9291face18108326eafd6273acd (patch)
tree050962e3631b6b90a99bd8216d43e1422ad89843
parentd9de51ac52307ac017b1e7cee5320c9d4915b16e (diff)
parentf88f3ed42c83730b28d4da2b3a51ce7fb7d19221 (diff)
Merge "Bugfix in simple_tenant_usage API detail view"
-rw-r--r--nova/api/openstack/compute/contrib/simple_tenant_usage.py3
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py22
2 files changed, 20 insertions, 5 deletions
diff --git a/nova/api/openstack/compute/contrib/simple_tenant_usage.py b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
index 7914a1dd3..5f8765de5 100644
--- a/nova/api/openstack/compute/contrib/simple_tenant_usage.py
+++ b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
@@ -202,10 +202,11 @@ class SimpleTenantUsageController(object):
def _get_datetime_range(self, req):
qs = req.environ.get('QUERY_STRING', '')
env = urlparse.parse_qs(qs)
+ # NOTE(lzyeval): env.get() always returns a list
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))
+ detailed = env.get('detailed', ['0'])[0] == '1'
return (period_start, period_stop, detailed)
@wsgi.serializers(xml=SimpleTenantUsagesTemplate)
diff --git a/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py b/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
index 0c2ef0a26..c3c28e9e4 100644
--- a/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
+++ b/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
@@ -116,11 +116,11 @@ class SimpleTenantUsageTest(test.TestCase):
SERVERS * VCPUS * HOURS)
self.assertFalse(usages[i].get('server_usages'))
- def test_verify_detailed_index(self):
+ def _get_tenant_usages(self, detailed=''):
req = webob.Request.blank(
'/v2/faketenant_0/os-simple-tenant-usage?'
- 'detailed=1&start=%s&end=%s' %
- (START.isoformat(), STOP.isoformat()))
+ 'detailed=%s&start=%s&end=%s' %
+ (detailed, START.isoformat(), STOP.isoformat()))
req.method = "GET"
req.headers["content-type"] = "application/json"
@@ -128,12 +128,26 @@ class SimpleTenantUsageTest(test.TestCase):
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 200)
res_dict = json.loads(res.body)
- usages = res_dict['tenant_usages']
+ return res_dict['tenant_usages']
+
+ def test_verify_detailed_index(self):
+ usages = self._get_tenant_usages('1')
for i in xrange(TENANTS):
servers = usages[i]['server_usages']
for j in xrange(SERVERS):
self.assertEqual(int(servers[j]['hours']), HOURS)
+ def test_verify_simple_index(self):
+ usages = self._get_tenant_usages(detailed='0')
+ for i in xrange(TENANTS):
+ self.assertEqual(usages[i].get('server_usages'), None)
+
+ def test_verify_simple_index_empty_param(self):
+ # NOTE(lzyeval): 'detailed=&start=..&end=..'
+ usages = self._get_tenant_usages()
+ for i in xrange(TENANTS):
+ self.assertEqual(usages[i].get('server_usages'), None)
+
def test_verify_show(self):
req = webob.Request.blank(
'/v2/faketenant_0/os-simple-tenant-usage/'