Exemplo n.º 1
0
    def _parse_white_list_from_config(self, whitelists):
        """Parse and validate the pci whitelist from the nova config."""
        specs = []
        for jsonspec in whitelists:
            try:
                dev_spec = jsonutils.loads(jsonspec)
            except ValueError:
                raise exception.PciConfigInvalidWhitelist(
                    reason=_("Invalid entry: '%s'") % jsonspec)
            if isinstance(dev_spec, dict):
                dev_spec = [dev_spec]
            elif not isinstance(dev_spec, list):
                raise exception.PciConfigInvalidWhitelist(
                    reason=_("Invalid entry: '%s'; "
                             "Expecting list or dict") % jsonspec)

            for ds in dev_spec:
                if not isinstance(ds, dict):
                    raise exception.PciConfigInvalidWhitelist(
                        reason=_("Invalid entry: '%s'; "
                                 "Expecting dict") % ds)

                spec = pci_devspec.PciDeviceSpec(ds)
                specs.append(spec)

        return specs
Exemplo n.º 2
0
 def test_partial_address(self):
     pci_info = '{"address":":0a:00.", "physical_network":"hr_net"}'
     pci = pci_devspec.PciDeviceSpec(pci_info)
     dev = {"vendor_id": "1137",
            "product_id": "0071",
            "address": "0000:0a:00.5",
            "phys_function": "0000:0a:00.0"}
     self.assertTrue(pci.match(dev))
Exemplo n.º 3
0
    def _parse_white_list_from_config(self, whitelists):
        """Parse and validate the pci whitelist from the nova config."""
        specs = []
        for jsonspec in whitelists:
            spec = pci_devspec.PciDeviceSpec(jsonspec)
            specs.append(spec)

        return specs
Exemplo n.º 4
0
 def test_wrong_address(self):
     pci_info = {
         "vendor_id": "8086",
         "address": "*: *: *.6",
         "product_id": "5057",
         "physical_network": "hr_net"
     }
     pci = pci_devspec.PciDeviceSpec(pci_info)
     self.assertFalse(pci.match(dev))
Exemplo n.º 5
0
    def test_pci_obj(self):
        pci_info = ('{"vendor_id": "8086","address": "*:*:*.5", ' +
                   '"product_id": "5057", "physical_network": "hr_net"}')

        pci = pci_devspec.PciDeviceSpec(pci_info)
        pci_dev = {
            'compute_node_id': 1,
            'address': '0000:00:00.5',
            'product_id': '5057',
            'vendor_id': '8086',
            'status': 'available',
            'extra_k1': 'v1',
        }

        pci_obj = pci_device.PciDevice.create(pci_dev)
        self.assertTrue(pci.match_pci_obj(pci_obj))
Exemplo n.º 6
0
 def test_address_is_pf(self, mock_is_physical_function):
     pci_info = '{"address":"0000:0a:00.0", "physical_network":"hr_net"}'
     pci = pci_devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Exemplo n.º 7
0
 def test_address_is_undefined(self):
     pci_info = '{"vendor_id":"8086", "product_id":"5057"}'
     pci = pci_devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Exemplo n.º 8
0
 def test_by_name(self, mock_get_function_by_ifname):
     pci_info = '{"devname": "eth0", "physical_network": "hr_net"}'
     pci = pci_devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Exemplo n.º 9
0
 def test_invalid_product_id(self):
     pci_info = ('{"vendor_id": "8086","address": "*: *: *.5", ' +
                '"product_id": "5056", "physical_network": "hr_net"}')
     pci = pci_devspec.PciDeviceSpec(pci_info)
     self.assertFalse(pci.match(dev))