# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Node ID ea65d8be211f8531db307c14f6f63dddd052280e
# Parent 59f3891b94b88da40c885ffd2d21232acbc3f598
[XEND] Refactoring device controllers to its own module so it can be used by
both XendConfig and XendDomainInfo.
Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
tools/python/xen/xend/XendDevices.py | 68 +++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+)
diff -r 59f3891b94b8 -r ea65d8be211f tools/python/xen/xend/XendDevices.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/python/xen/xend/XendDevices.py Thu Oct 05 17:29:19 2006 +0100
@@ -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)
+
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|