From fb4869694726715bf8dab399ceca8e3c7497bcda Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Tue, 27 Nov 2012 12:44:03 +0100 Subject: [PATCH] ssconf: Move class-level constants to module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no good reason why these two constants should be inside the class. This patch moves them to the module so they can be used without βselfβ. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- lib/ssconf.py | 65 +++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/lib/ssconf.py b/lib/ssconf.py index 8f24f9dc7..30c9d784f 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -38,6 +38,36 @@ from ganeti import pathutils SSCONF_LOCK_TIMEOUT = 10 +#: Valid ssconf keys +_VALID_KEYS = frozenset([ + 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, + constants.SS_NODE_SECONDARY_IPS, + constants.SS_OFFLINE_NODES, + constants.SS_ONLINE_NODES, + constants.SS_PRIMARY_IP_FAMILY, + constants.SS_INSTANCE_LIST, + constants.SS_RELEASE_VERSION, + constants.SS_HYPERVISOR_LIST, + constants.SS_MAINTAIN_NODE_HEALTH, + constants.SS_UID_POOL, + constants.SS_NODEGROUPS, + constants.SS_NETWORKS, + ]) + +#: Maximum size for ssconf files +_MAX_SIZE = 128 * 1024 + class SimpleStore(object): """Interface to static cluster data. @@ -50,33 +80,6 @@ class SimpleStore(object): - keys are restricted to predefined values """ - _VALID_KEYS = ( - 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, - constants.SS_NODE_SECONDARY_IPS, - constants.SS_OFFLINE_NODES, - constants.SS_ONLINE_NODES, - constants.SS_PRIMARY_IP_FAMILY, - constants.SS_INSTANCE_LIST, - constants.SS_RELEASE_VERSION, - constants.SS_HYPERVISOR_LIST, - constants.SS_MAINTAIN_NODE_HEALTH, - constants.SS_UID_POOL, - constants.SS_NODEGROUPS, - constants.SS_NETWORKS, - ) - _MAX_SIZE = 131072 - def __init__(self, cfg_location=None): if cfg_location is None: self._cfg_dir = pathutils.DATA_DIR @@ -87,7 +90,7 @@ class SimpleStore(object): """Convert a given key into filename. """ - if key not in self._VALID_KEYS: + if key not in _VALID_KEYS: raise errors.ProgrammerError("Invalid key requested from SSConf: '%s'" % str(key)) @@ -103,7 +106,7 @@ class SimpleStore(object): """ filename = self.KeyToFilename(key) try: - data = utils.ReadFile(filename, size=self._MAX_SIZE) + data = utils.ReadFile(filename, size=_MAX_SIZE) except EnvironmentError, err: if err.errno == errno.ENOENT and default is not None: return default @@ -127,7 +130,7 @@ class SimpleStore(object): for name, value in values.iteritems(): if value and not value.endswith("\n"): value += "\n" - if len(value) > self._MAX_SIZE: + if len(value) > _MAX_SIZE: raise errors.ConfigurationError("ssconf file %s above maximum size" % name) utils.WriteFile(self.KeyToFilename(name), data=value, @@ -141,7 +144,7 @@ class SimpleStore(object): This is used for computing node replication data. """ - return [self.KeyToFilename(key) for key in self._VALID_KEYS] + return [self.KeyToFilename(key) for key in _VALID_KEYS] def GetClusterName(self): """Get the cluster name. -- GitLab