diff --git a/cinderclient/tests/unit/v2/fakes.py b/cinderclient/tests/unit/v2/fakes.py index c4c2710a4..fea8a3faf 100644 --- a/cinderclient/tests/unit/v2/fakes.py +++ b/cinderclient/tests/unit/v2/fakes.py @@ -539,7 +539,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'gigabytes': 1, 'backups': 1, 'backup_gigabytes': 1, - 'consistencygroups': 1}}) + 'consistencygroups': 1, + 'per_volume_gigabytes': 1, }}) def get_os_quota_sets_test_defaults(self): return (200, {}, {'quota_set': { @@ -550,7 +551,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'gigabytes': 1, 'backups': 1, 'backup_gigabytes': 1, - 'consistencygroups': 1}}) + 'consistencygroups': 1, + 'per_volume_gigabytes': 1, }}) def put_os_quota_sets_test(self, body, **kw): assert list(body) == ['quota_set'] @@ -564,7 +566,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'gigabytes': 1, 'backups': 1, 'backup_gigabytes': 1, - 'consistencygroups': 2}}) + 'consistencygroups': 2, + 'per_volume_gigabytes': 1, }}) def delete_os_quota_sets_1234(self, **kw): return (200, {}, {}) @@ -585,7 +588,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'gigabytes': 1, 'backups': 1, 'backup_gigabytes': 1, - 'consistencygroups': 1}}) + 'consistencygroups': 1, + 'per_volume_gigabytes': 1, }}) def put_os_quota_class_sets_test(self, body, **kw): assert list(body) == ['quota_class_set'] @@ -599,7 +603,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'gigabytes': 1, 'backups': 1, 'backup_gigabytes': 1, - 'consistencygroups': 2}}) + 'consistencygroups': 2, + 'per_volume_gigabytes': 1}}) # # VolumeTypes diff --git a/cinderclient/tests/unit/v2/test_quota_classes.py b/cinderclient/tests/unit/v2/test_quota_classes.py index 96ca309af..8bb675f63 100644 --- a/cinderclient/tests/unit/v2/test_quota_classes.py +++ b/cinderclient/tests/unit/v2/test_quota_classes.py @@ -31,7 +31,7 @@ class QuotaClassSetsTest(utils.TestCase): q = cs.quota_classes.get('test') q.update(volumes=2, snapshots=2, gigabytes=2000, backups=2, backup_gigabytes=2000, - consistencygroups=2) + consistencygroups=2, per_volume_gigabytes=100) cs.assert_called('PUT', '/os-quota-class-sets/test') def test_refresh_quota(self): @@ -43,6 +43,7 @@ class QuotaClassSetsTest(utils.TestCase): self.assertEqual(q.backups, q2.backups) self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes) self.assertEqual(q.consistencygroups, q2.consistencygroups) + self.assertEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) q2.volumes = 0 self.assertNotEqual(q.volumes, q2.volumes) q2.snapshots = 0 @@ -55,6 +56,8 @@ class QuotaClassSetsTest(utils.TestCase): self.assertNotEqual(q.backup_gigabytes, q2.backup_gigabytes) q2.consistencygroups = 0 self.assertNotEqual(q.consistencygroups, q2.consistencygroups) + q2.per_volume_gigabytes = 0 + self.assertNotEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) q2.get() self.assertEqual(q.volumes, q2.volumes) self.assertEqual(q.snapshots, q2.snapshots) @@ -62,3 +65,4 @@ class QuotaClassSetsTest(utils.TestCase): self.assertEqual(q.backups, q2.backups) self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes) self.assertEqual(q.consistencygroups, q2.consistencygroups) + self.assertEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) diff --git a/cinderclient/tests/unit/v2/test_quotas.py b/cinderclient/tests/unit/v2/test_quotas.py index cc70f00de..f14ff3553 100644 --- a/cinderclient/tests/unit/v2/test_quotas.py +++ b/cinderclient/tests/unit/v2/test_quotas.py @@ -40,6 +40,7 @@ class QuotaSetsTest(utils.TestCase): q.update(backups=2) q.update(backup_gigabytes=2000) q.update(consistencygroups=2) + q.update(per_volume_gigabytes=100) cs.assert_called('PUT', '/os-quota-sets/test') def test_refresh_quota(self): @@ -51,6 +52,7 @@ class QuotaSetsTest(utils.TestCase): self.assertEqual(q.backups, q2.backups) self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes) self.assertEqual(q.consistencygroups, q2.consistencygroups) + self.assertEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) q2.volumes = 0 self.assertNotEqual(q.volumes, q2.volumes) q2.snapshots = 0 @@ -63,6 +65,8 @@ class QuotaSetsTest(utils.TestCase): self.assertNotEqual(q.backup_gigabytes, q2.backup_gigabytes) q2.consistencygroups = 0 self.assertNotEqual(q.consistencygroups, q2.consistencygroups) + q2.per_volume_gigabytes = 0 + self.assertNotEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) q2.get() self.assertEqual(q.volumes, q2.volumes) self.assertEqual(q.snapshots, q2.snapshots) @@ -70,6 +74,7 @@ class QuotaSetsTest(utils.TestCase): self.assertEqual(q.backups, q2.backups) self.assertEqual(q.backup_gigabytes, q2.backup_gigabytes) self.assertEqual(q.consistencygroups, q2.consistencygroups) + self.assertEqual(q.per_volume_gigabytes, q2.per_volume_gigabytes) def test_delete_quota(self): tenant_id = 'test' diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py index 4d68aff60..25c205adf 100644 --- a/cinderclient/v2/shell.py +++ b/cinderclient/v2/shell.py @@ -892,7 +892,7 @@ def do_credentials(cs, args): _quota_resources = ['volumes', 'snapshots', 'gigabytes', 'backups', 'backup_gigabytes', - 'consistencygroups'] + 'consistencygroups', 'per_volume_gigabytes'] _quota_infos = ['Type', 'In_use', 'Reserved', 'Limit'] @@ -998,6 +998,10 @@ def do_quota_defaults(cs, args): metavar='', default=None, help='Volume type. Default=None.') +@utils.arg('--per-volume-gigabytes', + metavar='', + type=int, default=None, + help='Set max volume size limit. Default=None.') @utils.service_type('volumev2') def do_quota_update(cs, args): """Updates quotas for a tenant."""