summaryrefslogtreecommitdiffstats
path: root/sdnvpn/lib/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'sdnvpn/lib/config.py')
-rw-r--r--sdnvpn/lib/config.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/sdnvpn/lib/config.py b/sdnvpn/lib/config.py
new file mode 100644
index 0000000..ac9bbe2
--- /dev/null
+++ b/sdnvpn/lib/config.py
@@ -0,0 +1,53 @@
+import yaml
+import os
+
+import functest.utils.functest_constants as ft_constants
+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 = ft_constants.SDNVPN_REPO_DIR
+ self.config_file = os.path.join(self.repo_path,
+ 'sdnvpn/test/functest/config.yaml')
+ self.keyfile_path = os.path.join(self.repo_path,
+ 'sdnvpn/artifacts/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)