X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/89b14f05e181724ffc0666af7f2e0aa81f51b1eb..da961187f97344fde390140ebb2f10d10d334d51:/lib/ssconf.py?ds=sidebyside diff --git a/lib/ssconf.py b/lib/ssconf.py index 5e2ec04..cce1141 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -126,11 +126,17 @@ class SimpleStore(object): _SS_FILEPREFIX = "ssconf_" _VALID_KEYS = ( constants.SS_CLUSTER_NAME, + constants.SS_CLUSTER_TAGS, constants.SS_FILE_STORAGE_DIR, + constants.SS_MASTER_CANDIDATES, constants.SS_MASTER_IP, constants.SS_MASTER_NETDEV, constants.SS_MASTER_NODE, constants.SS_NODE_LIST, + constants.SS_OFFLINE_NODES, + constants.SS_ONLINE_NODES, + constants.SS_INSTANCE_LIST, + constants.SS_RELEASE_VERSION, ) _MAX_SIZE = 131072 @@ -184,9 +190,9 @@ class SimpleStore(object): ssconf_lock.Exclusive(blocking=True, timeout=SSCONF_LOCK_TIMEOUT) try: for name, value in values.iteritems(): - if not value.endswith("\n"): + if value and not value.endswith("\n"): value += "\n" - utils.WriteFile(self.KeyToFilename(name), data=value) + utils.WriteFile(self.KeyToFilename(name), data=value, mode=0444) finally: ssconf_lock.Unlock() @@ -210,6 +216,14 @@ class SimpleStore(object): """ return self._ReadFile(constants.SS_FILE_STORAGE_DIR) + def GetMasterCandidates(self): + """Return the list of master candidates. + + """ + data = self._ReadFile(constants.SS_MASTER_CANDIDATES) + nl = data.splitlines(False) + return nl + def GetMasterIP(self): """Get the IP of the master node for this cluster. @@ -246,6 +260,11 @@ def GetMasterAndMyself(ss=None): The function does not handle any errors, these should be handled in the caller (errors.ConfigurationError, errors.ResolverError). + @param ss: either a sstore.SimpleConfigReader or a + sstore.SimpleStore instance + @rtype: tuple + @return: a tuple (master node name, my own name) + """ if ss is None: ss = SimpleStore()