mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
[XEND] Refactoring device controllers to its own module so it can be used by both XendConfig and XendDomainInfo.
Signed-off-by: Alastair Tse <atse@xensource.com>
This commit is contained in:
1 parent
965e9d0ac4
commit
00a4566470
1 file changed
+68
@@ -0,0 +1,68 @@
|
||||
#===========================================================================
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2.1 of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#============================================================================
|
||||
# Copyright (C) 2006 XenSource Ltd
|
||||
#============================================================================
|
||||
|
||||
#
|
||||
# A collection of DevControllers
|
||||
#
|
||||
|
||||
from xen.xend.server import blkif, netif, tpmif, pciif, iopif, irqif, usbif
|
||||
from xen.xend.server.BlktapController import BlktapController
|
||||
|
||||
class XendDevices:
|
||||
""" An ugly halfway point between the module local device name
|
||||
to class map we used to have in XendDomainInfo and something
|
||||
slightly more managable.
|
||||
|
||||
This class should contain all the functions that have to do
|
||||
with managing devices in Xend. Right now it is only a factory
|
||||
function.
|
||||
"""
|
||||
|
||||
controllers = {
|
||||
'vbd': blkif.BlkifController,
|
||||
'vif': netif.NetifController,
|
||||
'vtpm': tpmif.TPMifController,
|
||||
'pci': pciif.PciController,
|
||||
'ioports': iopif.IOPortsController,
|
||||
'irq': irqif.IRQController,
|
||||
'usb': usbif.UsbifController,
|
||||
'tap': BlktapController,
|
||||
}
|
||||
|
||||
#@classmethod
|
||||
def valid_devices(cls):
|
||||
return cls.controllers.keys()
|
||||
valid_devices = classmethod(valid_devices)
|
||||
|
||||
#@classmethod
|
||||
def make_controller(cls, name, domain):
|
||||
"""Factory function to make device controllers per domain.
|
||||
|
||||
@param name: device class name in L{VALID_DEVICES}
|
||||
@type name: String
|
||||
@param domain: domain this controller is handling devices for.
|
||||
@type domain: XendDomainInfo
|
||||
@return: DevController of class 'name' or None
|
||||
@rtype: subclass of DevController
|
||||
"""
|
||||
if name in cls.controllers.keys():
|
||||
cls.controllers[name].deviceClass = name
|
||||
return cls.controllers[name](domain)
|
||||
return None
|
||||
|
||||
make_controller = classmethod(make_controller)
|
||||
|
||||