X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=functest%2Futils%2Fconfig.py;h=d91f63ac2eaadb5b09b241d314b4bddbb03a2bd8;hb=3ed570c27587e69f384a6e9ab2711d553b7dcde6;hp=4cee634945e27afb4f78100b2d67c136a51d52ef;hpb=ef43b6cbc6b445762dd7d48491dfe670bac2f710;p=functest.git diff --git a/functest/utils/config.py b/functest/utils/config.py index 4cee63494..d91f63ac2 100644 --- a/functest/utils/config.py +++ b/functest/utils/config.py @@ -1,30 +1,37 @@ -import os +#!/usr/bin/env python +import os import yaml +import six + +from functest.utils import env + class Config(object): def __init__(self): - if 'CONFIG_FUNCTEST_YAML' not in os.environ: - raise Exception('CONFIG_FUNCTEST_YAML not configed') - self.config_functest = os.environ['CONFIG_FUNCTEST_YAML'] try: - with open(self.config_functest) as f: + with open(env.ENV.CONFIG_FUNCTEST_YAML) as f: self.functest_yaml = yaml.safe_load(f) - self.parse(None, self.functest_yaml) - except: - raise Exception('Parse {} failed'.format(self.config_functest)) - - def parse(self, attr_now, left_parametes): - for param_n, param_v in left_parametes.iteritems(): - attr_further = self.get_attr_further(attr_now, param_n) - if not isinstance(param_v, dict): + self._parse(None, self.functest_yaml) + except Exception as error: + raise Exception('Parse config failed: {}'.format(str(error))) + self._set_others() + + def _parse(self, attr_now, left_parametes): + for param_n, param_v in six.iteritems(left_parametes): + attr_further = self._get_attr_further(attr_now, param_n) + if attr_further: self.__setattr__(attr_further, param_v) - else: - self.parse(attr_further, param_v) + if isinstance(param_v, dict): + self._parse(attr_further, param_v) - def get_attr_further(self, attr_now, next): + def _get_attr_further(self, attr_now, next): return attr_now if next == 'general' else ( '{}_{}'.format(attr_now, next) if attr_now else next) + def _set_others(self): + self.env_active = os.path.join(self.dir_functest_conf, "env_active") + + CONF = Config()