X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/a9369c6e9840b13a6582002b73d5e7ffc72a4800..4a34c5cf5664c10a1c06e8865067b429ab0b9c71:/lib/hypervisor/__init__.py diff --git a/lib/hypervisor/__init__.py b/lib/hypervisor/__init__.py index c3e5ece..453286c 100644 --- a/lib/hypervisor/__init__.py +++ b/lib/hypervisor/__init__.py @@ -23,32 +23,49 @@ """ -from ganeti import ssconf from ganeti import constants from ganeti import errors from ganeti.hypervisor import hv_fake from ganeti.hypervisor import hv_xen +from ganeti.hypervisor import hv_kvm _HYPERVISOR_MAP = { - constants.HT_XEN_PVM30: hv_xen.XenPvmHypervisor, - constants.HT_XEN_HVM31: hv_xen.XenHvmHypervisor, + constants.HT_XEN_PVM: hv_xen.XenPvmHypervisor, + constants.HT_XEN_HVM: hv_xen.XenHvmHypervisor, constants.HT_FAKE: hv_fake.FakeHypervisor, + constants.HT_KVM: hv_kvm.KVMHypervisor, } -def GetHypervisor(): - """Return a Hypervisor instance. +def GetHypervisorClass(ht_kind): + """Return a Hypervisor class. - This function parses the cluster hypervisor configuration file and - instantiates a class based on the value of this file. + This function returns the hypervisor class corresponding to the + given hypervisor name. - """ - ht_kind = ssconf.SimpleStore().GetHypervisorType() + @type ht_kind: string + @param ht_kind: The requested hypervisor type + """ if ht_kind not in _HYPERVISOR_MAP: raise errors.HypervisorError("Unknown hypervisor type '%s'" % ht_kind) cls = _HYPERVISOR_MAP[ht_kind] + return cls + + +def GetHypervisor(ht_kind): + """Return a Hypervisor instance. + + This is a wrapper over L{GetHypervisorClass} which returns an + instance of the class. + + @type ht_kind: string + @param ht_kind: The requested hypervisor type + + """ + cls = GetHypervisorClass(ht_kind) + return cls()