[BugFix] Release the memory quota for video ram when deleting an instance.

When creating an instance, the quota is used to contain vram,
and the deletion of the instance does not release the memory quota for vram,
if delete intance it need to release the memory quota for vram.

Change-Id: Iee2925c585c87d9885fd4bfe38cd9b4d316f5dab
Closes-Bug: #1681989
(cherry picked from commit f2d03bf92d)
This commit is contained in:
falseuser 2017-04-12 03:35:33 +00:00 committed by Lee Yarwood
parent 47774935ac
commit 87989c5a37
2 changed files with 11 additions and 2 deletions

View File

@ -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,

View File

@ -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',