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:
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']:
# 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:
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)
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."""