def test_white_list_parsing(self, mock_whitelist_parse): white_list = '{"product_id":"0001", "vendor_id":"8086"}' CONF.set_override('passthrough_whitelist', white_list, 'pci') pci_stats = stats.PciDeviceStats() pci_stats.add_device(self.fake_dev_2) pci_stats.remove_device(self.fake_dev_2) self.assertEqual(1, mock_whitelist_parse.call_count)
def setUp(self): super(PciDeviceStatsTestCase, self).setUp() self.pci_stats = stats.PciDeviceStats() # The following two calls need to be made before adding the devices. patcher = fakes.fake_pci_whitelist() self.addCleanup(patcher.stop) self._create_fake_devs()
def test_pci_stats_equivalent(self): pci_stats2 = stats.PciDeviceStats() for dev in [ self.fake_dev_1, self.fake_dev_2, self.fake_dev_3, self.fake_dev_4 ]: pci_stats2.add_device(dev) self.assertEqual(self.pci_stats, pci_stats2)
def setUp(self): super(PciDeviceVFPFStatsTestCase, self).setUp() white_list = [ '{"vendor_id":"8086","product_id":"1528"}', '{"vendor_id":"8086","product_id":"1515"}' ] self.config(passthrough_whitelist=white_list, group='pci') self.pci_stats = stats.PciDeviceStats()
def test_object_create(self): m = self.pci_stats.to_device_pools_obj() new_stats = stats.PciDeviceStats(m) self.assertEqual(len(new_stats.pools), 3) self.assertEqual(set([d['count'] for d in new_stats]), set([1, 2])) self.assertEqual(set([d['vendor_id'] for d in new_stats]), set(['v1', 'v2', 'v3']))
def setUp(self): super(PciDeviceStatsWithTagsTestCase, self).setUp() white_list = [ '{"vendor_id":"1137","product_id":"0071",' '"address":"*:0a:00.*","physical_network":"physnet1"}', '{"vendor_id":"1137","product_id":"0072"}' ] self.config(passthrough_whitelist=white_list, group='pci') dev_filter = whitelist.Whitelist(white_list) self.pci_stats = stats.PciDeviceStats(dev_filter=dev_filter)
def test_pci_passthrough_no_pci_stats(self): request = objects.ContainerPCIRequest( count=1, spec=[{'vendor_id': '8086'}]) requests = objects.ContainerPCIRequests(requests=[request]) container = objects.Container(self.context) host = HostState('testhost') host.pci_stats = stats.PciDeviceStats() extra_spec = {'pci_requests': requests} self.assertFalse(self.filt_cls.host_passes(host, container, extra_spec))
def _update_from_compute_node(self, compute_node): """Update information about a host from a Compute object""" self.mem_total = compute_node.mem_total self.mem_free = compute_node.mem_free self.mem_used = compute_node.mem_used self.cpus = compute_node.cpus self.cpu_used = compute_node.cpu_used self.numa_topology = compute_node.numa_topology self.labels = compute_node.labels self.pci_stats = pci_stats.PciDeviceStats( stats=compute_node.pci_device_pools)
def _update_from_compute_node(self, compute_node): """Update information about a host from a Compute object""" self.mem_available = compute_node.mem_available self.mem_total = compute_node.mem_total self.mem_free = compute_node.mem_free self.mem_used = compute_node.mem_used self.cpus = compute_node.cpus self.cpu_used = compute_node.cpu_used self.disk_total = compute_node.disk_total self.disk_used = compute_node.disk_used self.numa_topology = compute_node.numa_topology self.labels = compute_node.labels self.pci_stats = pci_stats.PciDeviceStats( stats=compute_node.pci_device_pools) self.disk_quota_supported = compute_node.disk_quota_supported self.runtimes = compute_node.runtimes self.enable_cpu_pinning = compute_node.enable_cpu_pinning
def __init__(self, context, node_id=None): """Create a pci device tracker. If a node_id is passed in, it will fetch pci devices information from database, otherwise, it will create an empty devices list and the resource tracker will update the node_id information later. """ super(PciDevTracker, self).__init__() self.stale = {} self.node_id = node_id self.dev_filter = whitelist.Whitelist(CONF.pci.passthrough_whitelist) self.stats = stats.PciDeviceStats(dev_filter=self.dev_filter) self._context = context if node_id: self.pci_devs = objects.PciDevice.list_by_compute_node( context, node_id) else: self.pci_devs = [] self._build_device_tree(self.pci_devs) self._initial_instance_usage()