示例#1
0
文件: test_utils.py 项目: runt18/nova
 def test_physical_function(self, mock_readlink, *args):
     mock_readlink.return_value = '../../../0000:00:00.1'
     with mock.patch.object(
         builtins, 'open', mock.mock_open(read_data='4')):
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000:00:00.1')
         self.assertTrue(physical_function)
示例#2
0
 def test_virtual_function(self, mock_readlink, *args):
     mock_readlink.return_value = '../../../0000.00.00.1'
     with mock.patch.object(
         builtins, 'open', side_effect=IOError()):
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000.00.00.1')
         self.assertFalse(physical_function)
示例#3
0
    def _init_dev_details(self):
        details = jsonutils.loads(self.dev_spec)
        self.vendor_id = details.pop("vendor_id", ANY)
        self.product_id = details.pop("product_id", ANY)
        self.address = details.pop("address", None)
        self.dev_name = details.pop("devname", None)

        self.vendor_id = self.vendor_id.strip()
        get_pci_dev_info(self, 'vendor_id', MAX_VENDOR_ID, '%04x')
        get_pci_dev_info(self, 'product_id', MAX_PRODUCT_ID, '%04x')

        pf = False
        if self.address and self.dev_name:
            raise exception.PciDeviceInvalidDeviceName()
        if not self.address:
            if self.dev_name:
                self.address, pf = utils.get_function_by_ifname(
                    self.dev_name)
                if not self.address:
                    raise exception.PciDeviceNotFoundById(id=self.dev_name)
            else:
                self.address = "*:*:*.*"

        self.address = PciAddress(self.address, pf)
        self.tags = details
示例#4
0
 def test_virtual_function(self, mock_readlink, *args):
     mock_readlink.return_value = '../../../0000.00.00.1'
     with mock.patch.object(
         builtins, 'open', side_effect=IOError()):
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000.00.00.1')
         self.assertFalse(physical_function)
示例#5
0
 def test_physical_function(self, mock_readlink, *args):
     mock_readlink.return_value = '../../../0000:00:00.1'
     with mock.patch.object(builtins, 'open',
                            mock.mock_open(read_data='4')):
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000:00:00.1')
         self.assertTrue(physical_function)
 def test_physical_function(self, mock_readlink, *args):
     ifname = 'eth0'
     totalvf_path = "/sys/class/net/%s/device/%s" % (ifname,
                                                     utils._SRIOV_TOTALVFS)
     mock_readlink.return_value = '../../../0000:00:00.1'
     with self.patch_open(totalvf_path, '4') as mock_open:
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000:00:00.1')
         self.assertTrue(physical_function)
         mock_open.assert_called_once_with(totalvf_path)
示例#7
0
 def test_physical_function(self, mock_readlink, *args):
     ifname = 'eth0'
     totalvf_path = "/sys/class/net/%s/device/%s" % (ifname,
                                                     utils._SRIOV_TOTALVFS)
     mock_readlink.return_value = '../../../0000:00:00.1'
     with mock.patch.object(
         builtins, 'open', mock.mock_open(read_data='4')) as mock_open:
         address, physical_function = utils.get_function_by_ifname('eth0')
         self.assertEqual(address, '0000:00:00.1')
         self.assertTrue(physical_function)
         mock_open.assert_called_once_with(totalvf_path)
示例#8
0
 def match(self, dev_dict):
     if self.dev_name:
         address_str, pf = utils.get_function_by_ifname(self.dev_name)
         if not address_str:
             return False
         address_obj = PciAddress(address_str, pf)
     elif self.address:
         address_obj = self.address
     return all([
         self.vendor_id in (ANY, dev_dict['vendor_id']), self.product_id
         in (ANY, dev_dict['product_id']),
         address_obj.match(dev_dict['address'], dev_dict.get('parent_addr'))
     ])
示例#9
0
    def _address_obj(self) -> ty.Optional[WhitelistPciAddress]:
        address_obj = None
        if self.dev_name:
            address_str, pf = utils.get_function_by_ifname(self.dev_name)
            if not address_str:
                return None
            # Note(moshele): In this case we always passing a string
            # of the PF pci address
            address_obj = WhitelistPciAddress(address_str, pf)
        else:  # use self.address
            address_obj = self.address

        return address_obj
示例#10
0
文件: devspec.py 项目: 4everming/nova
 def match(self, dev_dict):
     if self.dev_name:
         address_str, pf = utils.get_function_by_ifname(
             self.dev_name)
         if not address_str:
             return False
         address_obj = PciAddress(address_str, pf)
     elif self.address:
         address_obj = self.address
     return all([
         self.vendor_id in (ANY, dev_dict['vendor_id']),
         self.product_id in (ANY, dev_dict['product_id']),
         address_obj.match(dev_dict['address'],
             dev_dict.get('parent_addr'))])
示例#11
0
 def match(self, dev_dict):
     if self.dev_name:
         address_str, pf = utils.get_function_by_ifname(self.dev_name)
         if not address_str:
             return False
         # Note(moshele): In this case we always passing a string
         # of the PF pci address
         address_obj = WhitelistPciAddress(address_str, pf)
     elif self.address:
         address_obj = self.address
     return all([
         self.vendor_id in (ANY, dev_dict['vendor_id']), self.product_id
         in (ANY, dev_dict['product_id']),
         address_obj.match(dev_dict['address'], dev_dict.get('parent_addr'))
     ])
示例#12
0
文件: devspec.py 项目: arbrandes/nova
 def match(self, dev_dict):
     if self.dev_name:
         address_str, pf = utils.get_function_by_ifname(
             self.dev_name)
         if not address_str:
             return False
         # Note(moshele): In this case we always passing a string
         # of the PF pci address
         address_obj = WhitelistPciAddress(address_str, pf)
     elif self.address:
         address_obj = self.address
     return all([
         self.vendor_id in (ANY, dev_dict['vendor_id']),
         self.product_id in (ANY, dev_dict['product_id']),
         address_obj.match(dev_dict['address'],
             dev_dict.get('parent_addr'))])
示例#13
0
文件: devspec.py 项目: youbun/nova
    def _init_dev_details(self):
        self.vendor_id = self.tags.pop("vendor_id", ANY)
        self.product_id = self.tags.pop("product_id", ANY)
        self.address = self.tags.pop("address", None)
        self.dev_name = self.tags.pop("devname", None)

        self.vendor_id = self.vendor_id.strip()
        get_pci_dev_info(self, 'vendor_id', MAX_VENDOR_ID, '%04x')
        get_pci_dev_info(self, 'product_id', MAX_PRODUCT_ID, '%04x')

        pf = False
        if self.address and self.dev_name:
            raise exception.PciDeviceInvalidDeviceName()
        if not self.address:
            if self.dev_name:
                self.address, pf = utils.get_function_by_ifname(self.dev_name)
                if not self.address:
                    raise exception.PciDeviceNotFoundById(id=self.dev_name)
            else:
                self.address = "*:*:*.*"

        self.address = PciAddress(self.address, pf)
示例#14
0
 def test_physical_function(self, mock_readlink, *args):
     mock_readlink.return_value = "../../../0000:00:00.1"
     with mock.patch.object(builtins, "open", mock.mock_open(read_data="4")):
         address, physical_function = utils.get_function_by_ifname("eth0")
         self.assertEqual(address, "0000:00:00.1")
         self.assertTrue(physical_function)
示例#15
0
 def test_exception(self, *args):
     address, physical_function = utils.get_function_by_ifname('lo')
     self.assertIsNone(address)
     self.assertFalse(physical_function)
示例#16
0
 def test_exception(self, mock_listdir):
     mock_listdir.side_effect = OSError('No such file or directory')
     address, physical_function = utils.get_function_by_ifname('lo')
     self.assertIsNone(address)
     self.assertFalse(physical_function)
示例#17
0
 def test_physical_function(self, mock_listdir, mock_readlink):
     mock_listdir.return_value = ['foo', 'virtfn1', 'bar']
     mock_readlink.return_value = '../../../0000:00:00.1'
     address, physical_function = utils.get_function_by_ifname('eth0')
     self.assertEqual(address, '0000:00:00.1')
     self.assertTrue(physical_function)
示例#18
0
 def test_exception(self, *args):
     address, physical_function = utils.get_function_by_ifname('lo')
     self.assertIsNone(address)
     self.assertFalse(physical_function)