diff options
| author | Eoghan Glynn <eglynn@redhat.com> | 2012-07-19 17:14:00 +0100 |
|---|---|---|
| committer | Eoghan Glynn <eglynn@redhat.com> | 2012-07-19 17:21:09 +0100 |
| commit | 39146d2e2e36ad96e8cf8b4f4bc9c426f1b80efb (patch) | |
| tree | 564d595ee72d7625c4ba58d785f5a36395dd9895 | |
| parent | 5f45eadbf2c1ea4a4cf6c9358aac269ca3f2cff6 (diff) | |
| download | nova-39146d2e2e36ad96e8cf8b4f4bc9c426f1b80efb.tar.gz nova-39146d2e2e36ad96e8cf8b4f4bc9c426f1b80efb.tar.xz nova-39146d2e2e36ad96e8cf8b4f4bc9c426f1b80efb.zip | |
Ensure 413 response for security group over-quota
Fixes LP 1021748
Instead of raising the relevant webob.exc exception directly,
we now follow the usual pattern of mapping in the FaultWrapper
middleware from an internal exception type to the corresponding
HTTP error.
Change-Id: Ifb43685e4f9b0b5bd53e74747d1f87aa5e119fb5
| -rw-r--r-- | nova/api/openstack/compute/contrib/security_groups.py | 2 | ||||
| -rw-r--r-- | nova/exception.py | 4 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_security_groups.py | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/nova/api/openstack/compute/contrib/security_groups.py b/nova/api/openstack/compute/contrib/security_groups.py index 004df4e73..1705bdd26 100644 --- a/nova/api/openstack/compute/contrib/security_groups.py +++ b/nova/api/openstack/compute/contrib/security_groups.py @@ -509,7 +509,7 @@ class NativeSecurityGroupAPI(compute.api.SecurityGroupAPI): @staticmethod def raise_over_quota(msg): - raise exc.HTTPBadRequest(explanation=msg) + raise exception.SecurityGroupLimitExceeded(msg) @staticmethod def raise_not_found(msg): diff --git a/nova/exception.py b/nova/exception.py index f70cbe48e..cdad0edd5 100644 --- a/nova/exception.py +++ b/nova/exception.py @@ -1039,6 +1039,10 @@ class KeypairLimitExceeded(QuotaError): message = _("Maximum number of key pairs exceeded") +class SecurityGroupLimitExceeded(QuotaError): + message = _("Maximum number of security groups or rules exceeded") + + class AggregateError(NovaException): message = _("Aggregate %(aggregate_id)s: action '%(action)s' " "caused an error: %(reason)s.") diff --git a/nova/tests/api/openstack/compute/contrib/test_security_groups.py b/nova/tests/api/openstack/compute/contrib/test_security_groups.py index 9e636de14..ea7d21db1 100644 --- a/nova/tests/api/openstack/compute/contrib/test_security_groups.py +++ b/nova/tests/api/openstack/compute/contrib/test_security_groups.py @@ -231,7 +231,8 @@ class TestSecurityGroups(test.TestCase): self.assertEqual(res_dict['security_group']['name'], name) sg = security_group_template() - self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, + self.assertRaises(exception.SecurityGroupLimitExceeded, + self.controller.create, req, {'security_group': sg}) def test_get_security_group_list(self): @@ -936,7 +937,8 @@ class TestSecurityGroupRules(test.TestCase): 'ip_protocol': 'tcp', 'from_port': '121', 'to_port': '121', 'parent_group_id': '2', 'group_id': '1' } - self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create, + self.assertRaises(exception.SecurityGroupLimitExceeded, + self.controller.create, req, {'security_group_rule': rule}) |
