X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fconfig-manager.git;a=blobdiff_plain;f=cmdatahandlers%2Fsrc%2Fcmdatahandlers%2Fhosts%2Fconfig.py;h=7547dbe194ec542a38b2ed81d8d0453b09f5a129;hp=ac86d3b47a2ddb615152d6aa222956920246a605;hb=87d5aa1e6151010af819612a0a953ee90431607e;hpb=3cb6b540af283dac09b21c64d19d8f65527ff9ac diff --git a/cmdatahandlers/src/cmdatahandlers/hosts/config.py b/cmdatahandlers/src/cmdatahandlers/hosts/config.py index ac86d3b..7547dbe 100644 --- a/cmdatahandlers/src/cmdatahandlers/hosts/config.py +++ b/cmdatahandlers/src/cmdatahandlers/hosts/config.py @@ -82,6 +82,28 @@ class Config(config.Config): cidr = netconf.get_network_cidr(hwmgmtnet, domain) utils.validate_ip_in_network(ip, cidr) + def get_hwmgmt_priv_level(self, hostname): + """get the hwmgmt IPMI privilege level. Defaults to ADMINISTRATOR + + Arguments: + + hostname: The name of the node + + Return: + + The prvilege level, or ADMINISTRATOR if unspecified + + Raise: + + ConfigError in-case of an error + """ + self._validate_hostname(hostname) + + if 'hwmgmt' not in self.config[self.ROOT][hostname]: + raise configerror.ConfigError('No hwmgmt info defined for host') + + return self.config[self.ROOT][hostname]['hwmgmt'].get('priv_level', 'ADMINISTRATOR') + def _validate_service_profiles(self, hostname): node_profiles = self.get_service_profiles(hostname) utils.validate_list_items_unique(node_profiles) @@ -146,18 +168,19 @@ class Config(config.Config): return sorted(self.config[self.ROOT].keys()) def get_labels(self, hostname): - noderole_label = "node-role.kubernetes.io/{}".format(self.get_noderole(hostname)) mandatory_labels = \ {"nodetype": self.get_nodetype(hostname), "nodeindex": self.get_nodeindex(hostname), - "nodename": self.get_nodename(hostname), - noderole_label: ""} + "nodename": self.get_nodename(hostname)} labels = self.config[self.ROOT][hostname].get('labels', {}).copy() labels.update(mandatory_labels) if self.is_sriov_enabled(hostname): labels.update({"sriov": "enabled"}) + if self.is_localstorage_used(hostname): + labels.update({"localstorage": "enabled"}) + black_list = ['name'] return {name: attributes for name, attributes in labels.iteritems() @@ -174,8 +197,29 @@ class Config(config.Config): return service_profiles[0] + def set_noderole(self): + hosts = self.get_hosts() + for host in hosts: + self.config[self.ROOT][host]['noderole'] = self.get_noderole(host) + + def set_nodeindex(self): + hostsconf = self.confman.get_hosts_config_handler() + install_host = utils.get_installation_host_name(hostsconf) + self.config[self.ROOT][install_host]['caas_nodeindex'] = 1 + + masters = self.get_service_profile_hosts('caas_master') + masters.remove(install_host) + self._set_nodeindexes(masters, 2) + self._set_nodeindexes(self.get_service_profile_hosts('caas_worker'), 1) + + def _set_nodeindexes(self, hosts, base_index): + index = base_index + for host in hosts: + self.config[self.ROOT][host]['caas_nodeindex'] = index + index += 1 + def get_nodeindex(self, hostname): - return re.search(r'[-_](\d+)$', hostname).group(1) + return self.config[self.ROOT][hostname]['caas_nodeindex'] def get_nodename(self, hostname): return "{}{}".format(self.get_nodetype(hostname), self.get_nodeindex(hostname)) @@ -196,6 +240,16 @@ class Config(config.Config): return True return False + def is_localstorage_used(self, hostname): + storageprofs = self.get_storage_profiles(hostname) + storageprofconf = self.confman.get_storage_profiles_config_handler() + for profile in storageprofs: + if "shared" in self.config[storageprofconf.ROOT][profile]: + for volume in self.config[storageprofconf.ROOT][profile]["shared"]["volumes"]: + if volume["name"] == 'caas_app': + return True + return False + def get_enabled_hosts(self): """ get the list of enabled hosts in the cloud @@ -816,21 +870,27 @@ class Config(config.Config): caasconf = self.confman.get_caas_config_handler() if caasconf.is_vnf_embedded_deployment(): return VNF_EMBEDDED_RESERVED_MEMORY - + profiles = self.get_service_profiles(hostname) if 'controller' in profiles: return DUAL_VIM_CONTROLLER_RESERVED_MEMORY if 'compute' in profiles: return DUAL_VIM_DEFAULT_RESERVED_MEMORY - return self.config.get(self.ROOT, {}).get('middleware_reserved_memory', + return self.config.get(self.ROOT, {}).get('middleware_reserved_memory', MIDDLEWARE_RESERVED_MEMORY) def set_default_reserved_memory_to_all_hosts(self, def_memory): - self.get_hosts() - for host in hosts: + for host in self.get_hosts(): self.config[self.ROOT][host]['middleware_reserved_memory'] = def_memory + def set_default_ipmi_priv_level_to_all_hosts(self, def_priv): + for host in self.get_hosts(): + if 'hwmgmt' not in self.config[self.ROOT][host]: + self.config[self.ROOT][host]['hwmgmt'] = {'priv_level': def_priv} + elif 'priv_level' not in self.config[self.ROOT][host]['hwmgmt']: + self.config[self.ROOT][host]['hwmgmt']['priv_level'] = def_priv + def _get_path_for_virtio_id(disk): disk_id = disk.get('id', '')