From a14065acef5c1a28edf1a4c23524948cfc66078e Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Wed, 3 Aug 2011 10:43:41 +0200 Subject: [PATCH] cmdlib: Factorize getting iallocator The same logic will be used for changing an instance's group. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/cmdlib.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index a70dda0cd..eee643e1e 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -1201,6 +1201,29 @@ def _CheckIAllocatorOrNode(lu, iallocator_slot, node_slot): " iallocator") +def _GetDefaultIAllocator(cfg, iallocator): + """Decides on which iallocator to use. + + @type cfg: L{config.ConfigWriter} + @param cfg: Cluster configuration object + @type iallocator: string or None + @param iallocator: Iallocator specified in opcode + @rtype: string + @return: Iallocator name + + """ + if not iallocator: + # Use default iallocator + iallocator = cfg.GetDefaultIAllocator() + + if not iallocator: + raise errors.OpPrereqError("No iallocator was specified, neither in the" + " opcode nor as a cluster-wide default", + errors.ECODE_INVAL) + + return iallocator + + class LUClusterPostInit(LogicalUnit): """Logical unit for running hooks after cluster initialization. @@ -12070,14 +12093,7 @@ class LUGroupEvacuate(LogicalUnit): utils.CommaJoin(self.req_target_uuids)), errors.ECODE_INVAL) - if not self.op.iallocator: - # Use default iallocator - self.op.iallocator = self.cfg.GetDefaultIAllocator() - - if not self.op.iallocator: - raise errors.OpPrereqError("No iallocator was specified, neither in the" - " opcode nor as a cluster-wide default", - errors.ECODE_INVAL) + self.op.iallocator = _GetDefaultIAllocator(self.cfg, self.op.iallocator) self.share_locks = _ShareAll() self.needed_locks = { -- GitLab