From 938bde86d2831eff1c20ab4bfbb5885b94f79667 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Fri, 16 Jul 2010 19:44:06 +0200
Subject: [PATCH] QA: Test instance migration via CLI and RAPI

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 qa/ganeti-qa.py   |  6 ++++++
 qa/qa-sample.json |  1 +
 qa/qa_instance.py | 14 ++++++++++++++
 qa/qa_rapi.py     |  8 ++++++++
 4 files changed, 29 insertions(+)

diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index a9816129d..12c39c041 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -254,6 +254,12 @@ def RunHardwareFailureTests(instance, pnode, snode):
   if qa_config.TestEnabled('instance-failover'):
     RunTest(qa_instance.TestInstanceFailover, instance)
 
+  if qa_config.TestEnabled("instance-migrate"):
+    RunTest(qa_instance.TestInstanceMigrate, instance)
+
+    if qa_rapi.Enabled():
+      RunTest(qa_rapi.TestRapiInstanceMigrate, instance)
+
   if qa_config.TestEnabled('instance-replace-disks'):
     othernode = qa_config.AcquireNode(exclude=[pnode, snode])
     try:
diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index 68669c05f..fe42edf56 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -72,6 +72,7 @@
     "instance-import": true,
     "instance-info": true,
     "instance-list": true,
+    "instance-migrate": true,
     "instance-modify": true,
     "instance-reboot": true,
     "instance-reinstall": true,
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index 28b246cb2..411b72c81 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -160,6 +160,20 @@ def TestInstanceFailover(instance):
                        utils.ShellQuoteArgs(cmd)).wait(), 0)
 
 
+def TestInstanceMigrate(instance):
+  """gnt-instance migrate"""
+  master = qa_config.GetMasterNode()
+
+  cmd = ["gnt-instance", "migrate", "--force", instance["name"]]
+  AssertEqual(StartSSH(master["primary"],
+                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+
+  # ... and back
+  cmd = ["gnt-instance", "migrate", "--force", instance["name"]]
+  AssertEqual(StartSSH(master["primary"],
+                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+
+
 def TestInstanceInfo(instance):
   """gnt-instance info"""
   master = qa_config.GetMasterNode()
diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py
index a8a54f738..7583c5229 100644
--- a/qa/qa_rapi.py
+++ b/qa/qa_rapi.py
@@ -341,6 +341,14 @@ def TestRapiInstanceRemove(instance, use_client):
   qa_config.ReleaseInstance(instance)
 
 
+def TestRapiInstanceMigrate(instance):
+  """Test migrating instance via RAPI"""
+  # Move to secondary node
+  _WaitForRapiJob(_rapi_client.MigrateInstance(instance["name"]))
+  # And back to previous primary
+  _WaitForRapiJob(_rapi_client.MigrateInstance(instance["name"]))
+
+
 def TestInterClusterInstanceMove(src_instance, dest_instance, pnode, snode):
   """Test tools/move-instance"""
   master = qa_config.GetMasterNode()
-- 
GitLab