From 3e83dd48ceffdf1ba57ac90fee96de09a6b54f53 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 2 Dec 2008 05:06:21 +0000 Subject: [PATCH] Prevent demotion from candidate based on pool size In gnt-cluster modify we prevent demotion from the candidate role if there are not enough master candidates left. Reviewed-by: imsnah --- lib/cmdlib.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index c6850ff2f..1fbbec5c6 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -2045,6 +2045,19 @@ class LUSetNodeParams(LogicalUnit): """ force = self.force = self.op.force + if self.op.master_candidate == False: + cp_size = self.cfg.GetClusterInfo().candidate_pool_size + node_info = self.cfg.GetAllNodesInfo().values() + num_candidates = len([node for node in node_info + if node.master_candidate]) + if num_candidates <= cp_size: + msg = ("Not enough master candidates (desired" + " %d, new value will be %d)" % (cp_size, num_candidates-1)) + if force: + self.LogWarning(msg) + else: + raise errors.OpPrereqError(msg) + return def Exec(self, feedback_fn): -- GitLab