hv_chroot: use utils.GetMounts()
[ganeti-local] / lib / hypervisor / __init__.py
index 4e0dcde..e1b39ba 100644 (file)
@@ -29,29 +29,47 @@ from ganeti import errors
 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_PVM30: hv_xen.XenPvmHypervisor,
-    constants.HT_XEN_HVM31: 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(cfg):
-  """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.
 
-  @param cfg: Configuration object
+  @type ht_kind: string
+  @param ht_kind: The requested hypervisor type
 
   """
-  ht_kind = cfg.GetHypervisorType()
-
   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()