Skip to content
Snippets Groups Projects
Commit 3f71b464 authored by Guido Trotter's avatar Guido Trotter
Browse files

ssconf.CheckMasterCandidate


This function checks that the current node is a master candidate, and
terminates otherwise. It will be used upon ganeti-confd startup.

Signed-off-by: default avatarGuido Trotter <ultrotter@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent f208978a
No related branches found
No related tags found
No related merge requests found
......@@ -279,6 +279,7 @@ EXIT_NOTCLUSTER = 5
EXIT_NOTMASTER = 11
EXIT_NODESETUP_ERROR = 12
EXIT_CONFIRMATION = 13 # need user confirmation
EXIT_NOTCANDIDATE = 14
# tags
TAG_CLUSTER = "cluster"
......
......@@ -290,3 +290,29 @@ def CheckMaster(debug, ss=None):
if debug:
sys.stderr.write("Not master, exiting.\n")
sys.exit(constants.EXIT_NOTMASTER)
def CheckMasterCandidate(debug, ss=None):
"""Checks the node setup.
If this is a master candidate, the function will return. Otherwise it will
exit with an exit code based on the node status.
"""
try:
if ss is None:
ss = SimpleStore()
myself = utils.HostInfo().name
candidates = ss.GetMasterCandidates()
except errors.ConfigurationError, err:
print "Cluster configuration incomplete: '%s'" % str(err)
sys.exit(constants.EXIT_NODESETUP_ERROR)
except errors.ResolverError, err:
sys.stderr.write("Cannot resolve my own name (%s)\n" % err.args[0])
sys.exit(constants.EXIT_NODESETUP_ERROR)
if myself not in candidates:
if debug:
sys.stderr.write("Not master candidate, exiting.\n")
sys.exit(constants.EXIT_NOTCANDIDATE)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment