Package ganeti :: Package hypervisor
[hide private]
[frames] | no frames]

Source Code for Package ganeti.hypervisor

 1  # 
 2  # 
 3   
 4  # Copyright (C) 2006, 2007, 2008 Google Inc. 
 5  # 
 6  # This program is free software; you can redistribute it and/or modify 
 7  # it under the terms of the GNU General Public License as published by 
 8  # the Free Software Foundation; either version 2 of the License, or 
 9  # (at your option) any later version. 
10  # 
11  # This program is distributed in the hope that it will be useful, but 
12  # WITHOUT ANY WARRANTY; without even the implied warranty of 
13  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14  # General Public License for more details. 
15  # 
16  # You should have received a copy of the GNU General Public License 
17  # along with this program; if not, write to the Free Software 
18  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
19  # 02110-1301, USA. 
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   
46 -def GetHypervisorClass(ht_kind):
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
63 -def GetHypervisor(ht_kind):
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