예제 #1
0
    def from_xml_tree(cls, log, dev, meta):
        params = {
            'device': dev.tag,
            'type': core.find_device_type(dev),
        }
        dev_type = params.get('type')

        try:
            dev_name = _get_device_name(dev, dev_type)
        except KeyError:
            raise NotImplementedError

        core.update_device_params(params, dev)
        _update_hostdev_params(params, dev)
        params['device'] = dev_name
        core.update_device_params_from_meta(params, meta)
        # We cannot access mdev device as it doesn't exist yet.
        if dev_type != 'mdev':
            device_params = get_device_params(dev_name)
            device_class = cls._DEVICE_MAPPING[device_params['capability']]
        else:
            params['mdev_type'] = None
            params['mdev_placement'] = MdevPlacement.COMPACT
            mdev_metadata = meta.get('mdevType')
            if mdev_metadata:
                mdev_info = mdev_metadata.split('|')
                params['mdev_type'] = mdev_info[0]
                if len(mdev_info) > 1:
                    params['mdev_placement'] = mdev_info[1]
            device_class = MdevDevice
        return device_class(log, **params)
예제 #2
0
 def __init__(self, log, **kwargs):
     # pyLint can't tell that the Device.__init__() will
     # set a nicModel attribute, so modify the kwarg list
     # prior to device init.
     for attr, value in kwargs.items():
         if attr == 'nicModel' and value == 'pv':
             kwargs[attr] = 'virtio'
         elif attr == 'network' and value == '':
             kwargs[attr] = net_api.DUMMY_BRIDGE
     self.portMirroring = []
     self.filter = None
     self.filterParameters = []
     self.vm_custom = {}
     self.linkActive = True
     self.mtu = None
     self.port_isolated = None
     self.teaming = False
     super(Interface, self).__init__(log, **kwargs)
     self.sndbufParam = False
     self.is_hostdevice = self.device == hwclass.HOSTDEV
     self.vlanId = self.specParams.get('vlanid')
     self._customize()
     if self.is_hostdevice:
         self._device_params = get_device_params(self.hostdev)
         self.numa_node = self._device_params.get('numa_node', None)
예제 #3
0
파일: hostdevice.py 프로젝트: nirs/vdsm
    def from_xml_tree(cls, log, dev, meta):
        params = {
            'device': dev.tag,
            'type': core.find_device_type(dev),
        }
        dev_type = params.get('type')

        try:
            dev_name = _get_device_name(dev, dev_type)
        except KeyError:
            raise NotImplementedError

        core.update_device_params(params, dev)
        _update_hostdev_params(params, dev)
        params['device'] = dev_name
        core.update_device_params_from_meta(params, meta)
        # We cannot access mdev device as it doesn't exist yet.
        if dev_type != 'mdev':
            device_params = get_device_params(dev_name)
            device_class = cls._DEVICE_MAPPING[device_params['capability']]
        else:
            params['mdev_type'] = None
            params['mdev_placement'] = MdevPlacement.COMPACT
            mdev_metadata = meta.get('mdevType')
            if mdev_metadata:
                mdev_info = mdev_metadata.split('|')
                params['mdev_type'] = mdev_info[0]
                if len(mdev_info) > 1:
                    params['mdev_placement'] = mdev_info[1]
            device_class = MdevDevice
        return device_class(log, **params)
예제 #4
0
    def __init__(self, log, **kwargs):
        super(PciDevice, self).__init__(log, **kwargs)

        self._deviceParams = get_device_params(self.device)
        self.hostAddress = self._deviceParams.get('address')
        self.numa_node = self._deviceParams.get('numa_node', None)
        self.name = self.device
        self.is_hostdevice = True
예제 #5
0
파일: hostdevice.py 프로젝트: nirs/vdsm
    def __init__(self, log, **kwargs):
        super(PciDevice, self).__init__(log, **kwargs)

        self._deviceParams = get_device_params(self.device)
        self.hostAddress = self._deviceParams.get('address')
        self.numa_node = self._deviceParams.get('numa_node', None)
        self.name = self.device
        self.is_hostdevice = True
예제 #6
0
    def __init__(self, log, **kwargs):
        super(ScsiDevice, self).__init__(log, **kwargs)

        device_params = get_device_params(self.device)
        self.hostAddress = device_params.get('address')
        self.numa_node = None
        self.name = self.device
        self.bus_address, self.adapter = scsi_address_to_adapter(
            self.hostAddress)
        self.is_hostdevice = True
예제 #7
0
파일: hostdevice.py 프로젝트: nirs/vdsm
    def __init__(self, log, **kwargs):
        super(ScsiDevice, self).__init__(log, **kwargs)

        device_params = get_device_params(self.device)
        self.hostAddress = device_params.get('address')
        self.numa_node = None
        self.name = self.device
        self.bus_address, self.adapter = scsi_address_to_adapter(
            self.hostAddress)
        self.is_hostdevice = True
예제 #8
0
 def __new__(cls, log, **kwargs):
     try:
         device_params = get_device_params(kwargs['device'])
     except libvirt.libvirtError:
         # TODO: MdevDevice is somewhat generic "UnknownDevice" really, but
         # at this point we don't expect any other device to fail.
         # In future, we should be more careful whether device is mdev or
         # some really unknown device.
         return MdevDevice(log, **kwargs)
     device = cls._DEVICE_MAPPING[
         device_params['capability']](log, **kwargs)
     return device
예제 #9
0
파일: hostdevice.py 프로젝트: nirs/vdsm
 def __new__(cls, log, **kwargs):
     try:
         device_params = get_device_params(kwargs['device'])
     except libvirt.libvirtError:
         # TODO: MdevDevice is somewhat generic "UnknownDevice" really, but
         # at this point we don't expect any other device to fail.
         # In future, we should be more careful whether device is mdev or
         # some really unknown device.
         return MdevDevice(log, **kwargs)
     device = cls._DEVICE_MAPPING[
         device_params['capability']](log, **kwargs)
     return device
예제 #10
0
 def from_xml_tree(cls, log, dev, meta):
     params = {
         'device': dev.tag,
         'type': core.find_device_type(dev),
     }
     core.update_device_params(params, dev)
     _update_hostdev_params(params, dev)
     dev_type = params.get('type')
     dev_name = _get_device_name(dev, dev_type)
     params['device'] = dev_name
     device_params = get_device_params(dev_name)
     device_class = cls._DEVICE_MAPPING[device_params['capability']]
     return device_class(log, **params)
예제 #11
0
    def from_xml_tree(cls, log, dev, meta):
        params = {
            'device': dev.tag,
            'type': core.find_device_type(dev),
        }
        dev_type = params.get('type')

        try:
            dev_name = _get_device_name(dev, dev_type)
        except KeyError:
            raise NotImplementedError

        core.update_device_params(params, dev)
        _update_hostdev_params(params, dev)
        params['device'] = dev_name
        core.update_device_params_from_meta(params, meta)
        device_params = get_device_params(dev_name)
        device_class = cls._DEVICE_MAPPING[device_params['capability']]
        return device_class(log, **params)