summaryrefslogtreecommitdiffstats
path: root/sdnvpn/test/functest/testcase_13.py
diff options
context:
space:
mode:
Diffstat (limited to 'sdnvpn/test/functest/testcase_13.py')
-rw-r--r--sdnvpn/test/functest/testcase_13.py119
1 files changed, 66 insertions, 53 deletions
diff --git a/sdnvpn/test/functest/testcase_13.py b/sdnvpn/test/functest/testcase_13.py
index ec0459d..e15c8f1 100644
--- a/sdnvpn/test/functest/testcase_13.py
+++ b/sdnvpn/test/functest/testcase_13.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
#
# Copyright (c) 2017 All rights reserved
# This program and the accompanying materials
@@ -9,11 +9,12 @@
#
import logging
+import os
import sys
-from functest.utils import openstack_utils as os_utils
from random import randint
from sdnvpn.lib import config as sdnvpn_config
+from sdnvpn.lib import openstack_utils as os_utils
from sdnvpn.lib import utils as test_utils
from sdnvpn.lib.results import Results
@@ -25,22 +26,32 @@ TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig(
def main():
- results = Results(COMMON_CONFIG.line_length)
+ conn = os_utils.get_os_connection()
+ results = Results(COMMON_CONFIG.line_length, conn)
results.add_to_summary(0, "=")
results.add_to_summary(2, "STATUS", "SUBTEST")
results.add_to_summary(0, "=")
- nova_client = os_utils.get_nova_client()
+ if not os.path.isfile(COMMON_CONFIG.ubuntu_image_path):
+ logger.info("Downloading image")
+ image_dest_path = '/'.join(
+ COMMON_CONFIG.ubuntu_image_path.split('/')[:-1])
+ os_utils.download_url(
+ "http://artifacts.opnfv.org/sdnvpn/"
+ "ubuntu-16.04-server-cloudimg-amd64-disk1.img",
+ image_dest_path)
+ else:
+ logger.info("Using old image")
+
neutron_client = os_utils.get_neutron_client()
- glance_client = os_utils.get_glance_client()
(floatingip_ids, instance_ids, router_ids, network_ids, image_ids,
subnet_ids, interfaces, bgpvpn_ids, flavor_ids) = ([] for i in range(9))
try:
image_id = os_utils.create_glance_image(
- glance_client,
+ conn,
COMMON_CONFIG.ubuntu_image_name,
COMMON_CONFIG.ubuntu_image_path,
disk="qcow2",
@@ -52,7 +63,7 @@ def main():
flavor_ids.append(flavor_id)
network_1_id, subnet_1_id, router_1_id = test_utils.create_network(
- neutron_client,
+ conn,
TESTCASE_CONFIG.net_1_name,
TESTCASE_CONFIG.subnet_1_name,
TESTCASE_CONFIG.subnet_1_cidr,
@@ -64,10 +75,10 @@ def main():
router_ids.extend([router_1_id])
sg_id = os_utils.create_security_group_full(
- neutron_client, TESTCASE_CONFIG.secgroup_name,
+ conn, TESTCASE_CONFIG.secgroup_name,
TESTCASE_CONFIG.secgroup_descr)
- compute_nodes = test_utils.assert_and_get_compute_nodes(nova_client)
+ compute_nodes = test_utils.assert_and_get_compute_nodes(conn)
av_zone_1 = "nova:" + compute_nodes[0]
av_zone_2 = "nova:" + compute_nodes[1]
@@ -79,7 +90,7 @@ def main():
TESTCASE_CONFIG.extra_route_subnet_mask)
# boot INTANCES
vm_1 = test_utils.create_instance(
- nova_client,
+ conn,
TESTCASE_CONFIG.instance_1_name,
image_id,
network_1_id,
@@ -88,18 +99,18 @@ def main():
secgroup_name=TESTCASE_CONFIG.secgroup_name,
compute_node=av_zone_1,
userdata=u1)
- vm_1_ip = test_utils.get_instance_ip(vm_1)
+ vm_1_ip = test_utils.get_instance_ip(conn, vm_1)
- vm1_port = test_utils.get_port(neutron_client, vm_1.id)
+ vm1_port = test_utils.get_port(conn, vm_1.id)
test_utils.update_port_allowed_address_pairs(
- neutron_client,
- vm1_port['id'],
+ conn,
+ vm1_port.id,
[test_utils.AllowedAddressPair(
TESTCASE_CONFIG.extra_route_cidr,
- vm1_port['mac_address'])])
+ vm1_port.mac_address)])
vm_2 = test_utils.create_instance(
- nova_client,
+ conn,
TESTCASE_CONFIG.instance_2_name,
image_id,
network_1_id,
@@ -108,18 +119,47 @@ def main():
secgroup_name=TESTCASE_CONFIG.secgroup_name,
compute_node=av_zone_1,
userdata=u1)
- vm_2_ip = test_utils.get_instance_ip(vm_2)
+ vm_2_ip = test_utils.get_instance_ip(conn, vm_2)
- vm2_port = test_utils.get_port(neutron_client, vm_2.id)
+ vm2_port = test_utils.get_port(conn, vm_2.id)
test_utils.update_port_allowed_address_pairs(
- neutron_client,
- vm2_port['id'],
+ conn,
+ vm2_port.id,
[test_utils.AllowedAddressPair(
TESTCASE_CONFIG.extra_route_cidr,
- vm2_port['mac_address'])])
+ vm2_port.mac_address)])
test_utils.async_Wait_for_instances([vm_1, vm_2])
+ image_2_id = os_utils.create_glance_image(
+ conn, TESTCASE_CONFIG.image_name,
+ COMMON_CONFIG.image_path, disk=COMMON_CONFIG.image_format,
+ container="bare", public='public')
+ image_ids.append(image_2_id)
+ # Moved vm_3 creation before associating its network/router with
+ # bgpvpn. If VM is created after its network is associated to bgpvpn
+ # via router, then BGPVPN in ODL uses router's vrf id for newly created
+ # VMs which causes testcase to fail.
+ u3 = test_utils.generate_ping_userdata(
+ [TESTCASE_CONFIG.extra_route_ip])
+ vm_3 = test_utils.create_instance(
+ conn,
+ TESTCASE_CONFIG.instance_3_name,
+ image_2_id,
+ network_1_id,
+ sg_id,
+ flavor=COMMON_CONFIG.custom_flavor_name,
+ secgroup_name=TESTCASE_CONFIG.secgroup_name,
+ compute_node=av_zone_2,
+ userdata=u3)
+
+ instance_ids.extend([vm_1.id, vm_2.id, vm_3.id])
+
+ instance_dhcp_up = test_utils.wait_for_instances_get_dhcp(vm_3)
+
+ if (not instance_dhcp_up):
+ logger.error("vm_3 instance is down")
+
msg = ("Create VPN with multiple RDs")
results.record_action(msg)
vpn_name = "sdnvpn-" + str(randint(100000, 999999))
@@ -143,42 +183,16 @@ def main():
neutron_client, bgpvpn_id, router_1_id)
test_utils.update_router_extra_route(
- neutron_client, router_1_id,
+ conn, router_1_id,
[test_utils.ExtraRoute(TESTCASE_CONFIG.extra_route_cidr,
vm_1_ip),
test_utils.ExtraRoute(TESTCASE_CONFIG.extra_route_cidr,
vm_2_ip)])
- image_2_id = os_utils.create_glance_image(
- glance_client, TESTCASE_CONFIG.image_name,
- COMMON_CONFIG.image_path, disk=COMMON_CONFIG.image_format,
- container="bare", public='public')
- image_ids.append(image_2_id)
-
logger.info("Waiting for the VMs to connect to each other using the"
" updated network configuration")
test_utils.wait_before_subtest()
- u3 = test_utils.generate_ping_userdata(
- [TESTCASE_CONFIG.extra_route_ip])
- vm_3 = test_utils.create_instance(
- nova_client,
- TESTCASE_CONFIG.instance_3_name,
- image_2_id,
- network_1_id,
- sg_id,
- flavor=COMMON_CONFIG.custom_flavor_name,
- secgroup_name=TESTCASE_CONFIG.secgroup_name,
- compute_node=av_zone_2,
- userdata=u3)
-
- instance_ids.extend([vm_1.id, vm_2.id, vm_3.id])
-
- instance_dhcp_up = test_utils.wait_for_instances_get_dhcp(vm_3)
-
- if (not instance_dhcp_up):
- logger.error("vm_3 instance is down")
-
results.get_ping_status_target_ip(vm_3,
TESTCASE_CONFIG.extra_route_name,
TESTCASE_CONFIG.extra_route_ip,
@@ -192,10 +206,10 @@ def main():
logger.error("exception occurred while executing testcase_13: %s", e)
raise
finally:
- test_utils.update_router_no_extra_route(neutron_client, router_ids)
- test_utils.cleanup_nova(nova_client, instance_ids)
- test_utils.cleanup_glance(glance_client, image_ids)
- test_utils.cleanup_neutron(neutron_client, floatingip_ids,
+ test_utils.update_router_no_extra_route(conn, router_ids)
+ test_utils.cleanup_nova(conn, instance_ids, flavor_ids)
+ test_utils.cleanup_glance(conn, image_ids)
+ test_utils.cleanup_neutron(conn, neutron_client, floatingip_ids,
bgpvpn_ids, interfaces, subnet_ids,
router_ids, network_ids)
@@ -203,5 +217,4 @@ def main():
if __name__ == '__main__':
- logging.basicConfig(level=logging.INFO)
sys.exit(main())