nova-manage doesn't validate key to update the quota

nova-manage doesn't validate the key value supplied to
update the quota, as a result unnecessary records will be
created in db and user will be under the impression that
quota value got updated.
This patch validates the input value given to the key.

fixes bug 1064359
Change-Id: I9928f30881aa2780a23005b5f69aa67a44f314c5
(cherry picked from commit 82d8ffec5b)
This commit is contained in:
vijaya-erukala 2012-10-09 19:25:27 +05:30 committed by Joe Gordon
parent 197398fdf6
commit 1857821b45
2 changed files with 10 additions and 1 deletions

View File

@ -225,13 +225,17 @@ class ProjectCommands(object):
def quota(self, project_id, key=None, value=None):
"""Set or display quotas for project"""
ctxt = context.get_admin_context()
if key:
project_quota = QUOTAS.get_project_quotas(ctxt, project_id)
if key and key in project_quota:
if value.lower() == 'unlimited':
value = -1
try:
db.quota_update(ctxt, project_id, key, value)
except exception.ProjectQuotaNotFound:
db.quota_create(ctxt, project_id, key, value)
else:
print "error: Invalid key %s supplied for update" % key
sys.exit(2)
project_quota = QUOTAS.get_project_quotas(ctxt, project_id)
for key, value in project_quota.iteritems():
if value['limit'] < 0 or value['limit'] is None:

View File

@ -367,3 +367,8 @@ class ProjectCommandsTestCase(test.TestCase):
sys.stdout = sys.__stdout__
result = output.getvalue()
self.assertEquals(('volumes: unlimited' in result), True)
def test_quota_update_invalid_key(self):
self.assertRaises(SystemExit,
self.commands.quota, 'admin', 'volumes1', '10'
)