Пример #1
0
    def device_from_node(conn, name=None, nodedev=None, is_dup=False, dev=None):
        """
        Convert the passed device name to a VirtualHostDevice
        instance, with proper error reporting. Name can be any of the
        values accepted by NodeDeviceParser.lookupNodeName. If a node
        device name is not specified, a virtinst.NodeDevice instance can
        be passed in to create a dev from.

        @param conn: libvirt.virConnect instance to perform the lookup on
        @param name: optional libvirt node device name to lookup
        @param nodedev: optional L{virtinst.NodeDevice} instance to use

        @rtype: L{virtinst.VirtualHostDevice} instance
        """
        if not name and not nodedev:
            raise ValueError("'name' or 'nodedev' required.")

        if nodedev:
            nodeinst = nodedev
        else:
            nodeinst, addr_type = NodeDeviceParser.lookupNodeName(conn, name)
            if addr_type == NodeDeviceParser.HOSTDEV_ADDR_TYPE_USB_BUSADDR:
                is_dup = True

        if isinstance(nodeinst, NodeDeviceParser.NetDevice):
            parentname = nodeinst.parent
            return VirtualHostDevice.device_from_node(conn, name=parentname)
        if not dev:
            dev = VirtualHostDevice(conn)
        dev.set_from_nodedev(nodeinst, is_dup)
        return dev
Пример #2
0
    def _testCompare(self, devname, vals, devxml=None):
        if devxml:
            dev = nodeparse.parse(devxml)
        else:
            dev = self._nodeDevFromName(devname)

        for attr in vals.keys():
            self.assertEqual(vals[attr], getattr(dev, attr))
Пример #3
0
    def _testCompare(self, devname, vals, devxml=None):
        if devxml:
            dev = nodeparse.parse(devxml)
        else:
            dev = self._nodeDevFromName(devname)

        for attr in vals.keys():
            self.assertEqual(vals[attr], getattr(dev, attr))
Пример #4
0
    def device_from_node(conn, name=None, nodedev=None, is_dup=False):
        """
        Convert the passed device name to a VirtualHostDevice
        instance, with proper error reporting. Name can be any of the
        values accepted by NodeDeviceParser.lookupNodeName. If a node
        device name is not specified, a virtinst.NodeDevice instance can
        be passed in to create a dev from.

        @param conn: libvirt.virConnect instance to perform the lookup on
        @param name: optional libvirt node device name to lookup
        @param nodedev: optional L{virtinst.NodeDevice} instance to use

        @rtype: L{virtinst.VirtualHostDevice} instance
        """

        if not name and not nodedev:
            raise ValueError(_("'name' or 'nodedev' required."))

        if nodedev:
            nodeinst = nodedev
        else:
            nodeinst, addr_type = NodeDeviceParser.lookupNodeName(conn, name)
            if addr_type == NodeDeviceParser.HOSTDEV_ADDR_TYPE_USB_BUSADDR:
                is_dup = True

        if isinstance(nodeinst, NodeDeviceParser.PCIDevice):
            return VirtualHostDevicePCI(conn, nodedev=nodeinst)
        elif isinstance(nodeinst, NodeDeviceParser.USBDevice):
            return VirtualHostDeviceUSB(conn, nodedev=nodeinst, is_dup=is_dup)
        elif isinstance(nodeinst, NodeDeviceParser.NetDevice):
            parentname = nodeinst.parent
            try:
                return VirtualHostDevice.device_from_node(conn,
                                                          name=parentname)
            except:
                logging.exception("Fetching net parent device failed.")

        raise ValueError(
            _("Node device type '%s' cannot be attached to "
              " guest.") % nodeinst.device_type)
Пример #5
0
    def device_from_node(conn, name=None, nodedev=None, is_dup=False):
        """
        Convert the passed device name to a VirtualHostDevice
        instance, with proper error reporting. Name can be any of the
        values accepted by NodeDeviceParser.lookupNodeName. If a node
        device name is not specified, a virtinst.NodeDevice instance can
        be passed in to create a dev from.

        @param conn: libvirt.virConnect instance to perform the lookup on
        @param name: optional libvirt node device name to lookup
        @param nodedev: optional L{virtinst.NodeDevice} instance to use

        @rtype: L{virtinst.VirtualHostDevice} instance
        """

        if not name and not nodedev:
            raise ValueError(_("'name' or 'nodedev' required."))

        if nodedev:
            nodeinst = nodedev
        else:
            nodeinst, addr_type = NodeDeviceParser.lookupNodeName(conn, name)
            if addr_type == NodeDeviceParser.HOSTDEV_ADDR_TYPE_USB_BUSADDR:
                is_dup = True

        if isinstance(nodeinst, NodeDeviceParser.PCIDevice):
            return VirtualHostDevicePCI(conn, nodedev=nodeinst)
        elif isinstance(nodeinst, NodeDeviceParser.USBDevice):
            return VirtualHostDeviceUSB(conn, nodedev=nodeinst, is_dup=is_dup)
        elif isinstance(nodeinst, NodeDeviceParser.NetDevice):
            parentname = nodeinst.parent
            try:
                return VirtualHostDevice.device_from_node(conn,
                                                          name=parentname)
            except:
                logging.exception("Fetching net parent device failed.")

        raise ValueError(_("Node device type '%s' cannot be attached to "
                           " guest.") % nodeinst.device_type)
Пример #6
0
 def _nodeDevFromName(self, devname):
     node = conn.nodeDeviceLookupByName(devname)
     xml = node.XMLDesc(0)
     return nodeparse.parse(xml)
Пример #7
0
 def _nodeDevFromName(self, devname):
     node = conn.nodeDeviceLookupByName(devname)
     xml = node.XMLDesc(0)
     return nodeparse.parse(xml)