X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=functest%2Futils%2Fconfig.py;h=3226b2d1f47deee510169f86beb413c5c59c4b49;hb=61138bfec980625bec6c219b9e27685c281e5965;hp=b5b8450105be24689705580016f40112f8d23d4b;hpb=e4ae4c3f11dff35d7a7098d215bcdde745493e95;p=functest.git diff --git a/functest/utils/config.py b/functest/utils/config.py old mode 100755 new mode 100644 index b5b845010..3226b2d1f --- a/functest/utils/config.py +++ b/functest/utils/config.py @@ -1,39 +1,72 @@ -import os +#!/usr/bin/env python +# pylint: disable=missing-docstring + +import pkg_resources import yaml -import env +import six + +from functest.utils import env -class Config(object): +class Config(): def __init__(self): try: - with open(env.ENV.CONFIG_FUNCTEST_YAML) as f: - self.functest_yaml = yaml.safe_load(f) - self._parse(None, self.functest_yaml) + with open(pkg_resources.resource_filename( + 'functest', 'ci/config_functest.yaml')) as yfile: + self.functest_yaml = yaml.safe_load(yfile) except Exception as error: - raise Exception('Parse config failed: {}'.format(str(error))) - self._set_others() + raise Exception( + 'Parse config failed: {}'.format(str(error))) from error + + @staticmethod + def _merge_dicts(dict1, dict2): + for k in set(dict1.keys()).union(dict2.keys()): + if k in dict1 and k in dict2: + if isinstance(dict1[k], dict) and isinstance(dict2[k], dict): + yield (k, dict(Config._merge_dicts(dict1[k], dict2[k]))) + else: + yield (k, dict2[k]) + elif k in dict1: + yield (k, dict1[k]) + else: + yield (k, dict2[k]) + + def patch_file(self, patch_file_path): + with open(patch_file_path) as yfile: + patch_file = yaml.safe_load(yfile) + + for key in patch_file: + if key in env.get('DEPLOY_SCENARIO'): + self.functest_yaml = dict(Config._merge_dicts( + self.functest_yaml, patch_file[key])) def _parse(self, attr_now, left_parametes): - for param_n, param_v in left_parametes.iteritems(): + 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) + setattr(self, attr_further, param_v) if isinstance(param_v, dict): self._parse(attr_further, param_v) - def _get_attr_further(self, attr_now, next): + @staticmethod + def _get_attr_further(attr_now, next): # pylint: disable=redefined-builtin 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") + def fill(self): + try: + self._parse(None, self.functest_yaml) + except Exception as error: + raise Exception( + 'Parse config failed: {}'.format(str(error))) from error CONF = Config() - -if __name__ == "__main__": - print CONF.vnf_cloudify_ims - print CONF.vnf_cloudify_ims_tenant_images - print CONF.vnf_cloudify_ims_tenant_images_centos_7 +CONF.patch_file(pkg_resources.resource_filename( + 'functest', 'ci/config_patch.yaml')) +if env.get("POD_ARCH") in ['aarch64']: + CONF.patch_file(pkg_resources.resource_filename( + 'functest', 'ci/config_aarch64_patch.yaml')) +CONF.fill()