Add support for snapshot quotas.

Now we have [volumes, gigabyes, snapshots] as valid
tenant quotas.

Change-Id: Iae8a86b31e63b9e56d6ef0bee7e03f4089aa8138
This commit is contained in:
john-griffith
2013-03-21 16:58:28 -06:00
parent 020778ddd9
commit 4d76d3c481
8 changed files with 42 additions and 4 deletions

View File

@@ -36,11 +36,12 @@ class QuotaSetManager(base.ManagerWithFind):
tenant_id = tenant_id.tenant_id
return self._get("/os-quota-sets/%s" % (tenant_id), "quota_set")
def update(self, tenant_id, volumes=None, gigabytes=None):
def update(self, tenant_id, volumes=None, snapshots=None, gigabytes=None):
body = {'quota_set': {
'tenant_id': tenant_id,
'volumes': volumes,
'snapshots': snapshots,
'gigabytes': gigabytes}}
for key in body['quota_set'].keys():

View File

@@ -500,7 +500,7 @@ def do_credentials(cs, args):
utils.print_dict(catalog['access']['user'], "User Credentials")
utils.print_dict(catalog['access']['token'], "Token")
_quota_resources = ['volumes', 'gigabytes']
_quota_resources = ['volumes', 'snapshots', 'gigabytes']
def _quota_show(quotas):
@@ -545,6 +545,10 @@ def do_quota_defaults(cs, args):
metavar='<volumes>',
type=int, default=None,
help='New value for the "volumes" quota.')
@utils.arg('--snapshots',
metavar='<snapshots>',
type=int, default=None,
help='New value for the "snapshots" quota.')
@utils.arg('--gigabytes',
metavar='<gigabytes>',
type=int, default=None,
@@ -571,6 +575,10 @@ def do_quota_class_show(cs, args):
metavar='<volumes>',
type=int, default=None,
help='New value for the "volumes" quota.')
@utils.arg('--snapshots',
metavar='<snapshots>',
type=int, default=None,
help='New value for the "snapshots" quota.')
@utils.arg('--gigabytes',
metavar='<gigabytes>',
type=int, default=None,

View File

@@ -35,11 +35,12 @@ class QuotaSetManager(base.ManagerWithFind):
tenant_id = tenant_id.tenant_id
return self._get("/os-quota-sets/%s" % (tenant_id), "quota_set")
def update(self, tenant_id, volumes=None, gigabytes=None):
def update(self, tenant_id, volumes=None, snapshots=None, gigabytes=None):
body = {'quota_set': {
'tenant_id': tenant_id,
'volumes': volumes,
'snapshots': snapshots,
'gigabytes': gigabytes}}
for key in body['quota_set'].keys():

View File

@@ -544,7 +544,7 @@ def do_credentials(cs, args):
utils.print_dict(catalog['access']['user'], "User Credentials")
utils.print_dict(catalog['access']['token'], "Token")
_quota_resources = ['volumes', 'gigabytes']
_quota_resources = ['volumes', 'snapshots', 'gigabytes']
def _quota_show(quotas):
@@ -592,6 +592,10 @@ def do_quota_defaults(cs, args):
metavar='<volumes>',
type=int, default=None,
help='New value for the "volumes" quota.')
@utils.arg('--snapshots',
metavar='<snapshots>',
type=int, default=None,
help='New value for the "snapshots" quota.')
@utils.arg('--gigabytes',
metavar='<gigabytes>',
type=int, default=None,
@@ -620,6 +624,10 @@ def do_quota_class_show(cs, args):
metavar='<volumes>',
type=int, default=None,
help='New value for the "volumes" quota.')
@utils.arg('--snapshots',
metavar='<snapshots>',
type=int, default=None,
help='New value for the "snapshots" quota.')
@utils.arg('--gigabytes',
metavar='<gigabytes>',
type=int, default=None,

View File

@@ -196,6 +196,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def get_os_quota_sets_test_defaults(self):
@@ -203,6 +204,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def put_os_quota_sets_test(self, body, **kw):
@@ -213,6 +215,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 2,
'snapshots': 2,
'gigabytes': 1}})
#
@@ -224,6 +227,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'class_name': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def put_os_quota_class_sets_test(self, body, **kw):
@@ -234,6 +238,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'class_name': 'test',
'metadata_items': [],
'volumes': 2,
'snapshots': 2,
'gigabytes': 1}})
#

View File

@@ -35,13 +35,18 @@ class QuotaSetsTest(utils.TestCase):
def test_update_quota(self):
q = cs.quotas.get('test')
q.update(volumes=2)
q.update(snapshots=2)
cs.assert_called('PUT', '/os-quota-sets/test')
def test_refresh_quota(self):
q = cs.quotas.get('test')
q2 = cs.quotas.get('test')
self.assertEqual(q.volumes, q2.volumes)
self.assertEqual(q.snapshots, q2.snapshots)
q2.volumes = 0
self.assertNotEqual(q.volumes, q2.volumes)
q2.snapshots = 0
self.assertNotEqual(q.snapshots, q2.snapshots)
q2.get()
self.assertEqual(q.volumes, q2.volumes)
self.assertEqual(q.snapshots, q2.snapshots)

View File

@@ -203,6 +203,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def get_os_quota_sets_test_defaults(self):
@@ -210,6 +211,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def put_os_quota_sets_test(self, body, **kw):
@@ -220,6 +222,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'tenant_id': 'test',
'metadata_items': [],
'volumes': 2,
'snapshots': 2,
'gigabytes': 1}})
#
@@ -231,6 +234,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'class_name': 'test',
'metadata_items': [],
'volumes': 1,
'snapshots': 1,
'gigabytes': 1}})
def put_os_quota_class_sets_test(self, body, **kw):
@@ -241,6 +245,7 @@ class FakeHTTPClient(base_client.HTTPClient):
'class_name': 'test',
'metadata_items': [],
'volumes': 2,
'snapshots': 2,
'gigabytes': 1}})
#

View File

@@ -35,13 +35,18 @@ class QuotaSetsTest(utils.TestCase):
def test_update_quota(self):
q = cs.quotas.get('test')
q.update(volumes=2)
q.update(snapshots=2)
cs.assert_called('PUT', '/os-quota-sets/test')
def test_refresh_quota(self):
q = cs.quotas.get('test')
q2 = cs.quotas.get('test')
self.assertEqual(q.volumes, q2.volumes)
self.assertEqual(q.snapshots, q2.snapshots)
q2.volumes = 0
self.assertNotEqual(q.volumes, q2.volumes)
q2.snapshots = 0
self.assertNotEqual(q.snapshots, q2.snapshots)
q2.get()
self.assertEqual(q.volumes, q2.volumes)
self.assertEqual(q.snapshots, q2.snapshots)