Instance test functions check the current configuration, and they will run the actual tests only if the configuration supports them. This will be used for refactoring in following patches.
Signed-off-by: Bernardo Dal Seno <[email protected]> --- qa/qa_instance.py | 38 ++++++++++++++++++++++++++++++++++++++ qa/qa_rapi.py | 15 +++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/qa/qa_instance.py b/qa/qa_instance.py index 195457b..6dcc58c 100644 --- a/qa/qa_instance.py +++ b/qa/qa_instance.py @@ -161,6 +161,21 @@ def _GetBoolInstanceField(instance, field): " %s" % (field, instance, info_out)) +def IsFailoverSupported(instance): + templ = qa_config.GetInstanceTemplate(instance) + return templ in constants.DTS_MIRRORED + + +def IsMigrationSupported(instance): + templ = qa_config.GetInstanceTemplate(instance) + return templ in constants.DTS_MIRRORED + + +def IsDiskReplacingSupported(instance): + templ = qa_config.GetInstanceTemplate(instance) + return templ == constants.DT_DRBD8 + + @InstanceCheck(None, INST_UP, RETURN_VALUE) def TestInstanceAddWithPlainDisk(node): """gnt-instance add -t plain""" @@ -302,6 +317,11 @@ def TestInstanceRenameAndBack(rename_source, rename_target): @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) def TestInstanceFailover(instance): """gnt-instance failover""" + if not IsFailoverSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support failover, skipping" + " test") + return + cmd = ["gnt-instance", "failover", "--force", instance["name"]] # failover ... @@ -315,6 +335,11 @@ def TestInstanceFailover(instance): @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) def TestInstanceMigrate(instance, toggle_always_failover=True): """gnt-instance migrate""" + if not IsMigrationSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support migration, skipping" + " test") + return + cmd = ["gnt-instance", "migrate", "--force", instance["name"]] af_par = constants.BE_ALWAYS_FAILOVER af_field = "be/" + constants.BE_ALWAYS_FAILOVER @@ -459,6 +484,11 @@ def TestInstanceStoppedModify(instance): def TestInstanceConvertDisk(instance, snode): """gnt-instance modify -t""" name = instance["name"] + template = qa_config.GetInstanceTemplate(instance) + if template != "drbd": + print qa_utils.FormatInfo("Unsupported template %s, skipping conversion" + " test" % template) + return AssertCommand(["gnt-instance", "modify", "-t", "plain", name]) AssertCommand(["gnt-instance", "modify", "-t", "drbd", "-n", snode["primary"], name]) @@ -467,6 +497,9 @@ def TestInstanceConvertDisk(instance, snode): @InstanceCheck(INST_DOWN, INST_DOWN, FIRST_ARG) def TestInstanceGrowDisk(instance): """gnt-instance grow-disk""" + if qa_config.GetExclusiveStorage(): + print qa_utils.FormatInfo("Test not supported with exclusive_storage") + return name = instance["name"] all_size = qa_config.get("disk") all_grow = qa_config.get("disk-growth") @@ -515,6 +548,11 @@ def TestReplaceDisks(instance, pnode, snode, othernode): cmd.append(instance["name"]) return cmd + if not IsDiskReplacingSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support disk replacing," + " skipping test") + return + options = qa_config.get("options", {}) use_ialloc = options.get("use-iallocators", True) for data in [ diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py index 5189304..b34bb25 100644 --- a/qa/qa_rapi.py +++ b/qa/qa_rapi.py @@ -46,6 +46,9 @@ import qa_config import qa_utils import qa_error +from qa_instance import IsFailoverSupported +from qa_instance import IsMigrationSupported +from qa_instance import IsDiskReplacingSupported from qa_utils import (AssertEqual, AssertIn, AssertMatch, StartLocalCommand) from qa_utils import InstanceCheck, INST_DOWN, INST_UP, FIRST_ARG @@ -617,6 +620,10 @@ def TestRapiInstanceRemove(instance, use_client): @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) def TestRapiInstanceMigrate(instance): """Test migrating instance via RAPI""" + if not IsMigrationSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support migration, skipping" + " test") + return # Move to secondary node _WaitForRapiJob(_rapi_client.MigrateInstance(instance["name"])) qa_utils.RunInstanceCheck(instance, True) @@ -627,6 +634,10 @@ def TestRapiInstanceMigrate(instance): @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) def TestRapiInstanceFailover(instance): """Test failing over instance via RAPI""" + if not IsFailoverSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support failover, skipping" + " test") + return # Move to secondary node _WaitForRapiJob(_rapi_client.FailoverInstance(instance["name"])) qa_utils.RunInstanceCheck(instance, True) @@ -676,6 +687,10 @@ def TestRapiInstanceReinstall(instance): @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) def TestRapiInstanceReplaceDisks(instance): """Test replacing instance disks via RAPI""" + if not IsDiskReplacingSupported(instance): + print qa_utils.FormatInfo("Instance doesn't support disk replacing," + " skipping test") + return fn = _rapi_client.ReplaceInstanceDisks _WaitForRapiJob(fn(instance["name"], mode=constants.REPLACE_DISK_AUTO, disks=[])) -- 1.8.1 -- You received this message because you are subscribed to the Google Groups "ganeti-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
