def get_dpdk_devargs(ifname, noop): if not noop: vendor_id = common.get_vendor_id(ifname) device_id = common.get_device_id(ifname) if vendor_id == "0x15b3": logger.info("Getting devargs for Mellanox cards") if device_id == "0x1007": # Some NICs (i.e. Mellanox ConnectX-3) have only one PCI # address associated with multiple ports. Using a PCI # device won’t work. Instead, we should use # "class=eth,mac=<MAC>" dpdk_devargs = f"class=eth,mac={common.interface_mac(ifname)}" elif is_active_nic(ifname): # Other Mellanox devices are active and they are not stored # in dpdk_mapping.yaml file, so we need to get their pci # address with ethtool. dpdk_devargs = get_pci_address(ifname, noop) elif common.is_vf_by_name(ifname): # For Mellanox devices the VFs bound with DPDK shall # be treated the same as VFs of other devices dpdk_devargs = get_pci_address(ifname, noop) else: msg = ("Unable to get devargs for interface %s" % ifname) raise InvalidInterfaceException(msg) else: logger.info("Getting stored PCI address as devarg") dpdk_devargs = get_stored_pci_address(ifname, noop) logger.debug("Devargs found: %s" % (dpdk_devargs)) return dpdk_devargs
def test_get_device_id_exception(self): mocked_open = mock.mock_open() mocked_open.side_effect = IOError with mock.patch('os_net_config.utils.open', mocked_open, create=True): device = common.get_device_id('nic2') self.assertEqual(None, device)
def test_get_device_id_success(self): mocked_open = mock.mock_open(read_data='0x1003\n') with mock.patch('os_net_config.common.open', mocked_open, create=True): device = common.get_device_id('nic2') self.assertEqual('0x1003', device)