Extend qa to test hotplug support
[ganeti-local] / qa / qa_tags.py
index 6f1cb29..834f7a8 100644 (file)
@@ -1,3 +1,6 @@
+#
+#
+
 # Copyright (C) 2007 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 
 """
 
-from ganeti import utils
+from ganeti import constants
 
-import qa_config
-import qa_utils
+import qa_rapi
 
-from qa_utils import AssertEqual, StartSSH
+from qa_utils import AssertCommand
 
 
 _TEMP_TAG_NAMES = ["TEMP-Ganeti-QA-Tag%d" % i for i in range(3)]
 _TEMP_TAG_RE = r'^TEMP-Ganeti-QA-Tag\d+$'
 
+_KIND_TO_COMMAND = {
+  constants.TAG_CLUSTER: "gnt-cluster",
+  constants.TAG_NODE: "gnt-node",
+  constants.TAG_INSTANCE: "gnt-instance",
+  constants.TAG_NODEGROUP: "gnt-group",
+  }
 
-def _TestTags(cmdfn):
+
+def _TestTags(kind, name):
   """Generic function for add-tags.
 
   """
-  master = qa_config.GetMasterNode()
+  def cmdfn(subcmd):
+    cmd = [_KIND_TO_COMMAND[kind], subcmd]
 
-  cmd = cmdfn('add-tags') + _TEMP_TAG_NAMES
-  AssertEqual(StartSSH(master['primary'],
-                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+    if kind != constants.TAG_CLUSTER:
+      cmd.append(name)
 
-  cmd = cmdfn('list-tags')
-  AssertEqual(StartSSH(master['primary'],
-                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+    return cmd
 
-  cmd = ['gnt-cluster', 'search-tags', _TEMP_TAG_RE]
-  AssertEqual(StartSSH(master['primary'],
-                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+  for cmd in [
+    cmdfn("add-tags") + _TEMP_TAG_NAMES,
+    cmdfn("list-tags"),
+    ["gnt-cluster", "search-tags", _TEMP_TAG_RE],
+    cmdfn("remove-tags") + _TEMP_TAG_NAMES,
+    ]:
+    AssertCommand(cmd)
 
-  cmd = cmdfn('remove-tags') + _TEMP_TAG_NAMES
-  AssertEqual(StartSSH(master['primary'],
-                       utils.ShellQuoteArgs(cmd)).wait(), 0)
+  if qa_rapi.Enabled():
+    qa_rapi.TestTags(kind, name, _TEMP_TAG_NAMES)
 
 
 def TestClusterTags():
   """gnt-cluster tags"""
-  _TestTags(lambda subcmd: ['gnt-cluster', subcmd])
+  _TestTags(constants.TAG_CLUSTER, "")
 
 
 def TestNodeTags(node):
   """gnt-node tags"""
-  _TestTags(lambda subcmd: ['gnt-node', subcmd, node['primary']])
+  _TestTags(constants.TAG_NODE, node.primary)
+
+
+def TestGroupTags(group):
+  """gnt-group tags"""
+  _TestTags(constants.TAG_NODEGROUP, group)
 
 
 def TestInstanceTags(instance):
   """gnt-instance tags"""
-  _TestTags(lambda subcmd: ['gnt-instance', subcmd, instance['name']])
+  _TestTags(constants.TAG_INSTANCE, instance.name)