From 8de8e68d86f2708c78f2e597e23544857a094db1 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Thu, 13 Oct 2011 14:19:08 +0200 Subject: [PATCH] rapi: Allow auto-promotion on node role change Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/rapi/client.py | 8 +++++++- lib/rapi/rlib2.py | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/rapi/client.py b/lib/rapi/client.py index 2453eb612..53f26dedd 100644 --- a/lib/rapi/client.py +++ b/lib/rapi/client.py @@ -1427,7 +1427,7 @@ class GanetiRapiClient(object): # pylint: disable=R0904 ("/%s/nodes/%s/role" % (GANETI_RAPI_VERSION, node)), None, None) - def SetNodeRole(self, node, role, force=False): + def SetNodeRole(self, node, role, force=False, auto_promote=None): """Sets the role for a node. @type node: str @@ -1436,6 +1436,9 @@ class GanetiRapiClient(object): # pylint: disable=R0904 @param role: the role to set for the node @type force: bool @param force: whether to force the role change + @type auto_promote: bool + @param auto_promote: Whether node(s) should be promoted to master candidate + if necessary @rtype: string @return: job id @@ -1445,6 +1448,9 @@ class GanetiRapiClient(object): # pylint: disable=R0904 ("force", force), ] + if auto_promote is not None: + query.append(("auto-promote", auto_promote)) + return self._SendRequest(HTTP_PUT, ("/%s/nodes/%s/role" % (GANETI_RAPI_VERSION, node)), query, role) diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index e905ec7d0..fbd1bd755 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -415,6 +415,8 @@ class R_2_nodes_name_role(baserlib.R_Generic): node_name = self.items[0] role = self.request_body + auto_promote = bool(self._checkIntVariable("auto-promote")) + if role == _NR_REGULAR: candidate = False offline = False @@ -439,6 +441,7 @@ class R_2_nodes_name_role(baserlib.R_Generic): master_candidate=candidate, offline=offline, drained=drained, + auto_promote=auto_promote, force=bool(self.useForce())) return baserlib.SubmitJob([op]) -- GitLab