From 9205a895ac0b5d60b881458a44bb157b88eac21d Mon Sep 17 00:00:00 2001 From: Iustin Pop Date: Mon, 8 Jun 2009 17:48:48 +0200 Subject: [PATCH 1/1] Convert call_blockdev_removechildren to new result This patch converts blockdev_removechildren to new result type and slightly changes a message in addchildren to match this (paired) function. Signed-off-by: Iustin Pop Reviewed-by: Guido Trotter --- lib/backend.py | 15 ++++++++------- lib/cmdlib.py | 7 ++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/backend.py b/lib/backend.py index f941fbb..ae07ae1 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1326,7 +1326,7 @@ def BlockdevAddchildren(parent_cdev, new_cdevs): """ parent_bdev = _RecursiveFindBD(parent_cdev) if parent_bdev is None: - msg = "Can't find parent device %s" % str(parent_cdev) + msg = "Can't find parent device '%s' in add children" % str(parent_cdev) logging.error("BlockdevAddchildren: %s", msg) return (False, msg) new_bdevs = [_RecursiveFindBD(disk) for disk in new_cdevs] @@ -1351,23 +1351,24 @@ def BlockdevRemovechildren(parent_cdev, new_cdevs): """ parent_bdev = _RecursiveFindBD(parent_cdev) if parent_bdev is None: - logging.error("Can't find parent in remove children: %s", parent_cdev) - return False + msg = "Can't find parent device '%s' in remove children" % str(parent_cdev) + logging.error(msg) + return (False, msg) devs = [] for disk in new_cdevs: rpath = disk.StaticDevPath() if rpath is None: bd = _RecursiveFindBD(disk) if bd is None: - logging.error("Can't find dynamic device %s while removing children", - disk) - return False + msg = "Can't find device %s while removing children" % (disk,) + logging.error(msg) + return (False, msg) else: devs.append(bd.dev_path) else: devs.append(rpath) parent_bdev.RemoveChildren(devs) - return True + return (True, None) def BlockdevGetmirrorstatus(disks): diff --git a/lib/cmdlib.py b/lib/cmdlib.py index fba9bb7..dfb3e68 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -5224,10 +5224,11 @@ class LUReplaceDisks(LogicalUnit): for dev, old_lvs, new_lvs in iv_names.itervalues(): info("detaching %s drbd from local storage" % dev.iv_name) result = self.rpc.call_blockdev_removechildren(tgt_node, dev, old_lvs) - result.Raise() - if not result.data: + msg = result.RemoteFailMsg() + if msg: raise errors.OpExecError("Can't detach drbd from local storage on node" - " %s for device %s" % (tgt_node, dev.iv_name)) + " %s for device %s: %s" % + (tgt_node, dev.iv_name, msg)) #dev.children = [] #cfg.Update(instance) -- 1.7.10.4