+#
+#
+
# 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)
-@qa_utils.DefineHook('tags-cluster')
def TestClusterTags():
"""gnt-cluster tags"""
- _TestTags(lambda subcmd: ['gnt-cluster', subcmd])
+ _TestTags(constants.TAG_CLUSTER, "")
-@qa_utils.DefineHook('tags-node')
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)
-@qa_utils.DefineHook('tags-instance')
def TestInstanceTags(instance):
"""gnt-instance tags"""
- _TestTags(lambda subcmd: ['gnt-instance', subcmd, instance['name']])
+ _TestTags(constants.TAG_INSTANCE, instance.name)