diff options
| author | Kevin L. Mitchell <kevin.mitchell@rackspace.com> | 2012-07-25 17:27:57 -0500 |
|---|---|---|
| committer | Kevin L. Mitchell <kevin.mitchell@rackspace.com> | 2012-07-25 17:28:40 -0500 |
| commit | 6f0fecbed3a72ce052662a6bc6441d6aac6b9d1f (patch) | |
| tree | bae04b103d734b414c886985deb5359362746569 | |
| parent | 6908fbf2f819482e99fd266985e9d16cb97e2bb8 (diff) | |
Allow soft deletes from any state
At some point in the past, the compute manager's delete() method had
its @check_instance_state() decorator updated to allow deletes to be
performed from any combination of vm_state and task_state. This same
change was not made to the soft_delete() method, and so soft_delete()
is only available if the task_state is clear, meaning that instances
that are put into ERROR state with task_state set to something are
effectively undeletable, if FLAGS.reclaim_instance_interval is set to
some non-zero value (which is what causes the API DELETE call to use
soft_delete() as opposed to delete()). This patch updates the
@check_instance_state() on soft_delete() to match that on delete(),
and fixes bug 1029130 and bug 1029133. This patch also partially
fixes bug 1029132, but more needs to be done to completely fix that
bug.
Change-Id: I78878110c696280f2bc28434433814884a526264
| -rw-r--r-- | nova/compute/api.py | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index eb23a2412..ce256f5f6 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -824,8 +824,7 @@ class API(base.Base): return dict(instance_ref.iteritems()) @wrap_check_policy - @check_instance_state(vm_state=[vm_states.ACTIVE, vm_states.STOPPED, - vm_states.ERROR]) + @check_instance_state(vm_state=None, task_state=None) def soft_delete(self, context, instance): """Terminate an instance.""" LOG.debug(_('Going to try to soft delete instance'), |
