From ac63b0936badb63b24211c117904fe70b356df22 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Thu, 30 Dec 2010 18:48:36 +0100
Subject: [PATCH] QA: Fix out-of-band tests
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Handle situations with no non-master node
- Expand node name to make test work when configuration just has short
  names (e.g. β€œnode1” instead of β€œnode1.example.com”)

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: RenΓ© Nussbaumer <rn@google.com>
---
 qa/qa_node.py | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/qa/qa_node.py b/qa/qa_node.py
index 47d7c882f..00d4d195d 100644
--- a/qa/qa_node.py
+++ b/qa/qa_node.py
@@ -233,10 +233,14 @@ def TestOutOfBand():
   master = qa_config.GetMasterNode()
 
   # Find first non master node for tests
-  for node in qa_config.get('nodes'):
+  for node in qa_config.get("nodes"):
     if node != master:
-      node_name = node["primary"]
       break
+  else:
+    raise qa_error.Error("Can't find non-master node")
+
+  node_name = node["primary"]
+  full_node_name = qa_utils.ResolveNodeName(node)
 
   (oob_path, verify_path,
    data_path, exit_code_path) = _CreateOobScriptStructure()
@@ -249,10 +253,10 @@ def TestOutOfBand():
     _UpdateOobFile(exit_code_path, "0")
 
     AssertCommand(["gnt-node", "power", "on", node_name])
-    _AssertOobCall(verify_path, "power-on %s" % node_name)
+    _AssertOobCall(verify_path, "power-on %s" % full_node_name)
 
     AssertCommand(["gnt-node", "power", "off", node_name])
-    _AssertOobCall(verify_path, "power-off %s" % node_name)
+    _AssertOobCall(verify_path, "power-off %s" % full_node_name)
 
     # Verify we can't transform back to online when not yet powered on
     AssertCommand(["gnt-node", "modify", "-O", "no", node_name],
@@ -262,68 +266,68 @@ def TestOutOfBand():
                    node_name])
 
     AssertCommand(["gnt-node", "power", "cycle", node_name])
-    _AssertOobCall(verify_path, "power-cycle %s" % node_name)
+    _AssertOobCall(verify_path, "power-cycle %s" % full_node_name)
 
     # This command should fail as it expects output which isn't provided yet
     # But it should have called the oob helper nevermind
     AssertCommand(["gnt-node", "power", "status", node_name],
                   fail=True)
-    _AssertOobCall(verify_path, "power-status %s" % node_name)
+    _AssertOobCall(verify_path, "power-status %s" % full_node_name)
 
     # Data, exit 0
     _UpdateOobFile(data_path, serializer.DumpJson({ "powered": True }))
 
     AssertCommand(["gnt-node", "power", "status", node_name])
-    _AssertOobCall(verify_path, "power-status %s" % node_name)
+    _AssertOobCall(verify_path, "power-status %s" % full_node_name)
 
     AssertCommand(["gnt-node", "power", "on", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-on %s" % node_name)
+    _AssertOobCall(verify_path, "power-on %s" % full_node_name)
 
     try:
       AssertCommand(["gnt-node", "power", "off", node_name], fail=True)
-      _AssertOobCall(verify_path, "power-off %s" % node_name)
+      _AssertOobCall(verify_path, "power-off %s" % full_node_name)
     finally:
       AssertCommand(["gnt-node", "modify", "-O", "no", node_name])
 
     AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-cycle %s" % node_name)
+    _AssertOobCall(verify_path, "power-cycle %s" % full_node_name)
 
     # Data, exit 1 (all should fail)
     _UpdateOobFile(exit_code_path, "1")
 
     AssertCommand(["gnt-node", "power", "on", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-on %s" % node_name)
+    _AssertOobCall(verify_path, "power-on %s" % full_node_name)
 
     try:
       AssertCommand(["gnt-node", "power", "off", node_name], fail=True)
-      _AssertOobCall(verify_path, "power-off %s" % node_name)
+      _AssertOobCall(verify_path, "power-off %s" % full_node_name)
     finally:
       AssertCommand(["gnt-node", "modify", "-O", "no", node_name])
 
     AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-cycle %s" % node_name)
+    _AssertOobCall(verify_path, "power-cycle %s" % full_node_name)
 
     AssertCommand(["gnt-node", "power", "status", node_name],
                   fail=True)
-    _AssertOobCall(verify_path, "power-status %s" % node_name)
+    _AssertOobCall(verify_path, "power-status %s" % full_node_name)
 
     # No data, exit 1 (all should fail)
     _UpdateOobFile(data_path, "")
     AssertCommand(["gnt-node", "power", "on", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-on %s" % node_name)
+    _AssertOobCall(verify_path, "power-on %s" % full_node_name)
 
     try:
       AssertCommand(["gnt-node", "power", "off", node_name], fail=True)
-      _AssertOobCall(verify_path, "power-off %s" % node_name)
+      _AssertOobCall(verify_path, "power-off %s" % full_node_name)
     finally:
       AssertCommand(["gnt-node", "modify", "-O", "no", node_name])
 
     AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True)
-    _AssertOobCall(verify_path, "power-cycle %s" % node_name)
+    _AssertOobCall(verify_path, "power-cycle %s" % full_node_name)
 
     AssertCommand(["gnt-node", "power", "status", node_name],
                   fail=True)
-    _AssertOobCall(verify_path, "power-status %s" % node_name)
+    _AssertOobCall(verify_path, "power-status %s" % full_node_name)
 
     # Different OOB script for node
     verify_path2 = qa_utils.UploadData(master["primary"], "")
@@ -335,7 +339,7 @@ def TestOutOfBand():
       AssertCommand(["gnt-node", "modify", "--node-parameters",
                      "oob_program=%s" % oob_path2, node_name])
       AssertCommand(["gnt-node", "power", "on", node_name])
-      _AssertOobCall(verify_path2, "power-on %s" % node_name)
+      _AssertOobCall(verify_path2, "power-on %s" % full_node_name)
     finally:
       AssertCommand(["gnt-node", "modify", "--node-parameters",
                      "oob_program=default", node_name])
-- 
GitLab