[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [XEND] Refactoring device controllers to its own module so it can be used by both XendConfig and XendDomainInfo.



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.