from ganeti.hypervisor import hv_fake
from ganeti.hypervisor import hv_xen
from ganeti.hypervisor import hv_kvm
+from ganeti.hypervisor import hv_chroot
+from ganeti.hypervisor import hv_lxc
_HYPERVISOR_MAP = {
- 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,
- }
+ 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,
+ constants.HT_CHROOT: hv_chroot.ChrootManager,
+ constants.HT_LXC: hv_lxc.LXCHypervisor,
+ }
-def GetHypervisor(ht_kind):
- """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.
@type ht_kind: string
@param ht_kind: The requested hypervisor type
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()