Clean up allocations if instance deleted during build
When we notice that an instance was deleted after scheduling, we punt on
instance creation. When that happens, the scheduler will have created
allocations already so we need to delete those to avoid leaking resources.
Related-Bug: #1679750
Change-Id: I54806fe43257528fbec7d44c841ee4abb14c9dff
(cherry picked from commit 57a3af6921
)
This commit is contained in:
parent
60d6e87cac
commit
2cd20613e3
|
@ -1071,6 +1071,8 @@ class ComputeTaskManager(base.Base):
|
|||
'was already deleted.', instance=instance)
|
||||
# This is a placeholder in case the quota recheck fails.
|
||||
instances.append(None)
|
||||
rc = self.scheduler_client.reportclient
|
||||
rc.delete_allocation_for_instance(instance.uuid)
|
||||
continue
|
||||
else:
|
||||
instance.availability_zone = (
|
||||
|
|
|
@ -1759,7 +1759,11 @@ class ConductorTaskTestCase(_BaseTaskTestCase, test_compute.BaseTestCase):
|
|||
select_destinations.return_value = [{'host': 'fake-host',
|
||||
'nodename': 'nodesarestupid',
|
||||
'limits': None}]
|
||||
self.conductor.schedule_and_build_instances(**self.params)
|
||||
with mock.patch.object(self.conductor.scheduler_client,
|
||||
'reportclient') as mock_rc:
|
||||
self.conductor.schedule_and_build_instances(**self.params)
|
||||
mock_rc.delete_allocation_for_instance.assert_called_once_with(
|
||||
inst_uuid)
|
||||
# we don't create the instance since the build request is gone
|
||||
self.assertFalse(inst_create.called)
|
||||
# we don't build the instance since we didn't create it
|
||||
|
|
Loading…
Reference in New Issue