diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 224fc1666c5ba636f4492676ec84132824dde220..75936904bd698e53cc134d15567124d36d92a6ad 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -4011,11 +4011,8 @@ class LUReplaceDisks(LogicalUnit): pri_node) # Step: create new storage - - minors = [None for dev in instance.disks] - logging.debug("Allocated minors %s" % (minors,)) self.proc.LogStep(3, steps_total, "allocate new storage") - for idx, dev in enumerate(instance.disks): + for dev in instance.disks: size = dev.size info("adding new local storage on %s for %s" % (new_node, dev.iv_name)) # since we *always* want to create this LV, we use the @@ -4028,20 +4025,22 @@ class LUReplaceDisks(LogicalUnit): " node '%s'" % (new_lv.logical_id[1], new_node)) - iv_names[dev.iv_name] = (dev, dev.children, minors[idx]) + # Step 4: dbrd minors and drbd setups changes + minors = [None for dev in instance.disks] + logging.debug("Allocated minors %s" % (minors,)) self.proc.LogStep(4, steps_total, "changing drbd configuration") - for dev in instance.disks: + for dev, new_minor in zip(instance.disks, minors): size = dev.size info("activating a new drbd on %s for %s" % (new_node, dev.iv_name)) # create new devices on new_node - new_minor = iv_names[dev.iv_name][2] if pri_node == dev.logical_id[0]: new_logical_id = (pri_node, new_node, dev.logical_id[2], dev.logical_id[3], new_minor) else: new_logical_id = (new_node, pri_node, dev.logical_id[2], new_minor, dev.logical_id[4]) + iv_names[dev.iv_name] = (dev, dev.children, new_logical_id) new_drbd = objects.Disk(dev_type=constants.LD_DRBD8, logical_id=new_logical_id, children=dev.children) @@ -4081,8 +4080,8 @@ class LUReplaceDisks(LogicalUnit): # if we managed to detach at least one, we update all the disks of # the instance to point to the new secondary info("updating instance configuration") - for dev in instance.disks: - dev.logical_id = (pri_node, new_node) + dev.logical_id[2:] + for dev, _, new_logical_id in iv_names.itervalues(): + dev.logical_id = new_logical_id cfg.SetDiskID(dev, pri_node) cfg.Update(instance)