From c1513c7f9f6018e5ca15935457bc1f69794fc5fd Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Wed, 6 Jun 2012 12:54:32 +0200
Subject: [PATCH] QA: Ignore tags using regular expression
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In some QA environments external scripts may add tags. With this patch a
regular expression can be used to ignore them during QA runs.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: RenΓ© Nussbaumer <rn@google.com>
---
 qa/qa-sample.json |  3 +++
 qa/qa_rapi.py     | 16 +++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index 4034814b9..82f9c6cf7 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -27,6 +27,9 @@
   "# Script to check instance status": null,
   "instance-check": null,
 
+  "# Regular expression to ignore existing tags": null,
+  "ignore-tags-re": null,
+
   "nodes": [
     {
       "# Master node": null,
diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py
index e26576459..b53b8cfe9 100644
--- a/qa/qa_rapi.py
+++ b/qa/qa_rapi.py
@@ -25,6 +25,8 @@
 
 import tempfile
 import random
+import re
+import itertools
 
 from ganeti import utils
 from ganeti import constants
@@ -416,6 +418,18 @@ def TestNode(node):
     ])
 
 
+def _FilterTags(seq):
+  """Removes unwanted tags from a sequence.
+
+  """
+  ignore_re = qa_config.get("ignore-tags-re", None)
+
+  if ignore_re:
+    return itertools.ifilterfalse(re.compile(ignore_re).match, seq)
+  else:
+    return seq
+
+
 def TestTags(kind, name, tags):
   """Tests .../tags resources.
 
@@ -432,7 +446,7 @@ def TestTags(kind, name, tags):
     raise errors.ProgrammerError("Unknown tag kind")
 
   def _VerifyTags(data):
-    AssertEqual(sorted(tags), sorted(data))
+    AssertEqual(sorted(tags), sorted(_FilterTags(data)))
 
   queryargs = "&".join("tag=%s" % i for i in tags)
 
-- 
GitLab