X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/868a98cac08ac2e3ebf74ef6866e38a103064fb5..61413377c7a1c624c4a5f2c2ec55dbc3d8691896:/lib/ssconf.py diff --git a/lib/ssconf.py b/lib/ssconf.py index 0449f80..2eccc59 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -29,6 +29,7 @@ configuration data, which is mostly static and available to all nodes. import sys import re import os +import errno from ganeti import errors from ganeti import constants @@ -287,6 +288,7 @@ class SimpleStore(object): constants.SS_HYPERVISOR_LIST, constants.SS_MAINTAIN_NODE_HEALTH, constants.SS_UID_POOL, + constants.SS_NODEGROUPS, ) _MAX_SIZE = 131072 @@ -307,7 +309,7 @@ class SimpleStore(object): filename = self._cfg_dir + '/' + self._SS_FILEPREFIX + key return filename - def _ReadFile(self, key): + def _ReadFile(self, key, default=None): """Generic routine to read keys. This will read the file which holds the value requested. Errors @@ -318,6 +320,8 @@ class SimpleStore(object): try: data = utils.ReadFile(filename, size=self._MAX_SIZE) except EnvironmentError, err: + if err.errno == errno.ENOENT and default is not None: + return default raise errors.ConfigurationError("Can't read from the ssconf file:" " '%s'" % str(err)) data = data.rstrip('\n') @@ -423,6 +427,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. @@ -466,7 +478,8 @@ class SimpleStore(object): """ try: - return int(self._ReadFile(constants.SS_PRIMARY_IP_FAMILY)) + return int(self._ReadFile(constants.SS_PRIMARY_IP_FAMILY, + default=netutils.IP4Address.family)) except (ValueError, TypeError), err: raise errors.ConfigurationError("Error while trying to parse primary ip" " family: %s" % err)