X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/e7c6e02b036e6fc311cf886b28598c3cc18af795..30dabd03436be299b1daa02f35685d440a69c7ab:/qa/ganeti-qa.py diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 47db0b7..5c399e7 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,12 @@ 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) + else: + # consider the nodes are already there + qa_node.MarkNodeAddedAll() if qa_config.TestEnabled('node-info'): RunTest(qa_node.TestNodeInfo) @@ -111,6 +111,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. @@ -151,12 +154,20 @@ def RunCommonInstanceTests(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_config.TestEnabled("node-storage"): + RunTest(qa_node.TestNodeStorage) + + if qa_rapi.Enabled(): + RunTest(qa_rapi.TestInstance, instance) def RunExportImportTests(instance, pnode): """Tries to export and import the instance. @@ -207,6 +218,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) @@ -224,20 +243,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" @@ -246,9 +261,6 @@ def main(): sys.exit(1) qa_config.Load(config_file) - qa_utils.LoadHooks() - - RunTest(qa_other.UploadKnownHostsFile, known_hosts_file) RunEnvTests() SetupCluster() @@ -258,13 +270,21 @@ 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_config.TestEnabled('node-readd'): - RunTest(qa_node.TestNodeReadd, pnode) + if qa_rapi.Enabled(): + RunTest(qa_rapi.TestNode, pnode) if qa_config.TestEnabled('instance-add-plain-disk'): instance = RunTest(qa_instance.TestInstanceAddWithPlainDisk, pnode) @@ -295,7 +315,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)