diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py index 1263a526fa70ff8b6defd2d2cd0f140eef8eb576..dc0f833f4050a80c3e2e34bdb62bff1b0a819588 100644 --- a/qa/qa_cluster.py +++ b/qa/qa_cluster.py @@ -94,10 +94,11 @@ def TestClusterInit(rapi_user, rapi_secret): fh.close() # Initialize cluster - cmd = ["gnt-cluster", "init"] - - cmd.append("--primary-ip-version=%d" % - qa_config.get("primary_ip_version", 4)) + cmd = [ + "gnt-cluster", "init", + "--primary-ip-version=%d" % qa_config.get("primary_ip_version", 4), + "--enabled-hypervisors=%s" % qa_config.GetEnabledHypervisors(), + ] for spec_type in ("mem-size", "disk-size", "disk-count", "cpu-count", "nic-count"): @@ -115,10 +116,6 @@ def TestClusterInit(rapi_user, rapi_secret): cmd.append("--bridge=%s" % bridge) cmd.append("--master-netdev=%s" % bridge) - htype = qa_config.get("enabled-hypervisors", None) - if htype: - cmd.append("--enabled-hypervisors=%s" % htype) - cmd.append(qa_config.get("name")) AssertCommand(cmd) diff --git a/qa/qa_config.py b/qa/qa_config.py index 2cf8d500a6e51c672af8949d1a321a8bf0e844b6..a99dac968fc1b2093f158150959b65134759e707 100644 --- a/qa/qa_config.py +++ b/qa/qa_config.py @@ -25,6 +25,7 @@ import os +from ganeti import constants from ganeti import utils from ganeti import serializer from ganeti import compat @@ -33,6 +34,7 @@ import qa_error _INSTANCE_CHECK_KEY = "instance-check" +_ENABLED_HV_KEY = "enabled-hypervisors" cfg = None @@ -67,6 +69,15 @@ def Validate(): raise qa_error.Error("Can't find instance check script '%s': %s" % (check, err)) + enabled_hv = frozenset(GetEnabledHypervisors()) + if not enabled_hv: + raise qa_error.Error("No hypervisor is enabled") + + difference = enabled_hv - constants.HYPER_TYPES + if difference: + raise qa_error.Error("Unknown hypervisor(s) enabled: %s" % + utils.CommaJoin(difference)) + def get(name, default=None): return cfg.get(name, default) @@ -154,6 +165,34 @@ def GetInstanceCheckScript(): return cfg.get(_INSTANCE_CHECK_KEY, None) +def GetEnabledHypervisors(): + """Returns list of enabled hypervisors. + + @rtype: list + + """ + try: + value = cfg[_ENABLED_HV_KEY] + except KeyError: + return [constants.DEFAULT_ENABLED_HYPERVISOR] + else: + if isinstance(value, basestring): + # The configuration key ("enabled-hypervisors") implies there can be + # multiple values. Multiple hypervisors are comma-separated on the + # command line option to "gnt-cluster init", so we need to handle them + # equally here. + return value.split(",") + else: + return value + + +def GetDefaultHypervisor(): + """Returns the default hypervisor to be used. + + """ + return GetEnabledHypervisors()[0] + + def GetInstanceNicMac(inst, default=None): """Returns MAC address for instance's network interface.