Return 409 for second firewall creation

Second firewall creation returns 500, but it is an expected behavior
of firewall reference implementation and an internal server error
should not be returned.

Change-Id: I9f537b238007d35172e2504591d9d3568ba3a41a
Closes-Bug: #1301105
This commit is contained in:
Akihiro Motoki 2014-04-02 11:34:01 +09:00 committed by Gerrit Code Review
parent d7d9738c8e
commit dd2aea87c8
2 changed files with 7 additions and 6 deletions

View File

@ -130,7 +130,7 @@ class FirewallAgentApi(proxy.RpcProxy):
)
class FirewallCountExceeded(n_exception.NeutronException):
class FirewallCountExceeded(n_exception.Conflict):
"""Reference implementation specific exception for firewall count.

View File

@ -21,6 +21,7 @@
import contextlib
import mock
from webob import exc
from neutron import context
from neutron.extensions import firewall
@ -198,7 +199,7 @@ class TestFirewallPluginBase(test_db_firewall.TestFirewallDBPlugin):
res = self._create_firewall(
None, 'firewall2', description='test',
firewall_policy_id=None, admin_state_up=True)
self.assertEqual(res.status_int, 500)
self.assertEqual(res.status_int, exc.HTTPConflict.code)
def test_create_firewall_admin_not_affected_by_other_tenant(self):
# Create fw with admin after creating fw with other tenant
@ -245,7 +246,7 @@ class TestFirewallPluginBase(test_db_firewall.TestFirewallDBPlugin):
data = {'firewall': {'name': name}}
req = self.new_update_request('firewalls', data, fw_id)
res = req.get_response(self.ext_api)
self.assertEqual(res.status_int, 409)
self.assertEqual(res.status_int, exc.HTTPConflict.code)
def test_update_firewall_policy_fails_when_firewall_pending(self):
name = "new_firewall1"
@ -261,7 +262,7 @@ class TestFirewallPluginBase(test_db_firewall.TestFirewallDBPlugin):
req = self.new_update_request('firewall_policies',
data, fwp_id)
res = req.get_response(self.ext_api)
self.assertEqual(res.status_int, 409)
self.assertEqual(res.status_int, exc.HTTPConflict.code)
def test_update_firewall_rule_fails_when_firewall_pending(self):
with self.firewall_rule(name='fwr1') as fr:
@ -281,7 +282,7 @@ class TestFirewallPluginBase(test_db_firewall.TestFirewallDBPlugin):
req = self.new_update_request('firewall_rules',
data, fr_id)
res = req.get_response(self.ext_api)
self.assertEqual(res.status_int, 409)
self.assertEqual(res.status_int, exc.HTTPConflict.code)
def test_delete_firewall(self):
ctx = context.get_admin_context()
@ -315,7 +316,7 @@ class TestFirewallPluginBase(test_db_firewall.TestFirewallDBPlugin):
fw_id = fw['firewall']['id']
req = self.new_delete_request('firewalls', fw_id)
res = req.get_response(self.ext_api)
self.assertEqual(res.status_int, 204)
self.assertEqual(res.status_int, exc.HTTPNoContent.code)
self.assertRaises(firewall.FirewallNotFound,
self.plugin.get_firewall,
ctx, fw_id)