testcases to check static routes with dhcpv6 routers
Change-Id: I9e70353d8e5c27f80827cd14dcb896f7cbadcef0
This commit is contained in:
parent
286e68eec5
commit
7ee046b944
|
@ -49,8 +49,8 @@ class IPv6RoutersTest(feature_manager.FeatureManager):
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(IPv6RoutersTest, cls).resource_setup()
|
super(IPv6RoutersTest, cls).resource_setup()
|
||||||
|
|
||||||
def _create_ipv6_subnet(self, network, cidr, ipv6_ra_mode,
|
def _create_ipv6_subnet(self, network, cidr, ipv6_ra_mode=None,
|
||||||
ipv6_address_mode,
|
ipv6_address_mode=None,
|
||||||
router_id=None, slaac=False, enable_dhcp=False):
|
router_id=None, slaac=False, enable_dhcp=False):
|
||||||
subnet_client = self.cmgr_adm.subnets_client
|
subnet_client = self.cmgr_adm.subnets_client
|
||||||
subnet_name = network['name'] + 'sub'
|
subnet_name = network['name'] + 'sub'
|
||||||
|
@ -104,6 +104,44 @@ class IPv6RoutersTest(feature_manager.FeatureManager):
|
||||||
subnet_v6=subnet_v6)
|
subnet_v6=subnet_v6)
|
||||||
return topology_dict
|
return topology_dict
|
||||||
|
|
||||||
|
def create_topo_single_dhcpv6_network(
|
||||||
|
self, namestart, ipv6_address_mode,
|
||||||
|
ipv6_ra_mode, create_instance=True,
|
||||||
|
set_gateway=True, slaac=False,
|
||||||
|
**kwargs):
|
||||||
|
"""
|
||||||
|
Create Topo where 1 logical switches which is
|
||||||
|
connected via tier-1 router.
|
||||||
|
"""
|
||||||
|
rtr_name = data_utils.rand_name(name='tempest-router')
|
||||||
|
network_name = data_utils.rand_name(name='tempest-net')
|
||||||
|
subnet_name = data_utils.rand_name(name='tempest-subnet')
|
||||||
|
router_state = self.create_topology_router(rtr_name,
|
||||||
|
set_gateway=set_gateway,
|
||||||
|
**kwargs)
|
||||||
|
network_state = self.create_topology_network(network_name)
|
||||||
|
subnet_state = self.create_topology_subnet(subnet_name, network_state,
|
||||||
|
router_id=router_state["id"]
|
||||||
|
)
|
||||||
|
subnet_v6 = self._create_ipv6_subnet(
|
||||||
|
network_state, cidr="5200::/64", slaac=slaac,
|
||||||
|
ipv6_address_mode=ipv6_address_mode,
|
||||||
|
ipv6_ra_mode=ipv6_ra_mode,
|
||||||
|
router_id=router_state["id"])
|
||||||
|
if create_instance:
|
||||||
|
image_id = self.get_glance_image_id(["cirros", "esx"])
|
||||||
|
self.create_topology_instance(
|
||||||
|
"state_vm_1", [network_state],
|
||||||
|
create_floating_ip=True, image_id=image_id)
|
||||||
|
self.create_topology_instance(
|
||||||
|
"state_vm_2", [network_state],
|
||||||
|
create_floating_ip=True, image_id=image_id)
|
||||||
|
topology_dict = dict(router_state=router_state,
|
||||||
|
network_state=network_state,
|
||||||
|
subnet_state=subnet_state,
|
||||||
|
subnet_v6=subnet_v6)
|
||||||
|
return topology_dict
|
||||||
|
|
||||||
@decorators.attr(type=['nsxv3', 'positive'])
|
@decorators.attr(type=['nsxv3', 'positive'])
|
||||||
@decorators.idempotent_id('6526db57-c523-4879-b8ae-f50f0190f960')
|
@decorators.idempotent_id('6526db57-c523-4879-b8ae-f50f0190f960')
|
||||||
def test_single_ipv6_downlink_interface_rtr(self):
|
def test_single_ipv6_downlink_interface_rtr(self):
|
||||||
|
@ -642,3 +680,47 @@ class IPv6RoutersTest(feature_manager.FeatureManager):
|
||||||
router_client=self.cmgr_adm.routers_client,
|
router_client=self.cmgr_adm.routers_client,
|
||||||
router_id=router['id'], subnet_id=subnet['id'])
|
router_id=router['id'], subnet_id=subnet['id'])
|
||||||
self.assertEqual(subnet['id'], interface['subnet_id'])
|
self.assertEqual(subnet['id'], interface['subnet_id'])
|
||||||
|
|
||||||
|
@decorators.attr(type=['nsxv3', 'negative'])
|
||||||
|
@decorators.idempotent_id('8cc317db-4bcd-4f56-821a-9040b4a9c740')
|
||||||
|
def test_update_router_nsxv3_with_dhcpv6_static_route_via_0_0(self):
|
||||||
|
"""
|
||||||
|
Check it should not allow to add static route on router with
|
||||||
|
::/0 next hop.
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
mode = "dhcpv6-stateless"
|
||||||
|
topology_dict = self.create_topo_single_dhcpv6_network(
|
||||||
|
"rtr_update", create_instance=False, set_gateway=False,
|
||||||
|
ipv6_ra_mode=mode, ipv6_address_mode=mode, **kwargs)
|
||||||
|
router_state = topology_dict['router_state']
|
||||||
|
routes = [{
|
||||||
|
"destination": "3700::/64",
|
||||||
|
"nexthop": "::/0"
|
||||||
|
}]
|
||||||
|
router_id = router_state['id']
|
||||||
|
self.assertRaises(exceptions.BadRequest,
|
||||||
|
self.cmgr_adm.routers_client.update_router,
|
||||||
|
router_id, routes=routes)
|
||||||
|
|
||||||
|
@decorators.attr(type=['nsxv3', 'negative'])
|
||||||
|
@decorators.idempotent_id('8cc317db-4bcd-4f56-821a-9040b4a9c740')
|
||||||
|
def test_update_router_nsxv3_with_dhcpv6_stateful_static_via_0_0(self):
|
||||||
|
"""
|
||||||
|
Check it should not allow to add static route on router with
|
||||||
|
::/0 next hop.
|
||||||
|
"""
|
||||||
|
kwargs = {"admin_state_up": "True"}
|
||||||
|
mode = "dhcpv6-stateful"
|
||||||
|
topology_dict = self.create_topo_single_dhcpv6_network(
|
||||||
|
"rtr_update", create_instance=False, set_gateway=False,
|
||||||
|
ipv6_ra_mode=mode, ipv6_address_mode=mode, **kwargs)
|
||||||
|
router_state = topology_dict['router_state']
|
||||||
|
routes = [{
|
||||||
|
"destination": "3700::/64",
|
||||||
|
"nexthop": "::/0"
|
||||||
|
}]
|
||||||
|
router_id = router_state['id']
|
||||||
|
self.assertRaises(exceptions.BadRequest,
|
||||||
|
self.cmgr_adm.routers_client.update_router,
|
||||||
|
router_id, routes=routes)
|
||||||
|
|
Loading…
Reference in New Issue