From 9205a895ac0b5d60b881458a44bb157b88eac21d Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Mon, 8 Jun 2009 17:48:48 +0200
Subject: [PATCH] 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 <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
---
 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 f941fbb9b..ae07ae197 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 fba9bb7d4..dfb3e6861 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)
 
-- 
GitLab