X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=cmdatahandlers%2Fsrc%2Fcmdatahandlers%2Fcaas%2Fconfig.py;h=7a2afb2e41e2264eaa95b5908aff82be3da6c3e6;hb=fa06747c17ef39c108972f2efb24596960dd8243;hp=8ef80816c77f6267c91e18d8e5677d6e0a4e70f8;hpb=bdd5ac8de14f638347b1cb2ba4d4cc027a41f6b9;p=ta%2Fconfig-manager.git diff --git a/cmdatahandlers/src/cmdatahandlers/caas/config.py b/cmdatahandlers/src/cmdatahandlers/caas/config.py index 8ef8081..7a2afb2 100644 --- a/cmdatahandlers/src/cmdatahandlers/caas/config.py +++ b/cmdatahandlers/src/cmdatahandlers/caas/config.py @@ -18,6 +18,8 @@ from cmdatahandlers.api import configerror from serviceprofiles import profiles import yaml import jinja2 +import string +from random import choice CAAS_CONFIG_FILE_PATH = "/etc/cmframework/config/" CAAS_CONFIG_FILE = "caas.yaml" @@ -26,6 +28,12 @@ VNF_EMBEDDED_SOFT_EVICTION_THRESHOLD = "300Mi" BM_SOFT_EVICTION_THRESHOLD = "4Gi" VNF_EMBEDDED_HARD_EVICTION_THRESHOLD = "200Mi" BM_HARD_EVICTION_THRESHOLD = "2Gi" +ADMIN_PWD_LENGTH = 20 +DEFAULT_CAAS_INFRA_LOG_TYPE = 'elasticsearch' +AUDIT_DISK_LIMIT = 0.87 +CAAS_AUDIT_DISK_RATIO = 0.25 +DEFAULT_VALUES_MAP = { "docker0_cidr": "127.17.0.1/16", + "oam_cidr": "10.244.0.0/16" } class Config(config.Config): @@ -39,7 +47,8 @@ class Config(config.Config): def init(self): pass - def validate(self): + @staticmethod + def validate(): print("validate") def flavour_set(self): @@ -48,20 +57,32 @@ class Config(config.Config): for host in hostsconf.get_hosts(): if 'caas_master' in hostsconf.get_service_profiles(host): caas_masters.append(host) - - if len(caas_masters) > 1: - return "multi" + return "multi" if len(caas_masters) > 1 else "single" + + def get_caas_max_audit_size(self): + if self.is_caas_deployment(): + return self.get_audit_disk_limit()*self.get_audit_disk_ratio() else: - return "single" + return 0 def set_dynamic_config(self): if utils.is_virtualized(): self.config[self.ROOT]['vnf_embedded_deployment'] = self.get_vnf_flag() user_conf = self.confman.get_users_config_handler() - self.config[self.ROOT]['helm_home'] = "/home/" + user_conf.get_admin_user() + "/.helm" - self.config[self.ROOT]['flavour'] = self.flavour_set() - if not self.config[self.ROOT].get('dns_domain', ""): - self.config[self.ROOT]['dns_domain'] = DEFAULT_CAAS_DNS_DOMAIN + self.set_caas_parameter('helm_home', "/home/{}/.helm".format(user_conf.get_admin_user())) + self.set_caas_parameter('flavour', self.flavour_set()) + self.config[self.ROOT]['caas_max_audit_size'] = self.get_caas_max_audit_size() + admin_pwd = self.get_caas_parameter('admin_password') + self.config[self.ROOT]['admin_password'] = \ + admin_pwd if admin_pwd != '' else self.generate_pwd(ADMIN_PWD_LENGTH) + if not self.get_caas_parameter('dns_domain'): + self.set_caas_parameter('dns_domain', DEFAULT_CAAS_DNS_DOMAIN) + if not self.get_caas_parameter('infra_log_store'): + self.set_caas_parameter('infra_log_store', DEFAULT_CAAS_INFRA_LOG_TYPE) + if not self.get_caas_parameter('log_forwarding'): + self.set_caas_parameter('log_forwarding', []) + hostsconf = self.confman.get_hosts_config_handler() + hostsconf.set_nodeindex() def set_static_config(self): try: @@ -75,25 +96,41 @@ class Config(config.Config): except jinja2.exceptions.TemplateNotFound: return except Exception: - raise configerror.ConfigError("Unexpected issue occured!") - - def _template_config(self, template, base_config, initial_data): + raise configerror.ConfigError("Unexpected issue has occured!") + + def set_post_config(self): + self.config[self.ROOT]['swift_credential'] = \ + dict( + user=self.get_caas_parameter('swift_credential').get('user'), + tenant=self.get_caas_parameter('swift_credential').get('tenant'), + password=self.generate_pwd(ADMIN_PWD_LENGTH) + ) + + def set_default_values_to_optional_params(self): + for parameter_name, default_value in DEFAULT_VALUES_MAP.iteritems(): + if self.config[self.ROOT].get(parameter_name, '') == '': + self.config[self.ROOT][parameter_name] = default_value + + @staticmethod + def _template_config(template, base_config, initial_data): config_data = initial_data.copy() config_data.update(base_config) - outputText = template.render(config_data) - previousOutputText = "" - while outputText != previousOutputText: - config_data = yaml.load(outputText) + output_text = template.render(config_data) + previous_output_text = "" + while output_text != previous_output_text: + config_data = yaml.load(output_text) config_data.update(base_config) - outputText = template.render(config_data) - previousOutputText = outputText - return yaml.load(outputText) + output_text = template.render(config_data) + previous_output_text = output_text + return yaml.load(output_text) def add_defaults(self): if not self.config.get('cloud.caas', ''): return self.set_dynamic_config() self.set_static_config() + self.set_default_values_to_optional_params() + self.set_post_config() def is_vnf_embedded_deployment(self): return self.get_caas_only() and self.get_vnf_flag() @@ -159,6 +196,17 @@ class Config(config.Config): def get_caas_parameter(self, parameter): return self.config.get(self.ROOT, {}).get(parameter, '') + def set_caas_parameter(self, parameter, value): + self.config[self.ROOT][parameter] = value + + def get_admin_password(self): + return self.config.get(self.ROOT, {}).get('admin_password') + + @staticmethod + def generate_pwd(pwd_length): + character_pool = string.ascii_letters + string.digits + return ''.join(choice(character_pool) for i in range(pwd_length)) + def get_kubernetes_domain(self): return 'kubernetes.default.svc.{}'.format( self.config.get(self.ROOT, {}).get('dns_domain', '')) @@ -174,3 +222,9 @@ class Config(config.Config): return VNF_EMBEDDED_HARD_EVICTION_THRESHOLD else: return BM_HARD_EVICTION_THRESHOLD + + def get_audit_disk_ratio(self): + return CAAS_AUDIT_DISK_RATIO + + def get_audit_disk_limit(self): + return AUDIT_DISK_LIMIT