Merge "Fix rule not found error in sec grp default rule API"
This commit is contained in:
@@ -161,11 +161,16 @@ class SecurityGroupDefaultRulesController(sg.SecurityGroupControllerBase):
|
||||
context = sg._authorize_context(req)
|
||||
authorize(context)
|
||||
|
||||
id = self.security_group_api.validate_id(id)
|
||||
try:
|
||||
id = self.security_group_api.validate_id(id)
|
||||
except exception.Invalid as ex:
|
||||
raise exc.HTTPBadRequest(explanation=ex.format_message())
|
||||
|
||||
rule = self.security_group_api.get_default_rule(context, id)
|
||||
|
||||
self.security_group_api.remove_default_rules(context, [rule['id']])
|
||||
try:
|
||||
rule = self.security_group_api.get_default_rule(context, id)
|
||||
self.security_group_api.remove_default_rules(context, [rule['id']])
|
||||
except exception.SecurityGroupDefaultRuleNotFound as ex:
|
||||
raise exc.HTTPNotFound(explanation=ex.format_message())
|
||||
|
||||
return webob.Response(status_int=204)
|
||||
|
||||
@@ -176,10 +181,12 @@ class SecurityGroupDefaultRulesController(sg.SecurityGroupControllerBase):
|
||||
authorize(context)
|
||||
|
||||
ret = {'security_group_default_rules': []}
|
||||
for rule in self.security_group_api.get_all_default_rules(context):
|
||||
rule_fmt = self._format_security_group_default_rule(rule)
|
||||
ret['security_group_default_rules'].append(rule_fmt)
|
||||
|
||||
try:
|
||||
for rule in self.security_group_api.get_all_default_rules(context):
|
||||
rule_fmt = self._format_security_group_default_rule(rule)
|
||||
ret['security_group_default_rules'].append(rule_fmt)
|
||||
except exception.SecurityGroupDefaultRuleNotFound as ex:
|
||||
raise exc.HTTPNotFound(explanation=ex.format_message())
|
||||
return ret
|
||||
|
||||
def _format_security_group_default_rule(self, rule):
|
||||
|
@@ -87,7 +87,7 @@ class SecurityGroupDefaultRulesController(sg.SecurityGroupControllerBase):
|
||||
|
||||
try:
|
||||
rule = self.security_group_api.get_default_rule(context, id)
|
||||
except exception.SecurityGroupNotFound as ex:
|
||||
except exception.SecurityGroupDefaultRuleNotFound as ex:
|
||||
raise exc.HTTPNotFound(explanation=ex.format_message())
|
||||
|
||||
fmt_rule = self._format_security_group_default_rule(rule)
|
||||
@@ -106,10 +106,6 @@ class SecurityGroupDefaultRulesController(sg.SecurityGroupControllerBase):
|
||||
|
||||
try:
|
||||
rule = self.security_group_api.get_default_rule(context, id)
|
||||
except exception.SecurityGroupNotFound as ex:
|
||||
raise exc.HTTPNotFound(explanation=ex.format_message())
|
||||
|
||||
try:
|
||||
self.security_group_api.remove_default_rules(context, [rule['id']])
|
||||
except exception.SecurityGroupDefaultRuleNotFound as ex:
|
||||
raise exc.HTTPNotFound(explanation=ex.format_message())
|
||||
|
@@ -4050,11 +4050,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
|
||||
return rules
|
||||
|
||||
def get_default_rule(self, context, id):
|
||||
try:
|
||||
return self.db.security_group_default_rule_get(context, id)
|
||||
except exception.NotFound:
|
||||
msg = _("Rule (%s) not found") % id
|
||||
self.raise_not_found(msg)
|
||||
return self.db.security_group_default_rule_get(context, id)
|
||||
|
||||
def validate_id(self, id):
|
||||
try:
|
||||
|
@@ -13,6 +13,7 @@
|
||||
# under the License.
|
||||
|
||||
from lxml import etree
|
||||
import mock
|
||||
from oslo.config import cfg
|
||||
import webob
|
||||
|
||||
@@ -23,6 +24,7 @@ from nova.api.openstack.compute.plugins.v3 import \
|
||||
from nova.api.openstack import wsgi
|
||||
from nova import context
|
||||
import nova.db
|
||||
from nova import exception
|
||||
from nova import test
|
||||
from nova.tests.unit.api.openstack import fakes
|
||||
|
||||
@@ -272,6 +274,16 @@ class TestSecurityGroupDefaultRulesV21(test.TestCase):
|
||||
res_dict = self.controller.index(req)
|
||||
self.assertEqual(res_dict, expected)
|
||||
|
||||
@mock.patch('nova.db.security_group_default_rule_list',
|
||||
side_effect=(exception.
|
||||
SecurityGroupDefaultRuleNotFound("Rule Not Found")))
|
||||
def test_non_existing_security_group_default_rules_list(self,
|
||||
mock_sec_grp_rule):
|
||||
req = fakes.HTTPRequest.blank(
|
||||
'/v2/fake/os-security-group-default-rules', use_admin_context=True)
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller.index, req)
|
||||
|
||||
def test_default_security_group_default_rule_show(self):
|
||||
sgr = security_group_default_rule_template(id=1)
|
||||
|
||||
@@ -292,6 +304,16 @@ class TestSecurityGroupDefaultRulesV21(test.TestCase):
|
||||
self.assertEqual(security_group_default_rule['ip_range']['cidr'],
|
||||
sgr['cidr'])
|
||||
|
||||
@mock.patch('nova.db.security_group_default_rule_get',
|
||||
side_effect=(exception.
|
||||
SecurityGroupDefaultRuleNotFound("Rule Not Found")))
|
||||
def test_non_existing_security_group_default_rule_show(self,
|
||||
mock_sec_grp_rule):
|
||||
req = fakes.HTTPRequest.blank(
|
||||
'/v2/fake/os-security-group-default-rules', use_admin_context=True)
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller.show, req, '1')
|
||||
|
||||
def test_delete_security_group_default_rule(self):
|
||||
sgr = security_group_default_rule_template(id=1)
|
||||
|
||||
@@ -317,6 +339,16 @@ class TestSecurityGroupDefaultRulesV21(test.TestCase):
|
||||
|
||||
self.assertTrue(self.called)
|
||||
|
||||
@mock.patch('nova.db.security_group_default_rule_destroy',
|
||||
side_effect=(exception.
|
||||
SecurityGroupDefaultRuleNotFound("Rule Not Found")))
|
||||
def test_non_existing_security_group_default_rule_delete(
|
||||
self, mock_sec_grp_rule):
|
||||
req = fakes.HTTPRequest.blank(
|
||||
'/v2/fake/os-security-group-default-rules', use_admin_context=True)
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller.delete, req, '1')
|
||||
|
||||
def test_security_group_ensure_default(self):
|
||||
sgr = security_group_default_rule_template(id=1)
|
||||
self.test_create_security_group_default_rule()
|
||||
|
Reference in New Issue
Block a user