Support Volume Backup Quota
Python-cinderclient support update volume backup quota. Cinder server side commit for this feature was: https://review.openstack.org/#/c/111460/ blueprint volume-backup-quota Change-Id: I1fceeb9fc0eb92370e249c46749a61e4b11420b0
This commit is contained in:
@@ -385,7 +385,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def get_os_quota_sets_test_defaults(self):
|
||||
return (200, {}, {'quota_set': {
|
||||
@@ -393,7 +395,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def put_os_quota_sets_test(self, body, **kw):
|
||||
assert list(body) == ['quota_set']
|
||||
@@ -404,7 +408,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 2,
|
||||
'snapshots': 2,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def delete_os_quota_sets_1234(self, **kw):
|
||||
return (200, {}, {})
|
||||
@@ -422,7 +428,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def put_os_quota_class_sets_test(self, body, **kw):
|
||||
assert list(body) == ['quota_class_set']
|
||||
@@ -433,7 +441,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 2,
|
||||
'snapshots': 2,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
#
|
||||
# VolumeTypes
|
||||
|
@@ -29,14 +29,31 @@ class QuotaClassSetsTest(utils.TestCase):
|
||||
|
||||
def test_update_quota(self):
|
||||
q = cs.quota_classes.get('test')
|
||||
q.update(volumes=2, snapshots=2)
|
||||
q.update(volumes=2, snapshots=2, gigabytes=2000,
|
||||
backups=2, backup_gigabytes=2000)
|
||||
cs.assert_called('PUT', '/os-quota-class-sets/test')
|
||||
|
||||
def test_refresh_quota(self):
|
||||
q = cs.quota_classes.get('test')
|
||||
q2 = cs.quota_classes.get('test')
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.volumes = 0
|
||||
self.assertNotEqual(q.volumes, q2.volumes)
|
||||
q2.snapshots = 0
|
||||
self.assertNotEqual(q.snapshots, q2.snapshots)
|
||||
q2.gigabytes = 0
|
||||
self.assertNotEqual(q.gigabytes, q2.gigabytes)
|
||||
q2.backups = 0
|
||||
self.assertNotEqual(q.backups, q2.backups)
|
||||
q2.backup_gigabytes = 0
|
||||
self.assertNotEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.get()
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
|
@@ -36,6 +36,7 @@ class QuotaSetsTest(utils.TestCase):
|
||||
q = cs.quotas.get('test')
|
||||
q.update(volumes=2)
|
||||
q.update(snapshots=2)
|
||||
q.update(backups=2)
|
||||
cs.assert_called('PUT', '/os-quota-sets/test')
|
||||
|
||||
def test_refresh_quota(self):
|
||||
@@ -43,13 +44,17 @@ class QuotaSetsTest(utils.TestCase):
|
||||
q2 = cs.quotas.get('test')
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
q2.volumes = 0
|
||||
self.assertNotEqual(q.volumes, q2.volumes)
|
||||
q2.snapshots = 0
|
||||
self.assertNotEqual(q.snapshots, q2.snapshots)
|
||||
q2.backups = 0
|
||||
self.assertNotEqual(q.backups, q2.backups)
|
||||
q2.get()
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
|
||||
def test_delete_quota(self):
|
||||
tenant_id = 'test'
|
||||
|
@@ -474,7 +474,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def get_os_quota_sets_test_defaults(self):
|
||||
return (200, {}, {'quota_set': {
|
||||
@@ -482,7 +484,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def put_os_quota_sets_test(self, body, **kw):
|
||||
assert list(body) == ['quota_set']
|
||||
@@ -493,7 +497,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 2,
|
||||
'snapshots': 2,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def delete_os_quota_sets_1234(self, **kw):
|
||||
return (200, {}, {})
|
||||
@@ -511,7 +517,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 1,
|
||||
'snapshots': 1,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
def put_os_quota_class_sets_test(self, body, **kw):
|
||||
assert list(body) == ['quota_class_set']
|
||||
@@ -522,7 +530,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'metadata_items': [],
|
||||
'volumes': 2,
|
||||
'snapshots': 2,
|
||||
'gigabytes': 1}})
|
||||
'gigabytes': 1,
|
||||
'backups': 1,
|
||||
'backup_gigabytes': 1}})
|
||||
|
||||
#
|
||||
# VolumeTypes
|
||||
|
@@ -29,14 +29,31 @@ class QuotaClassSetsTest(utils.TestCase):
|
||||
|
||||
def test_update_quota(self):
|
||||
q = cs.quota_classes.get('test')
|
||||
q.update(volumes=2, snapshots=2)
|
||||
q.update(volumes=2, snapshots=2, gigabytes=2000,
|
||||
backups=2, backup_gigabytes=2000)
|
||||
cs.assert_called('PUT', '/os-quota-class-sets/test')
|
||||
|
||||
def test_refresh_quota(self):
|
||||
q = cs.quota_classes.get('test')
|
||||
q2 = cs.quota_classes.get('test')
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.volumes = 0
|
||||
self.assertNotEqual(q.volumes, q2.volumes)
|
||||
q2.snapshots = 0
|
||||
self.assertNotEqual(q.snapshots, q2.snapshots)
|
||||
q2.gigabytes = 0
|
||||
self.assertNotEqual(q.gigabytes, q2.gigabytes)
|
||||
q2.backups = 0
|
||||
self.assertNotEqual(q.backups, q2.backups)
|
||||
q2.backup_gigabytes = 0
|
||||
self.assertNotEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.get()
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
|
@@ -36,6 +36,9 @@ class QuotaSetsTest(utils.TestCase):
|
||||
q = cs.quotas.get('test')
|
||||
q.update(volumes=2)
|
||||
q.update(snapshots=2)
|
||||
q.update(gigabytes=2000)
|
||||
q.update(backups=2)
|
||||
q.update(backup_gigabytes=2000)
|
||||
cs.assert_called('PUT', '/os-quota-sets/test')
|
||||
|
||||
def test_refresh_quota(self):
|
||||
@@ -43,13 +46,25 @@ class QuotaSetsTest(utils.TestCase):
|
||||
q2 = cs.quotas.get('test')
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.volumes = 0
|
||||
self.assertNotEqual(q.volumes, q2.volumes)
|
||||
q2.snapshots = 0
|
||||
self.assertNotEqual(q.snapshots, q2.snapshots)
|
||||
q2.gigabytes = 0
|
||||
self.assertNotEqual(q.gigabytes, q2.gigabytes)
|
||||
q2.backups = 0
|
||||
self.assertNotEqual(q.backups, q2.backups)
|
||||
q2.backup_gigabytes = 0
|
||||
self.assertNotEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
q2.get()
|
||||
self.assertEqual(q.volumes, q2.volumes)
|
||||
self.assertEqual(q.snapshots, q2.snapshots)
|
||||
self.assertEqual(q.gigabytes, q2.gigabytes)
|
||||
self.assertEqual(q.backups, q2.backups)
|
||||
self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes)
|
||||
|
||||
def test_delete_quota(self):
|
||||
tenant_id = 'test'
|
||||
|
@@ -650,7 +650,8 @@ def do_credentials(cs, args):
|
||||
utils.print_dict(catalog['token'], "Token")
|
||||
|
||||
|
||||
_quota_resources = ['volumes', 'snapshots', 'gigabytes']
|
||||
_quota_resources = ['volumes', 'snapshots', 'gigabytes',
|
||||
'backups', 'backup_gigabytes']
|
||||
_quota_infos = ['Type', 'In_use', 'Reserved', 'Limit']
|
||||
|
||||
|
||||
@@ -737,6 +738,14 @@ def do_quota_defaults(cs, args):
|
||||
metavar='<gigabytes>',
|
||||
type=int, default=None,
|
||||
help='The new "gigabytes" quota value. Default=None.')
|
||||
@utils.arg('--backups',
|
||||
metavar='<backups>',
|
||||
type=int, default=None,
|
||||
help='The new "backups" quota value. Default=None.')
|
||||
@utils.arg('--backup-gigabytes',
|
||||
metavar='<backup_gigabytes>',
|
||||
type=int, default=None,
|
||||
help='The new "backup_gigabytes" quota value. Default=None.')
|
||||
@utils.arg('--volume-type',
|
||||
metavar='<volume_type_name>',
|
||||
default=None,
|
||||
|
@@ -764,7 +764,8 @@ def do_credentials(cs, args):
|
||||
utils.print_dict(catalog['token'], "Token")
|
||||
|
||||
|
||||
_quota_resources = ['volumes', 'snapshots', 'gigabytes']
|
||||
_quota_resources = ['volumes', 'snapshots', 'gigabytes',
|
||||
'backups', 'backup_gigabytes']
|
||||
_quota_infos = ['Type', 'In_use', 'Reserved', 'Limit']
|
||||
|
||||
|
||||
@@ -854,6 +855,14 @@ def do_quota_defaults(cs, args):
|
||||
metavar='<gigabytes>',
|
||||
type=int, default=None,
|
||||
help='The new "gigabytes" quota value. Default=None.')
|
||||
@utils.arg('--backups',
|
||||
metavar='<backups>',
|
||||
type=int, default=None,
|
||||
help='The new "backups" quota value. Default=None.')
|
||||
@utils.arg('--backup-gigabytes',
|
||||
metavar='<backup_gigabytes>',
|
||||
type=int, default=None,
|
||||
help='The new "backup_gigabytes" quota value. Default=None.')
|
||||
@utils.arg('--volume-type',
|
||||
metavar='<volume_type_name>',
|
||||
default=None,
|
||||
|
Reference in New Issue
Block a user