X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/c68d1f43a746ea44bc1b92ae074ba1a409d60fa9..a10caf87a59b8ad16b9d234bc9b0175dfe6f0c5a:/qa/ganeti-qa.py?ds=sidebyside diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 42b95b8..4c2a2fc 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -21,10 +21,6 @@ """Script for doing QA on Ganeti. -You can create the required known_hosts file using ssh-keyscan. It's mandatory -to use the full name of a node (FQDN). For security reasons, verify the keys -before using them. -Example: ssh-keyscan -t rsa node{1,2,3,4}.example.com > known_hosts """ import sys @@ -38,7 +34,7 @@ import qa_env import qa_instance import qa_node import qa_os -import qa_other +import qa_rapi import qa_tags import qa_utils @@ -78,8 +74,9 @@ def SetupCluster(): """Initializes the cluster. """ - RunTest(qa_cluster.TestClusterInit) - RunTest(qa_node.TestNodeAddAll) + if qa_config.TestEnabled('create-cluster'): + RunTest(qa_cluster.TestClusterInit) + RunTest(qa_node.TestNodeAddAll) if qa_config.TestEnabled('node-info'): RunTest(qa_node.TestNodeInfo) @@ -91,6 +88,9 @@ def RunClusterTests(): if qa_config.TestEnabled('cluster-verify'): RunTest(qa_cluster.TestClusterVerify) + if qa_config.TestEnabled('cluster-rename'): + RunTest(qa_cluster.TestClusterRename) + if qa_config.TestEnabled('cluster-info'): RunTest(qa_cluster.TestClusterVersion) RunTest(qa_cluster.TestClusterInfo) @@ -108,6 +108,9 @@ def RunClusterTests(): if qa_config.TestEnabled('cluster-master-failover'): RunTest(qa_cluster.TestClusterMasterFailover) + if qa_rapi.Enabled(): + RunTest(qa_rapi.TestVersion) + RunTest(qa_rapi.TestEmptyCluster) def RunOsTests(): """Runs all tests related to gnt-os. @@ -140,17 +143,25 @@ def RunCommonInstanceTests(instance): if qa_config.TestEnabled('instance-modify'): RunTest(qa_instance.TestInstanceModify, instance) + if qa_config.TestEnabled('instance-console'): + RunTest(qa_instance.TestInstanceConsole, instance) + if qa_config.TestEnabled('instance-reinstall'): RunTest(qa_instance.TestInstanceShutdown, instance) RunTest(qa_instance.TestInstanceReinstall, instance) RunTest(qa_instance.TestInstanceStartup, instance) + if qa_config.TestEnabled('instance-reboot'): + RunTest(qa_instance.TestInstanceReboot, instance) + if qa_config.TestEnabled('tags'): RunTest(qa_tags.TestInstanceTags, instance) if qa_config.TestEnabled('node-volumes'): RunTest(qa_node.TestNodeVolumes) + if qa_rapi.Enabled(): + RunTest(qa_rapi.TestInstance, instance) def RunExportImportTests(instance, pnode): """Tries to export and import the instance. @@ -201,6 +212,14 @@ def RunHardwareFailureTests(instance, pnode, snode): if qa_config.TestEnabled('instance-failover'): RunTest(qa_instance.TestInstanceFailover, instance) + if qa_config.TestEnabled('instance-replace-disks'): + othernode = qa_config.AcquireNode(exclude=[pnode, snode]) + try: + RunTest(qa_instance.TestReplaceDisks, + instance, pnode, snode, othernode) + finally: + qa_config.ReleaseNode(othernode) + if qa_config.TestEnabled('node-evacuate'): RunTest(qa_node.TestNodeEvacuate, pnode, snode) @@ -218,20 +237,16 @@ def main(): """Main program. """ - parser = optparse.OptionParser(usage="%prog [options] " - " ") - parser.add_option('--dry-run', dest='dry_run', - action="store_true", - help="Show what would be done") + parser = optparse.OptionParser(usage="%prog [options] ") parser.add_option('--yes-do-it', dest='yes_do_it', action="store_true", help="Really execute the tests") (qa_config.options, args) = parser.parse_args() - if len(args) == 2: - (config_file, known_hosts_file) = args + if len(args) == 1: + (config_file, ) = args else: - parser.error("Not enough arguments.") + parser.error("Wrong number of arguments.") if not qa_config.options.yes_do_it: print ("Executing this script irreversibly destroys any Ganeti\n" @@ -240,9 +255,6 @@ def main(): sys.exit(1) qa_config.Load(config_file) - qa_utils.LoadHooks() - - RunTest(qa_other.UploadKnownHostsFile, known_hosts_file) RunEnvTests() SetupCluster() @@ -252,11 +264,22 @@ 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: + RunTest(qa_node.TestNodeReadd, pnode) + finally: + qa_config.ReleaseNode(pnode) + pnode = qa_config.AcquireNode() try: if qa_config.TestEnabled('tags'): RunTest(qa_tags.TestNodeTags, pnode) + if qa_rapi.Enabled(): + RunTest(qa_rapi.TestNode, pnode) + if qa_config.TestEnabled('instance-add-plain-disk'): instance = RunTest(qa_instance.TestInstanceAddWithPlainDisk, pnode) RunCommonInstanceTests(instance) @@ -265,16 +288,7 @@ def main(): RunTest(qa_instance.TestInstanceRemove, instance) del instance - if qa_config.TestEnabled('instance-add-local-mirror-disk'): - instance = RunTest(qa_instance.TestInstanceAddWithLocalMirrorDisk, pnode) - RunCommonInstanceTests(instance) - RunExportImportTests(instance, pnode) - RunTest(qa_instance.TestInstanceRemove, instance) - del instance - multinode_tests = [ - ('instance-add-remote-raid-disk', - qa_instance.TestInstanceAddWithRemoteRaidDisk), ('instance-add-drbd-disk', qa_instance.TestInstanceAddWithDrbdDisk), ] @@ -295,7 +309,8 @@ def main(): finally: qa_config.ReleaseNode(pnode) - RunTest(qa_node.TestNodeRemoveAll) + if qa_config.TestEnabled('create-cluster'): + RunTest(qa_node.TestNodeRemoveAll) if qa_config.TestEnabled('cluster-destroy'): RunTest(qa_cluster.TestClusterDestroy)