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

[Xen-changelog] Removed {add, get}_{config, device}_handler in favour of using a simple dictionary directly. Fix a misnamed variable blconfig that was supposed to refer to blcfg. This showed up under pylint as a undefined variable, but would have manifested itself in the bootloader configuration being ignored.



# HG changeset patch
# User ewan@xxxxxxxxxxxxx
# Node ID c5045197dcb78032bda1d9f1ecfdb8ceec42d618
# Parent  723f81936cf7fbdde488f930be072ffe4a4bce3d
Removed {add,get}_{config,device}_handler in favour of using a simple 
dictionary directly.  Fix a misnamed variable blconfig that was supposed to 
refer to blcfg.  This showed up under pylint as a undefined variable, but would 
have manifested itself in the bootloader configuration being ignored.

diff -r 723f81936cf7 -r c5045197dcb7 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Tue Sep 13 13:43:18 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py   Tue Sep 13 13:48:22 2005
@@ -101,34 +101,6 @@
     @rtype:  string
     """
     return shutdown_reasons.get(code, "?")
-
-config_handlers = {}
-
-def add_config_handler(name, h):
-    """Add a handler for a config field.
-
-    @param name:     field name
-    @param h:        handler: fn(vm, config, field, index)
-    """
-    config_handlers[name] = h
-
-def get_config_handler(name):
-    """Get a handler for a config field.
-
-    returns handler or None
-    """
-    return config_handlers.get(name)
-
-"""Table of handlers for devices.
-Indexed by device type.
-"""
-device_handlers = {}
-
-def add_device_handler(name, type):
-    device_handlers[name] = type
-
-def get_device_handler(name):
-    return device_handlers[name]
 
 def dom_get(dom):
     """Get info from xen for an existing domain.
@@ -368,12 +340,6 @@
         return s
 
     __repr__ = __str__
-
-    def getDeviceTypes(self):
-        return self.controllers.keys()
-
-    def getDeviceControllers(self):
-        return self.controllers.values()
 
     def getDeviceController(self, type, error=True):
         ctrl = self.controllers.get(type)
@@ -595,7 +561,7 @@
 
     def sxpr_devices(self):
         sxpr = []
-        for ty in self.getDeviceTypes():
+        for ty in self.controllers.keys():
             devs = self.getDeviceSxprs(ty)
             sxpr += devs
         if sxpr:
@@ -796,7 +762,7 @@
         """Release all vm devices.
         """
         reboot = self.restart_pending()
-        for ctrl in self.getDeviceControllers():
+        for ctrl in self.controllers.values():
             if ctrl.isDestroyed(): continue
             ctrl.destroyController(reboot=reboot)
         t = xstransact("%s/device" % self.path)
@@ -874,6 +840,7 @@
         self.store_channel = self.eventChannelOld("store_channel")
         self.console_channel = self.eventChannel("console", "port")
 
+
     def create_configured_devices(self):
         devices = sxp.children(self.config, 'device')
         for d in devices:
@@ -881,18 +848,20 @@
             if dev_config is None:
                 raise VmError('invalid device')
             dev_type = sxp.name(dev_config)
-            ctrl_type = get_device_handler(dev_type)
-            if ctrl_type is None:
+
+            if not controller.isDevControllerClass(dev_type):
                 raise VmError('unknown device type: ' + dev_type)
-            self.createDevice(ctrl_type, dev_config)
-        
+            
+            self.createDevice(dev_type, dev_config)
+
+
     def create_devices(self):
         """Create the devices for a vm.
 
         @raise: VmError for invalid devices
         """
         if self.rebooting():
-            for ctrl in self.getDeviceControllers():
+            for ctrl in self.controllers.values():
                 ctrl.initController(reboot=True)
         else:
             self.create_configured_devices()
@@ -1043,7 +1012,7 @@
             msg = "Had a bootloader specified, but can't find disk"
             log.error(msg)
             raise VmError(msg)
-        config = sxp.merge(['vm', blconfig ], self.config)
+        config = sxp.merge(['vm', blcfg ], self.config)
         return config
 
     def configure_backends(self):
@@ -1092,7 +1061,7 @@
         for field in sxp.children(self.config):
             field_name = sxp.name(field)
             field_index = index.get(field_name, 0)
-            field_handler = get_config_handler(field_name)
+            field_handler = config_handlers.get(field_name)
             # Ignore unknown fields. Warn?
             if field_handler:
                 v = field_handler(self, self.config, field, field_index)
@@ -1161,23 +1130,17 @@
         # get run-time value of vcpus and update store
         self.exportVCPUSToDB(dom_get(self.id)['vcpus'])
 
-def vm_field_ignore(vm, config, val, index):
+
+def vm_field_ignore(_, _1, _2, _3):
     """Dummy config field handler used for fields with built-in handling.
-
-    @param vm:        virtual machine
-    @param config:    vm config
-    @param val:       config field
-    @param index:     field index
+    Matches the signature required by config_handlers.
     """
     pass
 
-def vm_field_maxmem(vm, config, val, index):
-    """Configure vm memory limit.
-
-    @param vm:        virtual machine
-    @param config:    vm config
-    @param val:       config field
-    @param index:     field index
+
+def vm_field_maxmem(vm, _1, val, _2):
+    """Config field handler to configure vm memory limit.  Matches the
+    signature required by config_handlers.
     """
     maxmem = sxp.child0(val)
     if maxmem is None:
@@ -1188,8 +1151,10 @@
         raise VmError("invalid maxmem: " + str(maxmem))
     xc.domain_setmaxmem(vm.id, maxmem_kb = maxmem * 1024)
 
+
 #============================================================================
 # Register image handlers.
+
 from image import          \
      addImageHandlerClass, \
      ImageHandler,         \
@@ -1199,43 +1164,37 @@
 addImageHandlerClass(LinuxImageHandler)
 addImageHandlerClass(VmxImageHandler)
 
-# Ignore the fields we already handle.
-add_config_handler('name',       vm_field_ignore)
-add_config_handler('memory',     vm_field_ignore)
-add_config_handler('ssidref',    vm_field_ignore)
-add_config_handler('cpu',        vm_field_ignore)
-add_config_handler('cpu_weight', vm_field_ignore)
-add_config_handler('restart',    vm_field_ignore)
-add_config_handler('image',      vm_field_ignore)
-add_config_handler('device',     vm_field_ignore)
-add_config_handler('backend',    vm_field_ignore)
-add_config_handler('vcpus',      vm_field_ignore)
-add_config_handler('bootloader', vm_field_ignore)
-
-# Register other config handlers.
-add_config_handler('maxmem',     vm_field_maxmem)
+
+"""Table of handlers for field configuration.
+
+field_name[String]: fn(vm, config, field, index) -> value(ignored)
+"""
+config_handlers = {
+    
+    # Ignore the fields we already handle.
+    
+    'name':       vm_field_ignore,
+    'memory':     vm_field_ignore,
+    'ssidref':    vm_field_ignore,
+    'cpu':        vm_field_ignore,
+    'cpu_weight': vm_field_ignore,
+    'restart':    vm_field_ignore,
+    'image':      vm_field_ignore,
+    'device':     vm_field_ignore,
+    'backend':    vm_field_ignore,
+    'vcpus':      vm_field_ignore,
+    'bootloader': vm_field_ignore,
+    
+    # Register other config handlers.
+    'maxmem':     vm_field_maxmem
+    }
+
 
 #============================================================================
 # Register device controllers and their device config types.
 
-from server import blkif
-controller.addDevControllerClass("vbd", blkif.BlkifController)
-add_device_handler("vbd", "vbd")
-
-from server import netif
-controller.addDevControllerClass("vif", netif.NetifController)
-add_device_handler("vif", "vif")
-
-from server import tpmif
-controller.addDevControllerClass("vtpm", tpmif.TPMifController)
-add_device_handler("vtpm", "vtpm")
-
-from server import pciif
-controller.addDevControllerClass("pci", pciif.PciController)
-add_device_handler("pci", "pci")
-
-from xen.xend.server import usbif
-controller.addDevControllerClass("usb", usbif.UsbifController)
-add_device_handler("usb", "usb")
-
-#============================================================================
+controller.addDevControllerClass("vbd",  server.blkif.BlkifController)
+controller.addDevControllerClass("vif",  server.netif.NetifController)
+controller.addDevControllerClass("vtpm", server.tpmif.TPMifController)
+controller.addDevControllerClass("pci",  server.pciif.PciController)
+controller.addDevControllerClass("usb",  server.usbif.UsbifController)

_______________________________________________
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®.