Update directory path
[sdnvpn.git] / sdnvpn / lib / config.py
1 import yaml
2 import os
3
4 from functest.utils.constants import CONST
5 import functest.utils.functest_logger as ft_logger
6 import functest.utils.functest_utils as ft_utils
7
8 logger = ft_logger.Logger("sndvpn_test_config").getLogger()
9
10
11 class CommonConfig(object):
12     """
13     Common configuration parameters across testcases
14     """
15
16     def __init__(self):
17         self.repo_path = CONST.dir_repo_sdnvpn
18         self.config_file = os.path.join(self.repo_path,
19                                         'sdnvpn/test/functest/config.yaml')
20         self.keyfile_path = os.path.join(self.repo_path,
21                                          'sdnvpn/artifacts/id_rsa')
22         self.test_db = ft_utils.get_functest_config("results.test_db_url")
23         self.line_length = 90  # length for the summary table
24         self.vm_boot_timeout = 180
25         self.default_flavor = ft_utils.get_parameter_from_yaml(
26             "defaults.flavor", self.config_file)
27         self.image_filename = ft_utils.get_functest_config(
28             "general.openstack.image_file_name")
29         self.image_format = ft_utils.get_functest_config(
30             "general.openstack.image_disk_format")
31         self.image_path = '{0}/{1}'.format(
32             ft_utils.get_functest_config(
33                 "general.directories.dir_functest_data"),
34             self.image_filename)
35
36
37 class TestcaseConfig(object):
38     """
39     Configuration for a testcase.
40     Parse config.yaml into a dict and create an object out of it.
41     """
42
43     def __init__(self, testcase):
44         common_config = CommonConfig()
45         test_config = None
46         with open(common_config.config_file) as f:
47             testcases_yaml = yaml.safe_load(f)
48             test_config = testcases_yaml['testcases'].get(testcase, None)
49         if test_config is None:
50             logger.error('Test {0} configuration is not present in {1}'
51                          .format(testcase, common_config.config_file))
52         # Update class fields with configuration variables dynamically
53         self.__dict__.update(**test_config)