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:
parent
197398fdf6
commit
1857821b45
|
@ -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:
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue