From a36f690c3e62aec5edefd179f3785e46e6ddb898 Mon Sep 17 00:00:00 2001
From: Bernardo Dal Seno <bdalseno@google.com>
Date: Sat, 26 Jan 2013 02:40:03 +0100
Subject: [PATCH] QA: Run cluster-verify after instance tests

We want to make sure that instance operations don't leave the cluster in a
bad state. The "instance-remove-drbd-offline" test leaves some debris
behind, so it's been moved to the last position.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 qa/ganeti-qa.py | 43 +++++++++++++++++++++++++------------------
 1 file changed, 25 insertions(+), 18 deletions(-)

diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index 7b0cf5f1c..f654ea6a3 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -514,6 +514,9 @@ def RunQa():
   finally:
     qa_config.ReleaseNode(pnode)
 
+  # Make sure the cluster is clean before running instance tests
+  qa_cluster.AssertClusterVerify()
+
   pnode = qa_config.AcquireNode()
   try:
     RunTestIf("tags", qa_tags.TestNodeTags, pnode)
@@ -568,24 +571,7 @@ def RunQa():
         del instance
       finally:
         qa_config.ReleaseManyNodes(inodes)
-
-  # Test removing instance with offline drbd secondary
-  if qa_config.TestEnabled("instance-remove-drbd-offline"):
-    # Make sure the master is not put offline
-    snode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode())
-    try:
-      pnode = qa_config.AcquireNode(exclude=snode)
-      try:
-        instance = qa_instance.TestInstanceAddWithDrbdDisk([pnode, snode])
-        qa_node.MakeNodeOffline(snode, "yes")
-        try:
-          RunTest(qa_instance.TestInstanceRemove, instance)
-        finally:
-          qa_node.MakeNodeOffline(snode, "no")
-      finally:
-        qa_config.ReleaseNode(pnode)
-    finally:
-      qa_config.ReleaseNode(snode)
+      qa_cluster.AssertClusterVerify()
 
   pnode = qa_config.AcquireNode()
   try:
@@ -603,12 +589,33 @@ def RunQa():
           qa_config.ReleaseNode(expnode)
         del expnode
         del instance
+      qa_cluster.AssertClusterVerify()
 
   finally:
     qa_config.ReleaseNode(pnode)
 
   RunExclusiveStorageTests()
 
+  # Test removing instance with offline drbd secondary
+  if qa_config.TestEnabled("instance-remove-drbd-offline"):
+    # Make sure the master is not put offline
+    snode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode())
+    try:
+      pnode = qa_config.AcquireNode(exclude=snode)
+      try:
+        instance = qa_instance.TestInstanceAddWithDrbdDisk([pnode, snode])
+        qa_node.MakeNodeOffline(snode, "yes")
+        try:
+          RunTest(qa_instance.TestInstanceRemove, instance)
+        finally:
+          qa_node.MakeNodeOffline(snode, "no")
+      finally:
+        qa_config.ReleaseNode(pnode)
+    finally:
+      qa_config.ReleaseNode(snode)
+    # FIXME: This test leaves a DRBD device and two LVs behind
+    # Cluster-verify would fail
+
   RunTestIf("create-cluster", qa_node.TestNodeRemoveAll)
 
   RunTestIf("cluster-destroy", qa_cluster.TestClusterDestroy)
-- 
GitLab