import errno
import logging
+from ganeti import compat
from ganeti import errors
from ganeti import constants
from ganeti import utils
SSCONF_LOCK_TIMEOUT = 10
#: Valid ssconf keys
-_VALID_KEYS = frozenset([
+_VALID_KEYS = compat.UniqueFrozenset([
constants.SS_CLUSTER_NAME,
constants.SS_CLUSTER_TAGS,
constants.SS_FILE_STORAGE_DIR,
raise errors.ConfigurationError("Can't read ssconf file %s: %s" %
(filename, str(err)))
+ def ReadAll(self):
+ """Reads all keys and returns their values.
+
+ @rtype: dict
+ @return: Dictionary, ssconf key as key, value as value
+
+ """
+ result = []
+
+ for key in _VALID_KEYS:
+ try:
+ value = self._ReadFile(key)
+ except errors.ConfigurationError:
+ # Ignore non-existing files
+ pass
+ else:
+ result.append((key, value))
+
+ return dict(result)
+
def WriteFiles(self, values, dry_run=False):
"""Writes ssconf files used by external scripts.