diff --git a/nova/compute/api.py b/nova/compute/api.py index 87e76a7a69ac..588a8124bc85 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -2034,7 +2034,8 @@ class API(base.Base): else: flavor = flavor or instance.flavor instance_vcpus = flavor.vcpus - instance_memory_mb = flavor.memory_mb + vram_mb = int(flavor.get('extra_specs', {}).get(VIDEO_RAM, 0)) + instance_memory_mb = flavor.memory_mb + vram_mb quotas = objects.Quotas(context=context) quotas.reserve(project_id=project_id, diff --git a/nova/tests/unit/compute/test_compute_api.py b/nova/tests/unit/compute/test_compute_api.py index 1d432996c196..227894bd290a 100644 --- a/nova/tests/unit/compute/test_compute_api.py +++ b/nova/tests/unit/compute/test_compute_api.py @@ -961,9 +961,11 @@ class _ComputeAPIUnitTestMixIn(object): inst = self._create_instance_obj() inst.update(attrs) inst._context = self.context + vram_mb = int(inst.flavor.get('extra_specs', + {}).get(compute_api.VIDEO_RAM, 0)) deltas = {'instances': -1, 'cores': -inst.flavor.vcpus, - 'ram': -inst.flavor.memory_mb} + 'ram': -(inst.flavor.memory_mb + vram_mb)} delete_time = datetime.datetime(1955, 11, 5, 9, 30, tzinfo=iso8601.iso8601.Utc()) self.useFixture(utils_fixture.TimeFixture(delete_time)) @@ -1105,6 +1107,12 @@ class _ComputeAPIUnitTestMixIn(object): def test_delete_in_resized(self): self._test_delete('delete', vm_state=vm_states.RESIZED) + def test_delete_with_vram(self): + flavor = objects.Flavor(vcpus=1, memory_mb=512, + extra_specs={compute_api.VIDEO_RAM: "64"}) + self._test_delete('delete', + flavor=flavor) + def test_delete_shelved(self): fake_sys_meta = {'shelved_image_id': SHELVED_IMAGE} self._test_delete('delete',