Merge "Fix rule not found error in sec grp default rule API"

This commit is contained in:
Jenkins
2014-11-18 20:30:46 +00:00
committed by Gerrit Code Review
4 changed files with 49 additions and 18 deletions

View File

@@ -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):

View File

@@ -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())

View File

@@ -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:

View File

@@ -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()