Allow force-delete even if task_state is not None
As of now, if vm task_state is not 'None', and user tries
to force-delete instance, then he gets HTTP 500 Error
and instance deletion doesn't progress.
The same is not the case, when user tries with delete api
instead of force-delete api, even if vm task_state is not 'None'.
Fixed the issue by allowing force-delete to delete instance
in task_state other than None.
Change-Id: Ida1a9d8761cec9585f031ec25e5692b8bb55661e
Closes-Bug: #1741000
(cherry picked from commit 0d2031a5c4
)
This commit is contained in:
parent
0b15880b48
commit
29b3eada89
|
@ -2198,7 +2198,8 @@ class API(base.Base):
|
|||
instance.save(expected_task_state=[None])
|
||||
|
||||
@check_instance_lock
|
||||
@check_instance_state(must_have_launched=False)
|
||||
@check_instance_state(task_state=None,
|
||||
must_have_launched=False)
|
||||
def force_delete(self, context, instance):
|
||||
"""Force delete an instance in any vm_state/task_state."""
|
||||
self._delete(context, instance, 'force_delete', self._do_force_delete,
|
||||
|
|
|
@ -1050,6 +1050,11 @@ class _ComputeAPIUnitTestMixIn(object):
|
|||
system_metadata=fake_sys_meta)
|
||||
self._test_delete('force_delete', vm_state=vm_state)
|
||||
|
||||
def test_delete_forced_when_task_state_is_not_none(self):
|
||||
for vm_state in self._get_vm_states():
|
||||
self._test_delete('force_delete', vm_state=vm_state,
|
||||
task_state=task_states.RESIZE_MIGRATING)
|
||||
|
||||
@mock.patch('nova.compute.api.API._delete_while_booting',
|
||||
return_value=False)
|
||||
@mock.patch('nova.compute.api.API._lookup_instance')
|
||||
|
|
Loading…
Reference in New Issue