Refactor config global variables 63/24063/8
authorGeorge Paraskevopoulos <geopar@intracom-telecom.com>
Tue, 8 Nov 2016 12:33:19 +0000 (14:33 +0200)
committerRomanos Skiadas <rski@intracom-telecom.com>
Fri, 18 Nov 2016 14:49:19 +0000 (16:49 +0200)
- Create config.py module to handle configuration parsing
- Remove globals from testcases

Change-Id: I16ed7bb138fde2d5d3c69703e3c2e569d49f0b37
Signed-off-by: George Paraskevopoulos <geopar@intracom-telecom.com>
test/functest/config.py [new file with mode: 0644]
test/functest/config.yaml
test/functest/testcase_1.py
test/functest/testcase_2.py
test/functest/testcase_4.py
test/functest/utils.py

diff --git a/test/functest/config.py b/test/functest/config.py
new file mode 100644 (file)
index 0000000..5280a89
--- /dev/null
@@ -0,0 +1,50 @@
+import yaml
+import os
+
+import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_utils as ft_utils
+
+logger = ft_logger.Logger("sndvpn_test_config").getLogger()
+
+
+class CommonConfig(object):
+    """
+    Common configuration parameters across testcases
+    """
+    def __init__(self):
+        self.repo_path = os.path.join(os.environ['repos_dir'], 'sdnvpn')
+        self.config_file = os.path.join(self.repo_path,
+                                        'test/functest/config.yaml')
+        self.keyfile_path = os.path.join(self.repo_path,
+                                         'test/functest/id_rsa')
+        self.test_db = ft_utils.get_functest_config("results.test_db_url")
+        self.line_length = 90  # length for the summary table
+        self.vm_boot_timeout = 180
+        self.default_flavor = ft_utils.get_parameter_from_yaml(
+            "defaults.flavor", self.config_file)
+        self.image_filename = ft_utils.get_functest_config(
+            "general.openstack.image_file_name")
+        self.image_format = ft_utils.get_functest_config(
+            "general.openstack.image_disk_format")
+        self.image_path = '{0}/{1}'.format(
+            ft_utils.get_functest_config(
+                "general.directories.dir_functest_data"),
+            self.image_filename)
+
+
+class TestcaseConfig(object):
+    """
+    Configuration for a testcase.
+    Parse config.yaml into a dict and create an object out of it.
+    """
+    def __init__(self, testcase):
+        common_config = CommonConfig()
+        test_config = None
+        with open(common_config.config_file) as f:
+            testcases_yaml = yaml.safe_load(f)
+            test_config = testcases_yaml['testcases'].get(testcase, None)
+        if test_config is None:
+            logger.error('Test {0} configuration is not present in {1}'
+                         .format(testcase, common_config.config_file))
+        # Update class fields with configuration variables dynamically
+        self.__dict__.update(**test_config)
index 41996e0..dc949fb 100644 (file)
@@ -5,14 +5,14 @@ testcases:
   tempest:
       enabled: true
       description: Neutron BGPVPN tests in tempest
-      succes_criteria: 100 # all the subtests must pass
+      success_criteria: 100 # all the subtests must pass
       testname_db: functest_tempest # declared name in the test api
       # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
 
   testcase_1:
       enabled: true
       description: VPN provides connectivity between subnets
-      succes_criteria: 75 # we let fail 25% of the subtests
+      success_criteria: 75 # we let fail 25% of the subtests
       testname_db: functest_testcase_1
       instance_1_name: sdnvpn-1-1
       instance_2_name: sdnvpn-1-2
@@ -28,8 +28,8 @@ testcases:
       subnet_2_name: sdnvpn-1-2-subnet
       subnet_2_cidr: 10.10.11.0/24
       router_2_name: sdnvpn-1-2-router
-      sdnvpn_sg_name: sdnvpn-sg
-      sdnvpn_sg_descr: Security group for SDNVPN test cases
+      secgroup_name: sdnvpn-sg
+      secgroup_descr: Security group for SDNVPN test cases
       targets1: '88:88'
       targets2: '55:55'
       route_distinguishers: '11:11'
@@ -37,13 +37,18 @@ testcases:
   testcase_2:
       enabled: true
       description: Tenant separation
-      succes_criteria: 100 # all the subtests must pass
+      success_criteria: 100 # all the subtests must pass
       testname_db: functest_testcase_2
       instance_1_name: sdnvpn-2-1
       instance_2_name: sdnvpn-2-2
       instance_3_name: sdnvpn-2-3
       instance_4_name: sdnvpn-2-4
       instance_5_name: sdnvpn-2-5
+      instance_1_ip: 10.10.10.11
+      instance_2_ip: 10.10.10.12
+      instance_3_ip: 10.10.11.13
+      instance_4_ip: 10.10.10.12
+      instance_5_ip: 10.10.11.13
       image_name: sdnvpn-image
       net_1_name: sdnvpn-2-1-net
       subnet_1a_name: sdnvpn-2-1a-subnet
@@ -57,21 +62,21 @@ testcases:
       subnet_2b_name: sdnvpn-2-2b-subnet
       subnet_2b_cidr: 10.10.10.0/24
       router_2_name: sdnvpn-2-2-router
-      sdnvpn_sg_name: sdnvpn-sg
-      sdnvpn_sg_descr: Security group for SDNVPN test cases
+      secgroup_name: sdnvpn-sg
+      secgroup_descr: Security group for SDNVPN test cases
       targets1: '88:88'
       targets2: '55:55'
 
   testcase_3:
       enabled: false
       description: Data center gateway integration
-      succes_criteria: 100 # all the subtests must pass
+      success_criteria: 100 # all the subtests must pass
       testname_db: functest_testcase_3
 
   testcase_4:
       enabled: false
       description: VPN provides connectivity between subnets using router association
-      succes_criteria: 75 # we let fail 25% of the subtests
+      success_criteria: 75 # we let fail 25% of the subtests
       testname_db: functest_testcase_4
       instance_1_name: sdnvpn-4-1
       instance_2_name: sdnvpn-4-2
@@ -87,8 +92,8 @@ testcases:
       subnet_2_name: sdnvpn-4-2-subnet
       subnet_2_cidr: 10.10.11.0/24
       router_2_name: sdnvpn-4-2-router
-      sdnvpn_sg_name: sdnvpn-sg
-      sdnvpn_sg_descr: Security group for SDNVPN test cases
+      secgroup_name: sdnvpn-sg
+      secgroup_descr: Security group for SDNVPN test cases
       targets1: '88:88'
       targets2: '55:55'
       route_distinguishers: '12:12'
index aa9bc92..1d19924 100644 (file)
@@ -9,14 +9,13 @@
 #
 
 import argparse
-import os
 from random import randint
 
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 
 import utils as test_utils
+import config as sdnvpn_config
 from results import Results
 
 parser = argparse.ArgumentParser()
@@ -29,70 +28,12 @@ args = parser.parse_args()
 
 logger = ft_logger.Logger("sdnvpn-testcase-1").getLogger()
 
-REPO_PATH = os.environ['repos_dir'] + '/sdnvpn/'
-
-VM_BOOT_TIMEOUT = 180
-
-config_file = REPO_PATH + 'test/functest/config.yaml'
-
-INSTANCE_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.instance_1_name", config_file)
-INSTANCE_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.instance_2_name", config_file)
-INSTANCE_3_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.instance_3_name", config_file)
-INSTANCE_4_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.instance_4_name", config_file)
-INSTANCE_5_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.instance_5_name", config_file)
-IMAGE_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.image_name", config_file)
-ROUTE_DISTINGUISHERS = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.route_distinguishers", config_file)
-
-IMAGE_FILENAME = ft_utils.get_functest_config(
-    "general.openstack.image_file_name")
-IMAGE_FORMAT = ft_utils.get_functest_config(
-    "general.openstack.image_disk_format")
-IMAGE_PATH = ft_utils.get_functest_config(
-    "general.directories.dir_functest_data") + "/" + IMAGE_FILENAME
-
-# NEUTRON Private Network parameters
-
-NET_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.net_1_name", config_file)
-SUBNET_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.subnet_1_name", config_file)
-SUBNET_1_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.subnet_1_cidr", config_file)
-ROUTER_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.router_1_name", config_file)
-NET_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.net_2_name", config_file)
-SUBNET_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.subnet_2_name", config_file)
-SUBNET_2_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.subnet_2_cidr", config_file)
-ROUTER_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.router_2_name", config_file)
-SECGROUP_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.sdnvpn_sg_name", config_file)
-SECGROUP_DESCR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.sdnvpn_sg_descr", config_file)
-TARGETS_1 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.targets1", config_file)
-TARGETS_2 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.targets2", config_file)
-SUCCESS_CRITERIA = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.succes_criteria", config_file)
-TEST_DB = ft_utils.get_functest_config("results.test_db_url")
-
-LINE_LENGTH = 60
+COMMON_CONFIG = sdnvpn_config.CommonConfig()
+TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig('testcase_1')
 
 
 def main():
-    global LINE_LENGTH
-    results = Results(LINE_LENGTH)
+    results = Results(COMMON_CONFIG.line_length)
 
     results.add_to_summary(0, "=")
     results.add_to_summary(2, "STATUS", "SUBTEST")
@@ -103,28 +44,29 @@ def main():
     glance_client = os_utils.get_glance_client()
 
     image_id = os_utils.create_glance_image(glance_client,
-                                            IMAGE_NAME,
-                                            IMAGE_PATH,
-                                            disk=IMAGE_FORMAT,
+                                            TESTCASE_CONFIG.image_name,
+                                            COMMON_CONFIG.image_path,
+                                            disk=COMMON_CONFIG.image_format,
                                             container="bare",
                                             public=True)
     network_1_id = test_utils.create_net(neutron_client,
-                                         NET_1_NAME)
+                                         TESTCASE_CONFIG.net_1_name)
     test_utils.create_subnet(neutron_client,
-                             SUBNET_1_NAME,
-                             SUBNET_1_CIDR,
+                             TESTCASE_CONFIG.subnet_1_name,
+                             TESTCASE_CONFIG.subnet_1_cidr,
                              network_1_id)
 
     network_2_id = test_utils.create_net(neutron_client,
-                                         NET_2_NAME)
+                                         TESTCASE_CONFIG.net_2_name)
 
     test_utils.create_subnet(neutron_client,
-                             SUBNET_2_NAME,
-                             SUBNET_2_CIDR,
+                             TESTCASE_CONFIG.subnet_2_name,
+                             TESTCASE_CONFIG.subnet_2_cidr,
                              network_2_id)
 
     sg_id = os_utils.create_security_group_full(neutron_client,
-                                                SECGROUP_NAME, SECGROUP_DESCR)
+                                                TESTCASE_CONFIG.secgroup_name,
+                                                TESTCASE_CONFIG.secgroup_descr)
 
     compute_nodes = test_utils.assert_and_get_compute_nodes(nova_client)
 
@@ -132,52 +74,56 @@ def main():
     av_zone_2 = "nova:" + compute_nodes[1]
 
     # boot INTANCES
-    vm_2 = test_utils.create_instance(nova_client,
-                                      INSTANCE_2_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1)
+    vm_2 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_2_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1)
     vm_2_ip = vm_2.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_2_NAME, vm_2_ip))
-
-    vm_3 = test_utils.create_instance(nova_client,
-                                      INSTANCE_3_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2)
+                 (TESTCASE_CONFIG.instance_2_name, vm_2_ip))
+
+    vm_3 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_3_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2)
     vm_3_ip = vm_3.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_3_NAME, vm_3_ip))
-
-    vm_5 = test_utils.create_instance(nova_client,
-                                      INSTANCE_5_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2)
+                 (TESTCASE_CONFIG.instance_3_name, vm_3_ip))
+
+    vm_5 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_5_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2)
     vm_5_ip = vm_5.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_5_NAME, vm_5_ip))
+                 (TESTCASE_CONFIG.instance_5_name, vm_5_ip))
 
     # We boot vm5 first because we need vm5_ip for vm4 userdata
     u4 = test_utils.generate_ping_userdata([vm_5_ip])
-    vm_4 = test_utils.create_instance(nova_client,
-                                      INSTANCE_4_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u4)
+    vm_4 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_4_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u4)
     vm_4_ip = vm_4.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_4_NAME, vm_4_ip))
+                 (TESTCASE_CONFIG.instance_4_name, vm_4_ip))
 
     # We boot VM1 at the end because we need to get the IPs first to generate
     # the userdata
@@ -185,30 +131,34 @@ def main():
                                             vm_3_ip,
                                             vm_4_ip,
                                             vm_5_ip])
-    vm_1 = test_utils.create_instance(nova_client,
-                                      INSTANCE_1_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u1)
+    vm_1 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_1_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u1)
     vm_1_ip = vm_1.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_1_NAME, vm_1_ip))
+                 (TESTCASE_CONFIG.instance_1_name, vm_1_ip))
+
     msg = ("Create VPN with eRT<>iRT")
     logger.info(msg)
     results.add_to_summary(1, msg)
     vpn_name = "sdnvpn-" + str(randint(100000, 999999))
-    kwargs = {"import_targets": TARGETS_1,
-              "export_targets": TARGETS_2,
-              "route_distinguishers": ROUTE_DISTINGUISHERS,
-              "name": vpn_name}
+    kwargs = {
+        "import_targets": TESTCASE_CONFIG.targets1,
+        "export_targets": TESTCASE_CONFIG.targets2,
+        "route_distinguishers": TESTCASE_CONFIG.route_distinguishers,
+        "name": vpn_name
+    }
     bgpvpn = os_utils.create_bgpvpn(neutron_client, **kwargs)
     bgpvpn_id = bgpvpn['bgpvpn']['id']
     logger.debug("VPN created details: %s" % bgpvpn)
 
-    msg = ("Associate network '%s' to the VPN." % NET_1_NAME)
+    msg = ("Associate network '%s' to the VPN." % TESTCASE_CONFIG.net_1_name)
     logger.info(msg)
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
@@ -235,7 +185,7 @@ def main():
     results.get_ping_status(vm_1, vm_1_ip, vm_4, vm_4_ip,
                             expected="FAIL", timeout=30)
 
-    msg = ("Associate network '%s' to the VPN." % NET_2_NAME)
+    msg = ("Associate network '%s' to the VPN." % TESTCASE_CONFIG.net_2_name)
     logger.info(msg)
     results.add_to_summary(0, "-")
     results.add_to_summary(1, msg)
@@ -267,8 +217,8 @@ def main():
     results.add_to_summary(0, "-")
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
-    kwargs = {"import_targets": TARGETS_1,
-              "export_targets": TARGETS_1,
+    kwargs = {"import_targets": TESTCASE_CONFIG.targets1,
+              "export_targets": TESTCASE_CONFIG.targets1,
               "name": vpn_name}
     bgpvpn = os_utils.update_bgpvpn(neutron_client, bgpvpn_id, **kwargs)
 
@@ -283,7 +233,7 @@ def main():
     results.get_ping_status(vm_1, vm_1_ip, vm_5, vm_5_ip,
                             expected="PASS", timeout=30)
 
-    return results.compile_summary(SUCCESS_CRITERIA)
+    return results.compile_summary(TESTCASE_CONFIG.success_criteria)
 
 
 if __name__ == '__main__':
index dee70b4..e1b6863 100644 (file)
@@ -9,16 +9,15 @@
 #
 
 import argparse
-import os
 from random import randint
 import sys
 
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 
 import utils as test_utils
 from results import Results
+import config as sdnvpn_config
 
 parser = argparse.ArgumentParser()
 
@@ -30,85 +29,12 @@ args = parser.parse_args()
 
 logger = ft_logger.Logger("sdnvpn-testcase-2").getLogger()
 
-REPO_PATH = os.environ['repos_dir'] + '/sdnvpn/'
-
-VM_BOOT_TIMEOUT = 180
-
-config_file = REPO_PATH + 'test/functest/config.yaml'
-
-INSTANCE_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.instance_1_name", config_file)
-INSTANCE_1_IP = "10.10.10.11"
-INSTANCE_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.instance_2_name", config_file)
-INSTANCE_2_IP = "10.10.10.12"
-INSTANCE_3_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.instance_3_name", config_file)
-INSTANCE_3_IP = "10.10.11.13"
-INSTANCE_4_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.instance_4_name", config_file)
-INSTANCE_4_IP = "10.10.10.12"
-INSTANCE_5_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.instance_5_name", config_file)
-INSTANCE_5_IP = "10.10.11.13"
-IMAGE_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.image_name", config_file)
-IMAGE_FILENAME = ft_utils.get_functest_config(
-    "general.openstack.image_file_name")
-IMAGE_FORMAT = ft_utils.get_functest_config(
-    "general.openstack.image_disk_format")
-IMAGE_PATH = ft_utils.get_functest_config(
-    "general.directories.dir_functest_data") + "/" + IMAGE_FILENAME
-
-KEYFILE_PATH = REPO_PATH + 'test/functest/id_rsa'
-
-# NEUTRON Private Network parameters
-
-NET_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.net_1_name", config_file)
-SUBNET_1a_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_1a_name", config_file)
-SUBNET_1a_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_1a_cidr", config_file)
-SUBNET_1b_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_1b_name", config_file)
-SUBNET_1b_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_1b_cidr", config_file)
-ROUTER_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.router_1_name", config_file)
-NET_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.net_2_name", config_file)
-SUBNET_2a_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_2a_name", config_file)
-SUBNET_2a_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_2a_cidr", config_file)
-SUBNET_2b_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_2b_name", config_file)
-SUBNET_2b_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.subnet_2b_cidr", config_file)
-ROUTER_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.router_1_name", config_file)
-ROUTER_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.router_2_name", config_file)
-SECGROUP_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.sdnvpn_sg_name", config_file)
-SECGROUP_DESCR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.sdnvpn_sg_descr", config_file)
-TARGETS_1 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.targets1", config_file)
-TARGETS_2 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_2.targets2", config_file)
-SUCCESS_CRITERIA = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_1.succes_criteria", config_file)
-TEST_DB = ft_utils.get_functest_config("results.test_db_url")
-
-LINE_LENGTH = 90  # length for the summary table
+COMMON_CONFIG = sdnvpn_config.CommonConfig()
+TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig('testcase_2')
 
 
 def main():
-    global LINE_LENGTH
-
-    results = Results(LINE_LENGTH)
+    results = Results(COMMON_CONFIG.line_length)
 
     results.add_to_summary(0, "=")
     results.add_to_summary(2, "STATUS", "SUBTEST")
@@ -118,34 +44,40 @@ def main():
     neutron_client = os_utils.get_neutron_client()
     glance_client = os_utils.get_glance_client()
 
-    logger.debug("Using private key %s injected to the VMs." % KEYFILE_PATH)
-    keyfile = open(KEYFILE_PATH, 'r')
+    logger.debug("Using private key %s injected to the VMs."
+                 % COMMON_CONFIG.keyfile_path)
+    keyfile = open(COMMON_CONFIG.keyfile_path, 'r')
     key = keyfile.read()
     keyfile.close()
     files = {"/home/cirros/id_rsa": key}
 
     image_id = os_utils.create_glance_image(glance_client,
-                                            IMAGE_NAME,
-                                            IMAGE_PATH,
-                                            disk=IMAGE_FORMAT,
+                                            TESTCASE_CONFIG.image_name,
+                                            COMMON_CONFIG.image_path,
+                                            disk=COMMON_CONFIG.image_format,
                                             container="bare",
                                             public=True)
-    network_1_id, _, _ = test_utils.create_network(neutron_client,
-                                                   NET_1_NAME,
-                                                   SUBNET_1a_NAME,
-                                                   SUBNET_1a_CIDR,
-                                                   ROUTER_1_NAME,
-                                                   SUBNET_1b_NAME,
-                                                   SUBNET_1b_CIDR)
-    network_2_id, _, _ = test_utils.create_network(neutron_client,
-                                                   NET_2_NAME,
-                                                   SUBNET_2a_NAME,
-                                                   SUBNET_2a_CIDR,
-                                                   ROUTER_2_NAME,
-                                                   SUBNET_2b_NAME,
-                                                   SUBNET_2b_CIDR)
+    network_1_id, _, _ = test_utils.create_network(
+        neutron_client,
+        TESTCASE_CONFIG.net_1_name,
+        TESTCASE_CONFIG.subnet_1a_name,
+        TESTCASE_CONFIG.subnet_1a_cidr,
+        TESTCASE_CONFIG.router_1_name,
+        TESTCASE_CONFIG.subnet_1b_name,
+        TESTCASE_CONFIG.subnet_1b_cidr)
+
+    network_2_id, _, _ = test_utils.create_network(
+        neutron_client,
+        TESTCASE_CONFIG.net_2_name,
+        TESTCASE_CONFIG.subnet_2a_name,
+        TESTCASE_CONFIG.subnet_2a_cidr,
+        TESTCASE_CONFIG.router_2_name,
+        TESTCASE_CONFIG.subnet_2b_name,
+        TESTCASE_CONFIG.subnet_2b_cidr)
+
     sg_id = os_utils.create_security_group_full(neutron_client,
-                                                SECGROUP_NAME, SECGROUP_DESCR)
+                                                TESTCASE_CONFIG.secgroup_name,
+                                                TESTCASE_CONFIG.secgroup_descr)
 
     compute_nodes = test_utils.assert_and_get_compute_nodes(nova_client)
 
@@ -154,93 +86,103 @@ def main():
 
     # boot INTANCES
     userdata_common = test_utils.generate_userdata_common()
-    vm_2 = test_utils.create_instance(nova_client,
-                                      INSTANCE_2_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      fixed_ip=INSTANCE_2_IP,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=userdata_common)
+    vm_2 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_2_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        fixed_ip=TESTCASE_CONFIG.instance_2_ip,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=userdata_common)
     vm_2_ip = vm_2.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_2_NAME, vm_2_ip))
-
-    vm_3 = test_utils.create_instance(nova_client,
-                                      INSTANCE_3_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      fixed_ip=INSTANCE_3_IP,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2,
-                                      userdata=userdata_common)
+                 (TESTCASE_CONFIG.instance_2_name, vm_2_ip))
+
+    vm_3 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_3_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        fixed_ip=TESTCASE_CONFIG.instance_3_ip,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2,
+        userdata=userdata_common)
     vm_3_ip = vm_3.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_3_NAME, vm_3_ip))
-
-    vm_5 = test_utils.create_instance(nova_client,
-                                      INSTANCE_5_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      fixed_ip=INSTANCE_5_IP,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2,
-                                      userdata=userdata_common)
+                 (TESTCASE_CONFIG.instance_3_name, vm_3_ip))
+
+    vm_5 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_5_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        fixed_ip=TESTCASE_CONFIG.instance_5_ip,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2,
+        userdata=userdata_common)
     vm_5_ip = vm_5.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_5_NAME, vm_5_ip))
+                 (TESTCASE_CONFIG.instance_5_name, vm_5_ip))
 
     # We boot vm5 first because we need vm5_ip for vm4 userdata
     u4 = test_utils.generate_userdata_with_ssh(
-        [INSTANCE_1_IP, INSTANCE_3_IP, INSTANCE_5_IP])
-    vm_4 = test_utils.create_instance(nova_client,
-                                      INSTANCE_4_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      fixed_ip=INSTANCE_4_IP,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u4,
-                                      files=files)
+        [TESTCASE_CONFIG.instance_1_ip,
+         TESTCASE_CONFIG.instance_3_ip,
+         TESTCASE_CONFIG.instance_5_ip])
+    vm_4 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_4_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        fixed_ip=TESTCASE_CONFIG.instance_4_ip,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u4,
+        files=files)
     vm_4_ip = vm_4.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_4_NAME, vm_4_ip))
+                 (TESTCASE_CONFIG.instance_4_name, vm_4_ip))
 
     # We boot VM1 at the end because we need to get the IPs first to generate
     # the userdata
     u1 = test_utils.generate_userdata_with_ssh(
-        [INSTANCE_2_IP, INSTANCE_3_IP, INSTANCE_4_IP, INSTANCE_5_IP])
-    vm_1 = test_utils.create_instance(nova_client,
-                                      INSTANCE_1_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      fixed_ip=INSTANCE_1_IP,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u1,
-                                      files=files)
+        [TESTCASE_CONFIG.instance_2_ip,
+         TESTCASE_CONFIG.instance_3_ip,
+         TESTCASE_CONFIG.instance_4_ip,
+         TESTCASE_CONFIG.instance_5_ip])
+    vm_1 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_1_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        fixed_ip=TESTCASE_CONFIG.instance_1_ip,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u1,
+        files=files)
     vm_1_ip = vm_1.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_1_NAME, vm_1_ip))
+                 (TESTCASE_CONFIG.instance_1_name, vm_1_ip))
 
     msg = ("Create VPN1 with eRT=iRT")
     logger.info(msg)
     results.add_to_summary(1, msg)
     vpn1_name = "sdnvpn-1-" + str(randint(100000, 999999))
-    kwargs = {"import_targets": TARGETS_2,
-              "export_targets": TARGETS_2,
-              "route_targets": TARGETS_2,
+    kwargs = {"import_targets": TESTCASE_CONFIG.targets2,
+              "export_targets": TESTCASE_CONFIG.targets2,
+              "route_targets": TESTCASE_CONFIG.targets2,
               "name": vpn1_name}
     bgpvpn1 = os_utils.create_bgpvpn(neutron_client, **kwargs)
     bgpvpn1_id = bgpvpn1['bgpvpn']['id']
     logger.debug("VPN1 created details: %s" % bgpvpn1)
 
-    msg = ("Associate network '%s' to the VPN." % NET_1_NAME)
+    msg = ("Associate network '%s' to the VPN." % TESTCASE_CONFIG.net_1_name)
     logger.info(msg)
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
@@ -263,25 +205,31 @@ def main():
 
     # 10.10.10.12 should return sdnvpn-2 to sdnvpn-1
     results.check_ssh_output(
-        vm_1, vm_1_ip, vm_2, vm_2_ip, expected=INSTANCE_2_NAME, timeout=200)
+        vm_1, vm_1_ip,
+        vm_2, vm_2_ip,
+        expected=TESTCASE_CONFIG.instance_2_name,
+        timeout=200)
     # 10.10.11.13 should return sdnvpn-3 to sdnvpn-1
     results.check_ssh_output(
-        vm_1, vm_1_ip, vm_3, vm_3_ip, expected=INSTANCE_3_NAME, timeout=30)
+        vm_1, vm_1_ip,
+        vm_3, vm_3_ip,
+        expected=TESTCASE_CONFIG.instance_3_name,
+        timeout=30)
 
     results.add_to_summary(0, "-")
     msg = ("Create VPN2 with eRT=iRT")
     logger.info(msg)
     results.add_to_summary(1, msg)
     vpn2_name = "sdnvpn-2-" + str(randint(100000, 999999))
-    kwargs = {"import_targets": TARGETS_1,
-              "export_targets": TARGETS_1,
-              "route_targets": TARGETS_1,
+    kwargs = {"import_targets": TESTCASE_CONFIG.targets1,
+              "export_targets": TESTCASE_CONFIG.targets1,
+              "route_targets": TESTCASE_CONFIG.targets1,
               "name": vpn2_name}
     bgpvpn2 = os_utils.create_bgpvpn(neutron_client, **kwargs)
     bgpvpn2_id = bgpvpn2['bgpvpn']['id']
     logger.debug("VPN created details: %s" % bgpvpn2)
 
-    msg = ("Associate network '%s' to the VPN2." % NET_2_NAME)
+    msg = ("Associate network '%s' to the VPN2." % TESTCASE_CONFIG.net_2_name)
     logger.info(msg)
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
@@ -298,13 +246,16 @@ def main():
 
     # 10.10.11.13 should return sdnvpn-5 to sdnvpn-4
     results.check_ssh_output(
-        vm_4, vm_4_ip, vm_5, vm_5_ip, expected=INSTANCE_5_NAME, timeout=30)
+        vm_4, vm_4_ip,
+        vm_5, vm_5_ip,
+        expected=TESTCASE_CONFIG.instance_5_name,
+        timeout=30)
 
     # 10.10.10.11 should return "not reachable" to sdnvpn-4
     results.check_ssh_output(
         vm_4, vm_4_ip, vm_1, vm_1_ip, expected="not reachable", timeout=30)
 
-    return results.compile_summary(SUCCESS_CRITERIA)
+    return results.compile_summary(TESTCASE_CONFIG.success_criteria)
 
 
 if __name__ == '__main__':
index e49c774..6866b1d 100644 (file)
@@ -9,15 +9,14 @@
 #
 
 import argparse
-import os
 from random import randint
 
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 
 import utils as test_utils
 from results import Results
+import config as sdnvpn_config
 
 parser = argparse.ArgumentParser()
 
@@ -29,70 +28,12 @@ args = parser.parse_args()
 
 logger = ft_logger.Logger("sdnvpn-testcase-4").getLogger()
 
-REPO_PATH = os.environ['repos_dir'] + '/sdnvpn/'
-
-VM_BOOT_TIMEOUT = 180
-
-config_file = REPO_PATH + 'test/functest/config.yaml'
-
-INSTANCE_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.instance_1_name", config_file)
-INSTANCE_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.instance_2_name", config_file)
-INSTANCE_3_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.instance_3_name", config_file)
-INSTANCE_4_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.instance_4_name", config_file)
-INSTANCE_5_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.instance_5_name", config_file)
-IMAGE_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.image_name", config_file)
-IMAGE_FILENAME = ft_utils.get_functest_config(
-    "general.openstack.image_file_name")
-IMAGE_FORMAT = ft_utils.get_functest_config(
-    "general.openstack.image_disk_format")
-IMAGE_PATH = ft_utils.get_functest_config(
-    "general.directories.dir_functest_data") + "/" + IMAGE_FILENAME
-
-# NEUTRON Private Network parameters
-
-NET_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.net_1_name", config_file)
-SUBNET_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.subnet_1_name", config_file)
-SUBNET_1_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.subnet_1_cidr", config_file)
-ROUTER_1_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.router_1_name", config_file)
-NET_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.net_2_name", config_file)
-SUBNET_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.subnet_2_name", config_file)
-SUBNET_2_CIDR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.subnet_2_cidr", config_file)
-ROUTER_2_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.router_2_name", config_file)
-SECGROUP_NAME = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.sdnvpn_sg_name", config_file)
-SECGROUP_DESCR = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.sdnvpn_sg_descr", config_file)
-TARGETS_1 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.targets1", config_file)
-TARGETS_2 = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.targets2", config_file)
-ROUTE_DISTINGUISHERS = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.route_distinguishers", config_file)
-SUCCESS_CRITERIA = ft_utils.get_parameter_from_yaml(
-    "testcases.testcase_4.succes_criteria", config_file)
-TEST_DB = ft_utils.get_functest_config("results.test_db_url")
-
-LINE_LENGTH = 60  # length for the summary table
+COMMON_CONFIG = sdnvpn_config.CommonConfig()
+TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig('testcase_4')
 
 
 def main():
-    global LINE_LENGTH
-
-    results = Results(LINE_LENGTH)
+    results = Results(COMMON_CONFIG.line_length)
 
     results.add_to_summary(0, "=")
     results.add_to_summary(2, "STATUS", "SUBTEST")
@@ -103,27 +44,29 @@ def main():
     glance_client = os_utils.get_glance_client()
 
     image_id = os_utils.create_glance_image(glance_client,
-                                            IMAGE_NAME,
-                                            IMAGE_PATH,
-                                            disk=IMAGE_FORMAT,
+                                            TESTCASE_CONFIG.image_name,
+                                            COMMON_CONFIG.image_path,
+                                            disk=COMMON_CONFIG.image_format,
                                             container="bare",
                                             public=True)
-    network_1_id, _, router_1_id = test_utils.create_network(neutron_client,
-                                                             NET_1_NAME,
-                                                             SUBNET_1_NAME,
-                                                             SUBNET_1_CIDR,
-                                                             ROUTER_1_NAME)
-    # the network that is net-assoc'd cannot have a router
-    # because ODL doesn't support it
-    network_2_id = test_utils.create_net(neutron_client,
-                                         NET_2_NAME)
+    network_1_id, _, router_1_id = test_utils.create_network(
+        neutron_client,
+        TESTCASE_CONFIG.net_1_name,
+        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)
     test_utils.create_subnet(neutron_client,
-                             SUBNET_2_NAME,
-                             SUBNET_2_CIDR,
+                             TESTCASE_CONFIG.subnet_2_name,
+                             TESTCASE_CONFIG.subnet_2_cidr,
                              network_2_id)
 
     sg_id = os_utils.create_security_group_full(neutron_client,
-                                                SECGROUP_NAME, SECGROUP_DESCR)
+                                                TESTCASE_CONFIG.secgroup_name,
+                                                TESTCASE_CONFIG.secgroup_descr)
 
     compute_nodes = test_utils.assert_and_get_compute_nodes(nova_client)
 
@@ -131,52 +74,56 @@ def main():
     av_zone_2 = "nova:" + compute_nodes[1]
 
     # boot INTANCES
-    vm_2 = test_utils.create_instance(nova_client,
-                                      INSTANCE_2_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1)
+    vm_2 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_2_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1)
     vm_2_ip = vm_2.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_2_NAME, vm_2_ip))
-
-    vm_3 = test_utils.create_instance(nova_client,
-                                      INSTANCE_3_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2)
+                 (TESTCASE_CONFIG.instance_2_name, vm_2_ip))
+
+    vm_3 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_3_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2)
     vm_3_ip = vm_3.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_3_NAME, vm_3_ip))
-
-    vm_5 = test_utils.create_instance(nova_client,
-                                      INSTANCE_5_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_2)
+                 (TESTCASE_CONFIG.instance_3_name, vm_3_ip))
+
+    vm_5 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_5_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_2)
     vm_5_ip = vm_5.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_5_NAME, vm_5_ip))
+                 (TESTCASE_CONFIG.instance_5_name, vm_5_ip))
 
     # We boot vm5 first because we need vm5_ip for vm4 userdata
     u4 = test_utils.generate_ping_userdata([vm_5_ip])
-    vm_4 = test_utils.create_instance(nova_client,
-                                      INSTANCE_4_NAME,
-                                      image_id,
-                                      network_2_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u4)
+    vm_4 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_4_name,
+        image_id,
+        network_2_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u4)
     vm_4_ip = vm_4.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_4_NAME, vm_4_ip))
+                 (TESTCASE_CONFIG.instance_4_name, vm_4_ip))
 
     # We boot VM1 at the end because we need to get the IPs first to generate
     # the userdata
@@ -184,30 +131,31 @@ def main():
                                             vm_3_ip,
                                             vm_4_ip,
                                             vm_5_ip])
-    vm_1 = test_utils.create_instance(nova_client,
-                                      INSTANCE_1_NAME,
-                                      image_id,
-                                      network_1_id,
-                                      sg_id,
-                                      secgroup_name=SECGROUP_NAME,
-                                      compute_node=av_zone_1,
-                                      userdata=u1)
+    vm_1 = test_utils.create_instance(
+        nova_client,
+        TESTCASE_CONFIG.instance_1_name,
+        image_id,
+        network_1_id,
+        sg_id,
+        secgroup_name=TESTCASE_CONFIG.secgroup_name,
+        compute_node=av_zone_1,
+        userdata=u1)
     vm_1_ip = vm_1.networks.itervalues().next()[0]
     logger.debug("Instance '%s' booted successfully. IP='%s'." %
-                 (INSTANCE_1_NAME, vm_1_ip))
+                 (TESTCASE_CONFIG.instance_1_name, vm_1_ip))
     msg = ("Create VPN with eRT<>iRT")
     logger.info(msg)
     results.add_to_summary(1, msg)
     vpn_name = "sdnvpn-" + str(randint(100000, 999999))
-    kwargs = {"import_targets": TARGETS_1,
-              "export_targets": TARGETS_2,
-              "route_distinguishers": ROUTE_DISTINGUISHERS,
+    kwargs = {"import_targets": TESTCASE_CONFIG.targets1,
+              "export_targets": TESTCASE_CONFIG.targets2,
+              "route_distinguishers": TESTCASE_CONFIG.route_distinguishers,
               "name": vpn_name}
     bgpvpn = os_utils.create_bgpvpn(neutron_client, **kwargs)
     bgpvpn_id = bgpvpn['bgpvpn']['id']
     logger.debug("VPN created details: %s" % bgpvpn)
 
-    msg = ("Associate router '%s' to the VPN." % ROUTER_1_NAME)
+    msg = ("Associate router '%s' to the VPN." % TESTCASE_CONFIG.router_1_name)
     logger.info(msg)
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
@@ -234,7 +182,7 @@ def main():
     results.get_ping_status(vm_1, vm_1_ip, vm_4, vm_4_ip,
                             expected="FAIL", timeout=30)
 
-    msg = ("Associate network '%s' to the VPN." % NET_2_NAME)
+    msg = ("Associate network '%s' to the VPN." % TESTCASE_CONFIG.net_2_name)
     logger.info(msg)
     results.add_to_summary(0, "-")
     results.add_to_summary(1, msg)
@@ -266,8 +214,8 @@ def main():
     results.add_to_summary(0, "-")
     results.add_to_summary(1, msg)
     results.add_to_summary(0, "-")
-    kwargs = {"import_targets": TARGETS_1,
-              "export_targets": TARGETS_1,
+    kwargs = {"import_targets": TESTCASE_CONFIG.targets1,
+              "export_targets": TESTCASE_CONFIG.targets1,
               "name": vpn_name}
     bgpvpn = os_utils.update_bgpvpn(neutron_client, bgpvpn_id, **kwargs)
 
@@ -285,7 +233,7 @@ def main():
     results.add_to_summary(0, "=")
     logger.info("\n%s" % results.summary)
 
-    return results.compile_summary(SUCCESS_CRITERIA)
+    return results.compile_summary(TESTCASE_CONFIG.success_criteria)
 
 
 if __name__ == '__main__':
index b75cb3b..351797b 100644 (file)
@@ -9,21 +9,16 @@
 #
 import sys
 import time
-import os
 
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 import re
 
+import config as sdnvpn_config
 
 logger = ft_logger.Logger("sndvpn_test_utils").getLogger()
 
-REPO_PATH = os.environ['repos_dir'] + '/sdnvpn/'
-config_file = REPO_PATH + 'test/functest/config.yaml'
-
-DEFAULT_FLAVOR = ft_utils.get_parameter_from_yaml(
-    "defaults.flavor", config_file)
+common_config = sdnvpn_config.CommonConfig()
 
 
 def create_net(neutron_client, name):
@@ -94,7 +89,7 @@ def create_instance(nova_client,
                     **kwargs
                     ):
     if 'flavor' not in kwargs:
-        kwargs['flavor'] = DEFAULT_FLAVOR
+        kwargs['flavor'] = common_config.default_flavor
 
     logger.info("Creating instance '%s'..." % name)
     logger.debug(