TLMigrateInstance: do not migrate to self
authorApollon Oikonomopoulos <apollon@noc.grnet.gr>
Fri, 13 May 2011 13:16:11 +0000 (16:16 +0300)
committerIustin Pop <iustin@google.com>
Fri, 13 May 2011 14:23:02 +0000 (16:23 +0200)
Check that the instance is not being migrated to its current primary node
during CheckPrereq. Otherwise migration is aborted because the instance is
already running and cleaned-up, which causes the running instance to be killed.

Signed-off-by: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

lib/cmdlib.py

index 8ff4b2c..67e4522 100644 (file)
@@ -6565,6 +6565,10 @@ class TLMigrateInstance(Tasklet):
       # self.target_node is already populated, either directly or by the
       # iallocator run
       target_node = self.target_node
+      if self.target_node == instance.primary_node:
+        raise errors.OpPrereqError("Cannot migrate instance %s"
+                                   " to its primary (%s)" %
+                                   (instance.name, instance.primary_node))
 
       if len(self.lu.tasklets) == 1:
         # It is safe to release locks only when we're the only tasklet