Skip to content

Commit

Permalink
Use subnet id instead of wrong built-in id()
Browse files Browse the repository at this point in the history
In _validate_subnet(), built-in id() is used as param for exceptions,
this patch fixes it via using proper subnet id.

Closes-Bug: #1213930

Change-Id: I9a88f4dc7b771047f4061fb94ba65f0515afa745
  • Loading branch information
zqfan committed Aug 21, 2013
1 parent d16e185 commit 6b0c899
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
5 changes: 3 additions & 2 deletions neutron/db/db_base_plugin_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -1046,7 +1046,7 @@ def _validate_subnet(self, s):
if attributes.is_attr_set(s.get('dns_nameservers')):
if len(s['dns_nameservers']) > cfg.CONF.max_dns_nameservers:
raise q_exc.DNSNameServersExhausted(
subnet_id=id,
subnet_id=s.get('id', _('new subnet')),
quota=cfg.CONF.max_dns_nameservers)
for dns in s['dns_nameservers']:
try:
Expand All @@ -1060,7 +1060,7 @@ def _validate_subnet(self, s):
if attributes.is_attr_set(s.get('host_routes')):
if len(s['host_routes']) > cfg.CONF.max_subnet_host_routes:
raise q_exc.HostRoutesExhausted(
subnet_id=id,
subnet_id=s.get('id', _('new subnet')),
quota=cfg.CONF.max_subnet_host_routes)
# check if the routes are all valid
for rt in s['host_routes']:
Expand Down Expand Up @@ -1154,6 +1154,7 @@ def update_subnet(self, context, id, subnet):
# and 'allocation_pools' fields.
s['ip_version'] = db_subnet.ip_version
s['cidr'] = db_subnet.cidr
s['id'] = db_subnet.id
self._validate_subnet(s)

if 'gateway_ip' in s and s['gateway_ip'] is not None:
Expand Down
30 changes: 29 additions & 1 deletion neutron/tests/unit/test_db_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ def _list(self, resource, fmt=None, neutron_context=None,
def _do_side_effect(self, patched_plugin, orig, *args, **kwargs):
"""Invoked by test cases for injecting failures in plugin."""
def second_call(*args, **kwargs):
raise q_exc.NeutronException
raise q_exc.NeutronException()
patched_plugin.side_effect = second_call
return orig(*args, **kwargs)

Expand Down Expand Up @@ -3433,6 +3433,34 @@ def test_delete_subnet_with_dns_and_route(self):
res = req.get_response(self.api)
self.assertEqual(res.status_int, 204)

def _helper_test_validate_subnet(self, option, exception):
cfg.CONF.set_override(option, 0)
with self.network() as network:
subnet = {'network_id': network['network']['id'],
'cidr': '10.0.2.0/24',
'ip_version': 4,
'tenant_id': network['network']['tenant_id'],
'gateway_ip': '10.0.2.1',
'dns_nameservers': ['8.8.8.8'],
'host_routes': [{'destination': '135.207.0.0/16',
'nexthop': '1.2.3.4'}]}
plugin = NeutronManager.get_plugin()
e = self.assertRaises(exception,
plugin._validate_subnet, subnet)
self.assertThat(
str(e),
matchers.Not(matchers.Contains('built-in function id')))

def test_validate_subnet_dns_nameservers_exhausted(self):
self._helper_test_validate_subnet(
'max_dns_nameservers',
q_exc.DNSNameServersExhausted)

def test_validate_subnet_host_routes_exhausted(self):
self._helper_test_validate_subnet(
'max_subnet_host_routes',
q_exc.HostRoutesExhausted)


class DbModelTestCase(base.BaseTestCase):
"""DB model tests."""
Expand Down

0 comments on commit 6b0c899

Please sign in to comment.