diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 6d1309ac66d1a1baf4f9338645461a223e0abd3f..56aa418bbb39cd241a707b7a515cc962f8746813 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -230,6 +230,12 @@ def RunGroupListTests(): RunTestIf("group-list", qa_group.TestGroupListAllFields) +def RunGroupRwTests(): + """Run tests for adding/removing/renaming groups. + + """ + RunTestIf("group-rwops", qa_group.TestGroupAddRemoveRename) + def RunExportImportTests(instance, pnode, snode): """Tries to export and import the instance. @@ -358,6 +364,7 @@ def main(): RunCommonNodeTests() RunGroupListTests() + RunGroupRwTests() pnode = qa_config.AcquireNode(exclude=qa_config.GetMasterNode()) try: diff --git a/qa/qa-sample.json b/qa/qa-sample.json index b1a9e4b1fc157d8b16c0926557a6d3dae52116e9..fa8cc8f30ea5077b1a4640518fdd48aa4568b4ec 100644 --- a/qa/qa-sample.json +++ b/qa/qa-sample.json @@ -33,6 +33,15 @@ } ], + "groups": { + "group-with-nodes": "default", + "inexistent-groups": [ + "group1", + "group2", + "group3" + ] + } + "tests": { "env": true, "os": true, @@ -54,6 +63,7 @@ "cluster-modify": true, "group-list": true, + "group-rwops": true, "node-info": true, "node-volumes": true, diff --git a/qa/qa_group.py b/qa/qa_group.py index 9671b02ac62771f182519de0e9ad999588134de9..e0e4cc7fa29f3e5acc6ba0f90265125a8c969f46 100644 --- a/qa/qa_group.py +++ b/qa/qa_group.py @@ -19,9 +19,37 @@ # 02110-1301, USA. +import qa_config from qa_utils import AssertCommand +def TestGroupAddRemoveRename(): + """gnt-group add/remove/rename""" + groups = qa_config.get("groups", {}) + + existing_group_with_nodes = groups.get("group-with-nodes", "default") + group1, group2, group3 = groups.get("inexistent-groups", + ["group1", "group2", "group3"])[:3] + + AssertCommand(["gnt-group", "add", group1]) + AssertCommand(["gnt-group", "add", group2]) + AssertCommand(["gnt-group", "add", group2], fail=True) + AssertCommand(["gnt-group", "add", existing_group_with_nodes], fail=True) + + AssertCommand(["gnt-group", "rename", group1, group2], fail=True) + AssertCommand(["gnt-group", "rename", group1, group3]) + + try: + AssertCommand(["gnt-group", "rename", existing_group_with_nodes, group1]) + + AssertCommand(["gnt-group", "remove", group2]) + AssertCommand(["gnt-group", "remove", group3]) + AssertCommand(["gnt-group", "remove", group1], fail=True) + finally: + # Try to ensure idempotency re groups that already existed. + AssertCommand(["gnt-group", "rename", group1, existing_group_with_nodes]) + + def TestGroupListDefaultFields(): """gnt-group list""" AssertCommand(["gnt-group", "list"])