diff --git a/lib/cmdlib.py b/lib/cmdlib.py index c6850ff2f38d8639902b545ecd7c591c69341add..1fbbec5c6f9aac787a83a36dd776088edb6a4bb1 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):