Esempio n. 1
0
    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
Esempio n. 2
0
    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.")
Esempio n. 3
0
    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)
Esempio n. 4
0
    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
Esempio n. 5
0
    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)
Esempio n. 6
0
File: claims.py Progetto: ahil5/nova
 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.')
Esempio n. 7
0
 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.')
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
0
 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
Esempio n. 11
0
    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
Esempio n. 12
0
    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
Esempio n. 13
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
 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)
Esempio n. 16
0
 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)
Esempio n. 17
0
 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)
Esempio n. 18
0
 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)