import sys
import re
import os
+import errno
from ganeti import errors
from ganeti import constants
constants.SS_HYPERVISOR_LIST,
constants.SS_MAINTAIN_NODE_HEALTH,
constants.SS_UID_POOL,
+ constants.SS_NODEGROUPS,
)
_MAX_SIZE = 131072
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
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')
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.
"""
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)