1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """Virtualization interface abstraction
23
24 """
25
26 from ganeti import constants
27 from ganeti import errors
28
29 from ganeti.hypervisor import hv_fake
30 from ganeti.hypervisor import hv_xen
31 from ganeti.hypervisor import hv_kvm
32 from ganeti.hypervisor import hv_chroot
33 from ganeti.hypervisor import hv_lxc
34
35
36 _HYPERVISOR_MAP = {
37 constants.HT_XEN_PVM: hv_xen.XenPvmHypervisor,
38 constants.HT_XEN_HVM: hv_xen.XenHvmHypervisor,
39 constants.HT_FAKE: hv_fake.FakeHypervisor,
40 constants.HT_KVM: hv_kvm.KVMHypervisor,
41 constants.HT_CHROOT: hv_chroot.ChrootManager,
42 constants.HT_LXC: hv_lxc.LXCHypervisor,
43 }
44
45
47 """Return a Hypervisor class.
48
49 This function returns the hypervisor class corresponding to the
50 given hypervisor name.
51
52 @type ht_kind: string
53 @param ht_kind: The requested hypervisor type
54
55 """
56 if ht_kind not in _HYPERVISOR_MAP:
57 raise errors.HypervisorError("Unknown hypervisor type '%s'" % ht_kind)
58
59 cls = _HYPERVISOR_MAP[ht_kind]
60 return cls
61
62
64 """Return a Hypervisor instance.
65
66 This is a wrapper over L{GetHypervisorClass} which returns an
67 instance of the class.
68
69 @type ht_kind: string
70 @param ht_kind: The requested hypervisor type
71
72 """
73 cls = GetHypervisorClass(ht_kind)
74
75 return cls()
76