From 5a48bbcdee0b1900ef6ab0618006600104fbfb07 Mon Sep 17 00:00:00 2001 From: Periyasamy Palanisamy Date: Tue, 8 May 2018 17:24:10 +0200 Subject: SDNVPN-99 NAT doesn't seem to work Currently ODL is not able to accomodate both network and router in a BGPVPN instance (https://jira.opendaylight.org/browse/NETVIRT-932 - see the comment section). So until the fix is available, testing NAT functionality using router without bgpvpn instance across subnets. Change-Id: I6bedfc8e818ddd542036a87245caf4949152d66f Signed-off-by: Periyasamy Palanisamy (cherry picked from commit 8ed9f216d4bee43cc214d73377b5d8291bfb9e8c) --- sdnvpn/lib/openstack_utils.py | 22 +++++------ sdnvpn/test/functest/testcase_8.py | 77 +++++++++++++++++++++----------------- 2 files changed, 53 insertions(+), 46 deletions(-) diff --git a/sdnvpn/lib/openstack_utils.py b/sdnvpn/lib/openstack_utils.py index 990fa7c..447e87b 100644 --- a/sdnvpn/lib/openstack_utils.py +++ b/sdnvpn/lib/openstack_utils.py @@ -877,38 +877,38 @@ def create_network_full(neutron_client, logger.info("A network with name '%s' already exists..." % net_name) else: neutron_client.format = 'json' - logger.info('Creating neutron network %s...' % net_name) - network_id = create_neutron_net(neutron_client, net_name) + logger.info('Creating neutron network %s...' % net_name) + if network_id == '': + network_id = create_neutron_net(neutron_client, net_name) if not network_id: return False - logger.debug("Network '%s' created successfully" % network_id) + logger.debug('Creating Subnet....') - subnet_id = create_neutron_subnet(neutron_client, subnet_name, - cidr, network_id, dns) + if subnet_id == '': + subnet_id = create_neutron_subnet(neutron_client, subnet_name, + cidr, network_id, dns) if not subnet_id: return None - logger.debug("Subnet '%s' created successfully" % subnet_id) - logger.debug('Creating Router...') - router_id = create_neutron_router(neutron_client, router_name) + logger.debug('Creating Router...') + if router_id == '': + router_id = create_neutron_router(neutron_client, router_name) if not router_id: return None - logger.debug("Router '%s' created successfully" % router_id) + logger.debug('Adding router to subnet...') if not add_interface_router(neutron_client, router_id, subnet_id): return None - logger.debug("Interface added successfully.") logger.debug('Adding gateway to router...') if not add_gateway_router(neutron_client, router_id): return None - logger.debug("Gateway added successfully.") network_dic = {'net_id': network_id, diff --git a/sdnvpn/test/functest/testcase_8.py b/sdnvpn/test/functest/testcase_8.py index 10c0653..afdfef5 100644 --- a/sdnvpn/test/functest/testcase_8.py +++ b/sdnvpn/test/functest/testcase_8.py @@ -59,17 +59,16 @@ def main(): TESTCASE_CONFIG.subnet_1_name, TESTCASE_CONFIG.subnet_1_cidr, TESTCASE_CONFIG.router_1_name) - network_2_id = test_utils.create_net( - neutron_client, - TESTCASE_CONFIG.net_2_name) - subnet_2_id = test_utils.create_subnet( + network_2_id, subnet_2_id, router_1_id = test_utils.create_network( neutron_client, + TESTCASE_CONFIG.net_2_name, TESTCASE_CONFIG.subnet_2_name, TESTCASE_CONFIG.subnet_2_cidr, - network_2_id) + TESTCASE_CONFIG.router_1_name) interfaces.append(tuple((router_1_id, subnet_1_id))) + interfaces.append(tuple((router_1_id, subnet_2_id))) network_ids.extend([network_1_id, network_2_id]) router_ids.append(router_1_id) subnet_ids.extend([subnet_1_id, subnet_2_id]) @@ -80,13 +79,19 @@ def main(): test_utils.open_icmp(neutron_client, sg_id) test_utils.open_http_port(neutron_client, sg_id) + compute_nodes = test_utils.assert_and_get_compute_nodes(nova_client) + av_zone_1 = "nova:" + compute_nodes[0] + # spawning the VMs on the same compute because fib flow (21) entries + # are not created properly if vm1 and vm2 are attached to two + # different computes vm_2 = test_utils.create_instance( nova_client, TESTCASE_CONFIG.instance_2_name, image_id, network_2_id, sg_id, - secgroup_name=TESTCASE_CONFIG.secgroup_name) + secgroup_name=TESTCASE_CONFIG.secgroup_name, + compute_node=av_zone_1) vm_2_ip = test_utils.get_instance_ip(vm_2) u1 = test_utils.generate_ping_userdata([vm_2_ip]) @@ -97,37 +102,39 @@ def main(): network_1_id, sg_id, secgroup_name=TESTCASE_CONFIG.secgroup_name, + compute_node=av_zone_1, userdata=u1) instance_ids.extend([vm_1.id, vm_2.id]) - - results.record_action("Create VPN with eRT==iRT") - vpn_name = "sdnvpn-8" - kwargs = { - "import_targets": TESTCASE_CONFIG.targets, - "export_targets": TESTCASE_CONFIG.targets, - "route_distinguishers": TESTCASE_CONFIG.route_distinguishers, - "name": vpn_name - } - bgpvpn = test_utils.create_bgpvpn(neutron_client, **kwargs) - bgpvpn_id = bgpvpn['bgpvpn']['id'] - logger.debug("VPN created details: %s" % bgpvpn) - bgpvpn_ids.append(bgpvpn_id) - - msg = ("Associate router '%s' and net '%s' to the VPN." - % (TESTCASE_CONFIG.router_1_name, - TESTCASE_CONFIG.net_2_name)) - results.record_action(msg) - results.add_to_summary(0, "-") - - test_utils.create_router_association( - neutron_client, bgpvpn_id, router_1_id) - test_utils.create_network_association( - neutron_client, bgpvpn_id, network_2_id) - - test_utils.wait_for_bgp_router_assoc( - neutron_client, bgpvpn_id, router_1_id) - test_utils.wait_for_bgp_net_assoc( - neutron_client, bgpvpn_id, network_2_id) + # TODO: uncomment the lines 107-134 once ODL fixes + # the bug https://jira.opendaylight.org/browse/NETVIRT-932 + # results.record_action("Create VPN with eRT==iRT") + # vpn_name = "sdnvpn-8" + # kwargs = { + # "import_targets": TESTCASE_CONFIG.targets, + # "export_targets": TESTCASE_CONFIG.targets, + # "route_distinguishers": TESTCASE_CONFIG.route_distinguishers, + # "name": vpn_name + # } + # bgpvpn = test_utils.create_bgpvpn(neutron_client, **kwargs) + # bgpvpn_id = bgpvpn['bgpvpn']['id'] + # logger.debug("VPN created details: %s" % bgpvpn) + # bgpvpn_ids.append(bgpvpn_id) + + # msg = ("Associate router '%s' and net '%s' to the VPN." + # % (TESTCASE_CONFIG.router_1_name, + # TESTCASE_CONFIG.net_2_name)) + # results.record_action(msg) + # results.add_to_summary(0, "-") + + # test_utils.create_router_association( + # neutron_client, bgpvpn_id, router_1_id) + # test_utils.create_network_association( + # neutron_client, bgpvpn_id, network_2_id) + + # test_utils.wait_for_bgp_router_assoc( + # neutron_client, bgpvpn_id, router_1_id) + # test_utils.wait_for_bgp_net_assoc( + # neutron_client, bgpvpn_id, network_2_id) # Wait for VMs to get ips. instances_up = test_utils.wait_for_instances_up(vm_2) -- cgit 1.2.3-korg