Node index refactor
[ta/config-manager.git] / cmdatahandlers / src / cmdatahandlers / hosts / config.py
index 65b188b..4d46459 100644 (file)
@@ -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)
@@ -174,8 +196,24 @@ class Config(config.Config):
 
         return service_profiles[0]
 
+    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))