X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/7dd999fc05acd270972bde65f1c2a918d5466144..f626cef4580cbcda4631384095cb21743edf6bbf:/lib/ssconf.py?ds=sidebyside diff --git a/lib/ssconf.py b/lib/ssconf.py index c759f8e..babd148 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -41,7 +41,7 @@ from ganeti import netutils SSCONF_LOCK_TIMEOUT = 10 -RE_VALID_SSCONF_NAME = re.compile(r'^[-_a-z0-9]+$') +RE_VALID_SSCONF_NAME = re.compile(r"^[-_a-z0-9]+$") class SimpleConfigReader(object): @@ -111,17 +111,17 @@ class SimpleConfigReader(object): self._ip_to_inst_by_link = {} self._instances_ips = [] self._inst_ips_by_link = {} - c_nparams = self._config_data['cluster']['nicparams'][constants.PP_DEFAULT] - for iname in self._config_data['instances']: - instance = self._config_data['instances'][iname] - for nic in instance['nics']: - if 'ip' in nic and nic['ip']: - params = objects.FillDict(c_nparams, nic['nicparams']) - if not params['link'] in self._inst_ips_by_link: - self._inst_ips_by_link[params['link']] = [] - self._ip_to_inst_by_link[params['link']] = {} - self._ip_to_inst_by_link[params['link']][nic['ip']] = iname - self._inst_ips_by_link[params['link']].append(nic['ip']) + c_nparams = self._config_data["cluster"]["nicparams"][constants.PP_DEFAULT] + for iname in self._config_data["instances"]: + instance = self._config_data["instances"][iname] + for nic in instance["nics"]: + if "ip" in nic and nic["ip"]: + params = objects.FillDict(c_nparams, nic["nicparams"]) + if not params["link"] in self._inst_ips_by_link: + self._inst_ips_by_link[params["link"]] = [] + self._ip_to_inst_by_link[params["link"]] = {} + self._ip_to_inst_by_link[params["link"]][nic["ip"]] = iname + self._inst_ips_by_link[params["link"]].append(nic["ip"]) self._nodes_primary_ips = [] self._mc_primary_ips = [] @@ -152,9 +152,15 @@ class SimpleConfigReader(object): def GetMasterNetdev(self): return self._config_data["cluster"]["master_netdev"] + def GetMasterNetmask(self): + return self._config_data["cluster"]["master_netmask"] + def GetFileStorageDir(self): return self._config_data["cluster"]["file_storage_dir"] + def GetSharedFileStorageDir(self): + return self._config_data["cluster"]["shared_file_storage_dir"] + def GetNodeList(self): return self._config_data["nodes"].keys() @@ -272,10 +278,12 @@ class SimpleStore(object): constants.SS_CLUSTER_NAME, constants.SS_CLUSTER_TAGS, constants.SS_FILE_STORAGE_DIR, + constants.SS_SHARED_FILE_STORAGE_DIR, constants.SS_MASTER_CANDIDATES, constants.SS_MASTER_CANDIDATES_IPS, constants.SS_MASTER_IP, constants.SS_MASTER_NETDEV, + constants.SS_MASTER_NETMASK, constants.SS_MASTER_NODE, constants.SS_NODE_LIST, constants.SS_NODE_PRIMARY_IPS, @@ -288,6 +296,7 @@ class SimpleStore(object): constants.SS_HYPERVISOR_LIST, constants.SS_MAINTAIN_NODE_HEALTH, constants.SS_UID_POOL, + constants.SS_NODEGROUPS, ) _MAX_SIZE = 131072 @@ -305,7 +314,7 @@ class SimpleStore(object): raise errors.ProgrammerError("Invalid key requested from SSConf: '%s'" % str(key)) - filename = self._cfg_dir + '/' + self._SS_FILEPREFIX + key + filename = self._cfg_dir + "/" + self._SS_FILEPREFIX + key return filename def _ReadFile(self, key, default=None): @@ -323,7 +332,7 @@ class SimpleStore(object): return default raise errors.ConfigurationError("Can't read from the ssconf file:" " '%s'" % str(err)) - data = data.rstrip('\n') + data = data.rstrip("\n") return data def WriteFiles(self, values): @@ -344,7 +353,8 @@ class SimpleStore(object): if len(value) > self._MAX_SIZE: raise errors.ConfigurationError("ssconf file %s above maximum size" % name) - utils.WriteFile(self.KeyToFilename(name), data=value, mode=0444) + utils.WriteFile(self.KeyToFilename(name), data=value, + mode=constants.SS_FILE_PERMS) finally: ssconf_lock.Unlock() @@ -368,6 +378,12 @@ class SimpleStore(object): """ return self._ReadFile(constants.SS_FILE_STORAGE_DIR) + def GetSharedFileStorageDir(self): + """Get the shared file storage dir. + + """ + return self._ReadFile(constants.SS_SHARED_FILE_STORAGE_DIR) + def GetMasterCandidates(self): """Return the list of master candidates. @@ -396,6 +412,17 @@ class SimpleStore(object): """ return self._ReadFile(constants.SS_MASTER_NETDEV) + def GetMasterNetmask(self): + """Get the master netmask. + + """ + try: + return self._ReadFile(constants.SS_MASTER_NETMASK) + except errors.ConfigurationError: + family = self.GetPrimaryIPFamily() + ipcls = netutils.IPAddress.GetClassFromIpFamily(family) + return ipcls.iplen + def GetMasterNode(self): """Get the hostname of the master node for this cluster. @@ -426,6 +453,14 @@ class SimpleStore(object): nl = data.splitlines(False) return nl + def GetNodegroupList(self): + """Return the list of nodegroups. + + """ + data = self._ReadFile(constants.SS_NODEGROUPS) + nl = data.splitlines(False) + return nl + def GetClusterTags(self): """Return the cluster tags.