Fix a bug in LUInstanceMultiAlloc LU
authorDimitris Bliablias <dblia@skroutz.gr>
Wed, 29 Jul 2015 11:21:11 +0000 (14:21 +0300)
committerLisa Velden <velden@google.com>
Thu, 30 Jul 2015 13:43:03 +0000 (15:43 +0200)
As of commit 804d72eb, some modifications on the LUInstanceMultiAlloc LU
resulted in breaking the instances multi allocation functionality.

In details, when using an iallocator for the instances allocation, the
'jobs' list is computed for allocations using the DRBD disk template
only and not for the rest templates, due to the wrong indentation of the
relevant code line. Furthermore, for the same reason, the allocation of
more than one instances always fails since the 'missing' set is not
computed after the processing of all the allocatable instances, as it
should do, but at the end of each instance iteration.

Signed-off-by: Dimitris Bliablias <dblia@skroutz.gr>
Signed-off-by: Lisa Velden <velden@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

lib/cmdlib/instance.py

index a22043e..967db39 100644 (file)
@@ -2094,12 +2094,12 @@ class LUInstanceMultiAlloc(NoHooksLU):
           (op.snode_uuid, op.snode) = \
             ExpandNodeUuidAndName(self.cfg, None, node_names[1])
 
-          jobs.append([op])
+        jobs.append([op])
 
-        missing = set(op2inst.keys()) - set(failed)
-        assert not missing, \
-          "Iallocator did return incomplete result: %s" % \
-          utils.CommaJoin(missing)
+      missing = set(op2inst.keys()) - set(failed)
+      assert not missing, \
+        "Iallocator did return incomplete result: %s" % \
+        utils.CommaJoin(missing)
     else:
       jobs.extend([op] for op in self.op.instances)