Fix to show default class limits for a quota class

Currently, Kingbird does not display the default limits
for a random class which is not an expected behavior.
This fix displays default resources and default limits
for any quota-class of kingbird.
Closes-Bug: #1684082

Change-Id: I1b8e3f1db79fd92531e05807547fcf7310be78f2
This commit is contained in:
Goutham Pratapa 2017-04-19 16:51:33 +05:30
parent 0155d79498
commit 0010e8d2b6
2 changed files with 17 additions and 6 deletions

View File

@ -37,10 +37,11 @@ class QuotaClassSetController(object):
consts.NEUTRON_QUOTA_FIELDS +
consts.NOVA_QUOTA_FIELDS)
def _format_quota_set(self, quota_class, quota_set):
def _format_quota_set(self, context, quota_class, quota_set):
"""Convert the quota object to a result dict."""
result = db_api.quota_class_get_default(context)
if quota_class:
result = dict(id=str(quota_class))
result['class_name'] = str(quota_class)
else:
result = {}
@ -67,7 +68,7 @@ class QuotaClassSetController(object):
values = db_api.quota_class_get_all_by_name(context, class_name)
return self._format_quota_set(class_name, values)
return self._format_quota_set(context, class_name, values)
@index.when(method='PUT', template='json')
def put(self, project_id, class_name):
@ -100,7 +101,7 @@ class QuotaClassSetController(object):
values = db_api.quota_class_get_all_by_name(context, class_name)
return self._format_quota_set(class_name, values)
return self._format_quota_set(context, class_name, values)
@index.when(method='delete', template='json')
def delete(self, project_id, class_name):

View File

@ -48,6 +48,10 @@ class TestQuotaClassController(testroot.KBApiTest):
@mock.patch.object(quota_class, 'db_api')
def test_get_all_admin(self, mock_db_api):
result = Result('class1', 'ram', 100)
default_result = Result('default', 'cores', 10)
mock_db_api.quota_class_get_default.return_value = \
{"class_name": default_result.class_name,
default_result.resource: default_result.hard_limit}
mock_db_api.quota_class_get_all_by_name.return_value = \
{"class_name": result.class_name,
result.resource: result.hard_limit}
@ -56,7 +60,8 @@ class TestQuotaClassController(testroot.KBApiTest):
fake_url,
headers=ADMIN_HEADERS)
self.assertEqual(response.status_int, 200)
self.assertEqual({'quota_class_set': {'id': 'class1', 'ram': 100}},
self.assertEqual({'quota_class_set': {'class_name': 'class1',
'ram': 100, 'cores': 10}},
eval(response.text))
def test_get_invalid_req(self):
@ -74,6 +79,10 @@ class TestQuotaClassController(testroot.KBApiTest):
@mock.patch.object(quota_class, 'db_api')
def test_put_admin(self, mock_db_api):
result = Result('class1', 'cores', 10)
default_result = Result('default', 'ram', 100)
mock_db_api.quota_class_get_default.return_value = \
{"class_name": default_result.class_name,
default_result.resource: default_result.hard_limit}
mock_db_api.quota_class_get_all_by_name.return_value = \
{"class_name": result.class_name,
result.resource: result.hard_limit}
@ -84,7 +93,8 @@ class TestQuotaClassController(testroot.KBApiTest):
headers=ADMIN_HEADERS,
params=data)
self.assertEqual(response.status_int, 200)
self.assertEqual({'quota_class_set': {'id': 'class1', 'cores': 10}},
self.assertEqual({'quota_class_set': {'class_name': 'class1',
'cores': 10, 'ram': 100}},
eval(response.text))
@mock.patch.object(quota_class, 'db_api')