def consume_from_instance(self, instance): """Incrementally update host state from an instance.""" disk_mb = (instance['root_gb'] + instance['ephemeral_gb']) * 1024 ram_mb = instance['memory_mb'] vcpus = instance['vcpus'] self.free_ram_mb -= ram_mb self.free_disk_mb -= disk_mb self.vcpus_used += vcpus self.updated = timeutils.utcnow() # Track number of instances on host self.num_instances += 1 pci_requests = pci_request.get_instance_pci_requests(instance) if pci_requests and self.pci_stats: self.pci_stats.apply_requests(pci_requests) vm_state = instance.get('vm_state', vm_states.BUILDING) task_state = instance.get('task_state') if vm_state == vm_states.BUILDING or task_state in [ task_states.RESIZE_MIGRATING, task_states.REBUILDING, task_states.RESIZE_PREP, task_states.IMAGE_SNAPSHOT, task_states.IMAGE_BACKUP, task_states.UNSHELVING, task_states.RESCUING ]: self.num_io_ops += 1
def _test_pci(self): pci_requests = pci_request.get_instance_pci_requests(self.instance) if pci_requests: can_claim = self.tracker.pci_tracker.stats.support_requests(pci_requests) if not can_claim: return _("Claim pci failed.")
def _test_pci(self): pci_requests = pci_request.get_instance_pci_requests( self.instance, 'new_') if not pci_requests: return True return self.tracker.pci_tracker.stats.support_requests(pci_requests)
def consume_from_instance(self, instance): """Incrementally update host state from an instance.""" disk_mb = (instance['root_gb'] + instance['ephemeral_gb']) * 1024 ram_mb = instance['memory_mb'] vcpus = instance['vcpus'] self.free_ram_mb -= ram_mb self.free_disk_mb -= disk_mb self.vcpus_used += vcpus self.updated = timeutils.utcnow() # Track number of instances on host self.num_instances += 1 pci_requests = pci_request.get_instance_pci_requests(instance) if pci_requests and self.pci_stats: self.pci_stats.apply_requests(pci_requests) vm_state = instance.get('vm_state', vm_states.BUILDING) task_state = instance.get('task_state') if vm_state == vm_states.BUILDING or task_state in [ task_states.RESIZE_MIGRATING, task_states.REBUILDING, task_states.RESIZE_PREP, task_states.IMAGE_SNAPSHOT, task_states.IMAGE_BACKUP, task_states.UNSHELVING, task_states.RESCUING]: self.num_io_ops += 1
def _test_pci(self): pci_requests = pci_request.get_instance_pci_requests( self.instance, 'new_') if pci_requests: claim = self.tracker.pci_tracker.stats.support_requests( pci_requests) if not claim: return _('Claim pci failed.')
def _claim_instance(self, instance, prefix=''): pci_requests = pci_request.get_instance_pci_requests(instance, prefix) if not pci_requests: return None devs = self.stats.consume_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def _claim_instance(self, instance, prefix=""): pci_requests = pci_request.get_instance_pci_requests(instance, prefix) if not pci_requests: return None devs = self.get_free_devices_for_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: dev.claim(instance) self.stats.consume_device(dev) return devs
def _claim_instance(self, instance, prefix=''): pci_requests = pci_request.get_instance_pci_requests( instance, prefix) if not pci_requests: return None devs = self.stats.consume_requests(pci_requests) if not devs: raise exception.PciDeviceRequestFailed(pci_requests) for dev in devs: pci_device.claim(dev, instance) return devs
def consume_from_instance(self, instance): """Incrementally update host state from an instance.""" disk_mb = (instance["root_gb"] + instance["ephemeral_gb"]) * 1024 ram_mb = instance["memory_mb"] vcpus = instance["vcpus"] self.free_ram_mb -= ram_mb self.free_disk_mb -= disk_mb self.vcpus_used += vcpus self.updated = timeutils.utcnow() # Track number of instances on host self.num_instances += 1 # Track number of instances by project_id project_id = instance.get("project_id") if project_id not in self.num_instances_by_project: self.num_instances_by_project[project_id] = 0 self.num_instances_by_project[project_id] += 1 # Track number of instances in certain vm_states vm_state = instance.get("vm_state", vm_states.BUILDING) if vm_state not in self.vm_states: self.vm_states[vm_state] = 0 self.vm_states[vm_state] += 1 # Track number of instances in certain task_states task_state = instance.get("task_state") if task_state not in self.task_states: self.task_states[task_state] = 0 self.task_states[task_state] += 1 # Track number of instances by host_type os_type = instance.get("os_type") if os_type not in self.num_instances_by_os_type: self.num_instances_by_os_type[os_type] = 0 self.num_instances_by_os_type[os_type] += 1 pci_requests = pci_request.get_instance_pci_requests(instance) if pci_requests and self.pci_stats: self.pci_stats.apply_requests(pci_requests) vm_state = instance.get("vm_state", vm_states.BUILDING) task_state = instance.get("task_state") if vm_state == vm_states.BUILDING or task_state in [ task_states.RESIZE_MIGRATING, task_states.REBUILDING, task_states.RESIZE_PREP, task_states.IMAGE_SNAPSHOT, task_states.IMAGE_BACKUP, ]: self.num_io_ops += 1
def consume_from_instance(self, instance): """Incrementally update host state from an instance.""" disk_mb = (instance['root_gb'] + instance['ephemeral_gb']) * 1024 ram_mb = instance['memory_mb'] vcpus = instance['vcpus'] self.free_ram_mb -= ram_mb self.free_disk_mb -= disk_mb self.vcpus_used += vcpus self.updated = timeutils.utcnow() # Track number of instances on host self.num_instances += 1 # Track number of instances by project_id project_id = instance.get('project_id') if project_id not in self.num_instances_by_project: self.num_instances_by_project[project_id] = 0 self.num_instances_by_project[project_id] += 1 # Track number of instances in certain vm_states vm_state = instance.get('vm_state', vm_states.BUILDING) if vm_state not in self.vm_states: self.vm_states[vm_state] = 0 self.vm_states[vm_state] += 1 # Track number of instances in certain task_states task_state = instance.get('task_state') if task_state not in self.task_states: self.task_states[task_state] = 0 self.task_states[task_state] += 1 # Track number of instances by host_type os_type = instance.get('os_type') if os_type not in self.num_instances_by_os_type: self.num_instances_by_os_type[os_type] = 0 self.num_instances_by_os_type[os_type] += 1 pci_requests = pci_request.get_instance_pci_requests(instance) if pci_requests and self.pci_stats: self.pci_stats.apply_requests(pci_requests) vm_state = instance.get('vm_state', vm_states.BUILDING) task_state = instance.get('task_state') if vm_state == vm_states.BUILDING or task_state in [ task_states.RESIZE_MIGRATING, task_states.REBUILDING, task_states.RESIZE_PREP, task_states.IMAGE_SNAPSHOT, task_states.IMAGE_LIVE_SNAPSHOT, task_states.IMAGE_BACKUP ]: self.num_io_ops += 1
def test_get_instance_pci_requests_prefix(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [{ 'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}] instance = {"system_metadata": {"new_pci_requests": jsonutils.dumps(expect_request)}} requests = pci_request.get_instance_pci_requests(instance, 'new_') exp_real = zip(expect_request, requests) for exp, real in exp_real: self.assertEqual(real, exp)
def test_get_instance_pci_requests_no_request(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) instance = {'system_metadata': {'a': 'b'}} requests = pci_request.get_instance_pci_requests(instance) self.assertEqual([], requests)
def test_get_instance_pci_requests_no_meta(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) instance = {} requests = pci_request.get_instance_pci_requests(instance) self.assertEqual([], requests)