diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 4f51c78c3ffa3aeda6fe3b780d230e57504ca416..23586ce1f9888cd3ee7023f72e0bb4d0ead7c8f9 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -363,13 +363,15 @@ def main(): if qa_config.TestEnabled('tags'): RunTest(qa_tags.TestClusterTags) - if qa_config.TestEnabled('node-readd'): - master = qa_config.GetMasterNode() - pnode = qa_config.AcquireNode(exclude=master) - try: + pnode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode()) + try: + if qa_config.TestEnabled('node-readd'): RunTest(qa_node.TestNodeReadd, pnode) - finally: - qa_config.ReleaseNode(pnode) + + if qa_config.TestEnabled("node-modify"): + RunTest(qa_node.TestNodeModify, pnode) + finally: + qa_config.ReleaseNode(pnode) pnode = qa_config.AcquireNode() try: diff --git a/qa/qa-sample.json b/qa/qa-sample.json index 6bfd42cab1347a3f3db9042ea5e43d7d03a7c6f2..824cf7865998fd05e46216e3542f0efda3bd4d2d 100644 --- a/qa/qa-sample.json +++ b/qa/qa-sample.json @@ -55,6 +55,7 @@ "node-volumes": true, "node-readd": true, "node-storage": true, + "node-modify": true, "# This test needs at least three nodes": null, "node-evacuate": false, diff --git a/qa/qa_node.py b/qa/qa_node.py index 025683c1c2fd574fdb4b270f41455dfe5009a7d6..15550f954fe1921c4539f7b154bcdf04be2d848b 100644 --- a/qa/qa_node.py +++ b/qa/qa_node.py @@ -219,3 +219,20 @@ def TestNodeEvacuate(node, node2): utils.ShellQuoteArgs(cmd)).wait(), 0) finally: qa_config.ReleaseNode(node3) + + +def TestNodeModify(node): + """gnt-node modify""" + master = qa_config.GetMasterNode() + + for flag in ["master-candidate", "drained", "offline"]: + for value in ["yes", "no"]: + cmd = ["gnt-node", "modify", "--force", + "--%s=%s" % (flag, value), node["primary"]] + AssertEqual(StartSSH(master["primary"], + utils.ShellQuoteArgs(cmd)).wait(), 0) + + cmd = ["gnt-node", "modify", "--master-candidate=yes", "--auto-promote", + node["primary"]] + AssertEqual(StartSSH(master["primary"], + utils.ShellQuoteArgs(cmd)).wait(), 0)