Exemplo n.º 1
0
    def scan_vf_devices(cls, dev_name):
        """Scan os directories to get VF devices

        @param dev_name: pf network device name
        @return: list of virtual functions
        """
        vf_list = []
        dev_path = cls.DEVICE_PATH % dev_name
        if not os.path.isdir(dev_path):
            LOG.error(_LE("Failed to get devices for %s"), dev_name)
            raise exc.InvalidDeviceError(dev_name=dev_name,
                                         reason=_("Device not found"))
        file_list = os.listdir(dev_path)
        for file_name in file_list:
            pattern_match = cls.VIRTFN_REG_EX.match(file_name)
            if pattern_match:
                vf_index = int(pattern_match.group("vf_index"))
                file_path = os.path.join(dev_path, file_name)
                if os.path.islink(file_path):
                    file_link = os.readlink(file_path)
                    pci_slot = os.path.basename(file_link)
                    vf_list.append((pci_slot, vf_index))
        if not vf_list:
            raise exc.InvalidDeviceError(
                dev_name=dev_name, reason=_("Device has no virtual functions"))
        return vf_list
Exemplo n.º 2
0
    def test_create_eswitch_mgr_fail(self):
        device_mappings = {'physnet1': 'p6p1'}
        with mock.patch("neutron.plugins.ml2.drivers.mech_sriov.agent."
                        "eswitch_manager.PciOsWrapper.scan_vf_devices",
                        side_effect=exc.InvalidDeviceError(
                            dev_name="p6p1", reason="device" " not found")),\
                mock.patch("neutron.plugins.ml2.drivers.mech_sriov.agent."
                           "eswitch_manager.PciOsWrapper.is_assigned_vf",
                           return_value=True):

            with testtools.ExpectedException(exc.InvalidDeviceError):
                esm.ESwitchManager().discover_devices(device_mappings, None)
Exemplo n.º 3
0
 def test_create_eswitch_mgr_fail(self):
     device_mappings = {'physnet1': ['p6p1']}
     with mock.patch("neutron.plugins.ml2.drivers.mech_sriov.agent."
                     "eswitch_manager.PciOsWrapper.scan_vf_devices",
                     side_effect=exc.InvalidDeviceError(
                         dev_name="p6p1", reason="device" " not found")),\
             mock.patch("neutron.plugins.ml2.drivers.mech_sriov.agent."
                        "eswitch_manager.PciOsWrapper.pf_device_exists",
                        return_value=True):
         eswitch_mgr = esm.ESwitchManager()
         self.addCleanup(self.cleanup)
         self.assertRaises(exc.InvalidDeviceError,
                           eswitch_mgr.discover_devices, device_mappings,
                           None)