Ejemplo n.º 1
0
    def _parse_white_list_from_config(self, whitelists):
        """Parse and validate the pci whitelist from the zun 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 = devspec.PciDeviceSpec(ds)
                specs.append(spec)

        return specs
Ejemplo n.º 2
0
 def test_invalid_product_id(self):
     pci_info = {
         "vendor_id": "8086",
         "address": "*: *: *.5",
         "product_id": "5056",
         "physical_network": "hr_net"
     }
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertFalse(pci.match(dev))
Ejemplo n.º 3
0
 def test_partial_address_func(self):
     pci_info = {"address": ".5", "physical_network": "hr_net"}
     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))
Ejemplo n.º 4
0
 def test_spec_partial_address_regex(self):
     pci_info = {
         "address": {
             "domain": ".*",
             "bus": ".*",
             "slot": "00",
         },
         "physical_network": "hr_net"
     }
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Ejemplo n.º 5
0
 def test_address_is_pf_regex(self, mock_is_physical_function):
     pci_info = {
         "address": {
             "domain": "0000",
             "bus": "0a",
             "slot": "00",
             "function": "0"
         },
         "physical_network": "hr_net"
     }
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Ejemplo n.º 6
0
 def test_spec_regex_no_match(self):
     pci_info = {
         "address": {
             "domain": ".*",
             "bus": ".*",
             "slot": "00",
             "function": "[6-7]"
         },
         "physical_network": "hr_net"
     }
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertFalse(pci.match(dev))
Ejemplo n.º 7
0
 def test_invalid_name(self, mock_get_function_by_ifname):
     pci_info = {"devname": "lo", "physical_network": "hr_net"}
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertFalse(pci.match(dev))
Ejemplo n.º 8
0
 def test_address_pf_no_parent_addr(self, mock_is_physical_function):
     _dev = dev.copy()
     _dev.pop('parent_addr')
     pci_info = {"address": "0000:0a:00.5", "physical_network": "hr_net"}
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(_dev))
Ejemplo n.º 9
0
 def test_address_is_pf(self, mock_is_physical_function):
     pci_info = {"address": "0000:0a:00.0", "physical_network": "hr_net"}
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))
Ejemplo n.º 10
0
 def test_address_is_undefined(self):
     pci_info = {"vendor_id": "8086", "product_id": "5057"}
     pci = devspec.PciDeviceSpec(pci_info)
     self.assertTrue(pci.match(dev))