diff --git a/qa/Makefile.am b/qa/Makefile.am index f5213140531867498a31090b7d931f6835f0c629..0c4d8453f8dedbeefb2b5b7f26992c8656429329 100644 --- a/qa/Makefile.am +++ b/qa/Makefile.am @@ -8,5 +8,6 @@ EXTRA_DIST = ganeti-qa.py qa-sample.yaml \ qa_node.py \ qa_os.py \ qa_other.py \ + qa_tags.py \ qa_utils.py CLEANFILES = *.py[co] diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index f05c30ae433401378008a0c579440ec882e7316c..a0cbcea1530af8b4dce20f2932bcf33934e274cd 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -39,6 +39,7 @@ import qa_instance import qa_node import qa_os import qa_other +import qa_tags def RunTest(fn, *args): @@ -140,6 +141,9 @@ def RunCommonInstanceTests(instance): RunTest(qa_instance.TestInstanceReinstall, instance) RunTest(qa_instance.TestInstanceStartup, instance) + if qa_config.TestEnabled('tags'): + RunTest(qa_tags.TestInstanceTags, instance) + if qa_config.TestEnabled('node-volumes'): RunTest(qa_node.TestNodeVolumes) @@ -240,8 +244,14 @@ def main(): RunClusterTests() RunOsTests() + if qa_config.TestEnabled('tags'): + RunTest(qa_tags.TestClusterTags) + pnode = qa_config.AcquireNode() try: + if qa_config.TestEnabled('tags'): + RunTest(qa_tags.TestNodeTags, pnode) + if qa_config.TestEnabled('instance-add-plain-disk'): instance = RunTest(qa_instance.TestInstanceAddWithPlainDisk, pnode) RunCommonInstanceTests(instance) diff --git a/qa/qa-sample.yaml b/qa/qa-sample.yaml index c13fe9c96f135822f0f908f0ccdb85da10beef58..49ecef01e3bf5b1769868ccafb1772a6905b96e7 100644 --- a/qa/qa-sample.yaml +++ b/qa/qa-sample.yaml @@ -25,8 +25,8 @@ instances: # Tests to run tests: env: True - os: True + tags: True cluster-verify: True cluster-info: True diff --git a/qa/qa_tags.py b/qa/qa_tags.py new file mode 100644 index 0000000000000000000000000000000000000000..6f1cb2975b7f7f7cb63ebb7a970b92014824d4d1 --- /dev/null +++ b/qa/qa_tags.py @@ -0,0 +1,70 @@ +# Copyright (C) 2007 Google Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + + +"""Tags related QA tests. + +""" + +from ganeti import utils + +import qa_config +import qa_utils + +from qa_utils import AssertEqual, StartSSH + + +_TEMP_TAG_NAMES = ["TEMP-Ganeti-QA-Tag%d" % i for i in range(3)] +_TEMP_TAG_RE = r'^TEMP-Ganeti-QA-Tag\d+$' + + +def _TestTags(cmdfn): + """Generic function for add-tags. + + """ + master = qa_config.GetMasterNode() + + cmd = cmdfn('add-tags') + _TEMP_TAG_NAMES + AssertEqual(StartSSH(master['primary'], + utils.ShellQuoteArgs(cmd)).wait(), 0) + + cmd = cmdfn('list-tags') + AssertEqual(StartSSH(master['primary'], + utils.ShellQuoteArgs(cmd)).wait(), 0) + + cmd = ['gnt-cluster', 'search-tags', _TEMP_TAG_RE] + AssertEqual(StartSSH(master['primary'], + utils.ShellQuoteArgs(cmd)).wait(), 0) + + cmd = cmdfn('remove-tags') + _TEMP_TAG_NAMES + AssertEqual(StartSSH(master['primary'], + utils.ShellQuoteArgs(cmd)).wait(), 0) + + +def TestClusterTags(): + """gnt-cluster tags""" + _TestTags(lambda subcmd: ['gnt-cluster', subcmd]) + + +def TestNodeTags(node): + """gnt-node tags""" + _TestTags(lambda subcmd: ['gnt-node', subcmd, node['primary']]) + + +def TestInstanceTags(instance): + """gnt-instance tags""" + _TestTags(lambda subcmd: ['gnt-instance', subcmd, instance['name']])