From 0a7483ed952c82d006b0c55ce1ff77212a0c7729 Mon Sep 17 00:00:00 2001 From: Reedip Date: Wed, 18 Jan 2017 03:49:23 -0500 Subject: [PATCH] Fix Setting Quotas in Neutron Currently Quota Set command doenst work in SDK version 0.9.12 as the request formed for the Neutron API is not correct. This patch attempts to fix the same. Change-Id: Id58b05bcdbfee73cb9b93dd5533b4c7d93dd03aa Partial-Bug:#1652317 Closes-Bug:#1655445 --- openstack/network/v2/quota.py | 11 +++++++++++ openstack/tests/functional/network/v2/test_quota.py | 7 +++++++ openstack/tests/unit/network/v2/test_quota.py | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/openstack/network/v2/quota.py b/openstack/network/v2/quota.py index 8620fbaa..a77f5aac 100644 --- a/openstack/network/v2/quota.py +++ b/openstack/network/v2/quota.py @@ -58,6 +58,17 @@ class Quota(resource.Resource): #: The maximum amount of security groups you can create. *Type: int* security_groups = resource.Body('security_group', type=int) + def _prepare_request(self, requires_id=True, prepend_key=False): + _request = super(Quota, self)._prepare_request(requires_id, + prepend_key) + if self.resource_key in _request.body: + _body = _request.body[self.resource_key] + else: + _body = _request.body + if 'id' in _body: + del _body['id'] + return _request + class QuotaDefault(Quota): base_path = '/quotas/%(project)s/default' diff --git a/openstack/tests/functional/network/v2/test_quota.py b/openstack/tests/functional/network/v2/test_quota.py index 16fb87da..17f1fbb2 100644 --- a/openstack/tests/functional/network/v2/test_quota.py +++ b/openstack/tests/functional/network/v2/test_quota.py @@ -27,3 +27,10 @@ class TestQuota(base.BaseFunctionalTest): self.assertIn('security_group', qot) self.assertIn('subnetpool', qot) self.assertIn('rbac_policy', qot) + + def test_set(self): + attrs = {'network': 123456789} + self.conn.network.update_quota(**attrs) + quota_list = self.conn.network.get_quota() + for quota in quota_list: + self.assertIn('123456789', quota) diff --git a/openstack/tests/unit/network/v2/test_quota.py b/openstack/tests/unit/network/v2/test_quota.py index 0c06a54d..26b18ca4 100644 --- a/openstack/tests/unit/network/v2/test_quota.py +++ b/openstack/tests/unit/network/v2/test_quota.py @@ -67,6 +67,12 @@ class TestQuota(testtools.TestCase): self.assertEqual(EXAMPLE['l7policy'], sot.l7_policies) self.assertEqual(EXAMPLE['pool'], sot.pools) + def test_prepare_request(self): + body = {'id': 'ABCDEFGH', 'network': '12345'} + quota_obj = quota.Quota(**body) + response = quota_obj._prepare_request() + self.assertNotIn('id', response) + class TestQuotaDefault(testtools.TestCase):