The check is unnecessary because earlier the disk template is checked in
a more restrictive way. Newly the check works on disk types, but gets
rid of the redundancy.

Signed-off-by: Aaron Karper <[email protected]>
---
 lib/cmdlib/instance.py              | 17 ++++++-----------
 test/py/cmdlib/instance_unittest.py |  3 ++-
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/lib/cmdlib/instance.py b/lib/cmdlib/instance.py
index 0ad343d..9659ca7 100644
--- a/lib/cmdlib/instance.py
+++ b/lib/cmdlib/instance.py
@@ -2111,10 +2111,12 @@ class LUInstanceMove(LogicalUnit):
     assert self.instance is not None, \
       "Cannot retrieve locked instance %s" % self.op.instance_name
 
-    if self.instance.disk_template not in constants.DTS_COPYABLE:
-      raise errors.OpPrereqError("Disk template %s not suitable for copying" %
-                                 self.instance.disk_template,
-                                 errors.ECODE_STATE)
+    disks = self.cfg.GetInstanceDisks(self.instance.uuid)
+    for idx, dsk in enumerate(disks):
+      if dsk.dev_type not in constants.DTS_COPYABLE:
+        raise errors.OpPrereqError("Instance disk %d has layout %s and is not"
+                                   " suitable for moving instances"
+                                   % (idx, dsk.dev_type), errors.ECODE_STATE)
 
     target_node = self.cfg.GetNodeInfo(self.op.target_node_uuid)
     assert target_node is not None, \
@@ -2129,13 +2131,6 @@ class LUInstanceMove(LogicalUnit):
     cluster = self.cfg.GetClusterInfo()
     bep = cluster.FillBE(self.instance)
 
-    disks = self.cfg.GetInstanceDisks(self.instance.uuid)
-    for idx, dsk in enumerate(disks):
-      if dsk.dev_type not in (constants.DT_PLAIN, constants.DT_FILE,
-                              constants.DT_SHARED_FILE, constants.DT_GLUSTER):
-        raise errors.OpPrereqError("Instance disk %d has a complex layout,"
-                                   " cannot copy" % idx, errors.ECODE_STATE)
-
     CheckNodeOnline(self, target_node.uuid)
     CheckNodeNotDrained(self, target_node.uuid)
     CheckNodeVmCapable(self, target_node.uuid)
diff --git a/test/py/cmdlib/instance_unittest.py 
b/test/py/cmdlib/instance_unittest.py
index ac2f082..e22025d 100644
--- a/test/py/cmdlib/instance_unittest.py
+++ b/test/py/cmdlib/instance_unittest.py
@@ -1566,7 +1566,8 @@ class TestLUInstanceMove(CmdlibTestCase):
     op = opcodes.OpInstanceMove(instance_name=inst.name,
                                 target_node=self.node.name)
     self.ExecOpCodeExpectOpPrereqError(
-      op, "Disk template sharedfile not suitable for copying")
+      op, "Instance disk 0 has layout sharedfile and is not suitable"
+      " for moving instances")
 
   def testAlreadyOnTargetNode(self):
     inst = self.cfg.AddNewInstance()
-- 
2.1.0.rc2.206.gedb03e5

Reply via email to