Merge "Prevent PD subnets with incorrect IPv6 modes"

This commit is contained in:
Jenkins 2016-01-22 16:07:36 +00:00 committed by Gerrit Code Review
commit 7828ccbdb1
2 changed files with 33 additions and 2 deletions

View File

@ -521,8 +521,7 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
raise n_exc.BadRequest(resource='subnets', msg=reason)
mode_list = [constants.IPV6_SLAAC,
constants.DHCPV6_STATELESS,
attributes.ATTR_NOT_SPECIFIED]
constants.DHCPV6_STATELESS]
ra_mode = subnet.get('ipv6_ra_mode')
if ra_mode not in mode_list:

View File

@ -3000,6 +3000,38 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
res = subnet_req.get_response(self.api)
self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)
def _test_create_subnet_V6_pd_modes(self, ra_addr_mode, expect_fail=False):
cfg.CONF.set_override('ipv6_pd_enabled', True)
with self.network() as network:
data = {'subnet': {'network_id': network['network']['id'],
'ip_version': '6',
'tenant_id': network['network']['tenant_id']}}
if ra_addr_mode:
data['subnet']['ipv6_ra_mode'] = ra_addr_mode
data['subnet']['ipv6_address_mode'] = ra_addr_mode
subnet_req = self.new_create_request('subnets', data)
res = subnet_req.get_response(self.api)
if expect_fail:
self.assertEqual(webob.exc.HTTPClientError.code,
res.status_int)
else:
subnet = self.deserialize(self.fmt, res)['subnet']
self.assertEqual(constants.IPV6_PD_POOL_ID,
subnet['subnetpool_id'])
def test_create_subnet_V6_pd_slaac(self):
self._test_create_subnet_V6_pd_modes('slaac')
def test_create_subnet_V6_pd_stateless(self):
self._test_create_subnet_V6_pd_modes('dhcpv6-stateless')
def test_create_subnet_V6_pd_statefull(self):
self._test_create_subnet_V6_pd_modes('dhcpv6-statefull',
expect_fail=True)
def test_create_subnet_V6_pd_no_mode(self):
self._test_create_subnet_V6_pd_modes(None, expect_fail=True)
def test_create_2_subnets_overlapping_cidr_allowed_returns_200(self):
cidr_1 = '10.0.0.0/23'
cidr_2 = '10.0.0.0/24'