Merge "Force delete any instance or cluster"
This commit is contained in:
commit
3ea7d210b8
|
@ -302,12 +302,17 @@ class SimpleInstance(object):
|
|||
if self.db_info.task_status.is_error:
|
||||
return InstanceStatus.ERROR
|
||||
|
||||
# If we've reset the status, show it as an error
|
||||
if tr_instance.ServiceStatuses.UNKNOWN == self.datastore_status.status:
|
||||
action = self.db_info.task_status.action
|
||||
|
||||
# Check if we are resetting status or force deleting
|
||||
if (tr_instance.ServiceStatuses.UNKNOWN == self.datastore_status.status
|
||||
and action == InstanceTasks.DELETING.action):
|
||||
return InstanceStatus.SHUTDOWN
|
||||
elif (tr_instance.ServiceStatuses.UNKNOWN ==
|
||||
self.datastore_status.status):
|
||||
return InstanceStatus.ERROR
|
||||
|
||||
# Check for taskmanager status.
|
||||
action = self.db_info.task_status.action
|
||||
if 'BUILDING' == action:
|
||||
if 'ERROR' == self.db_info.server_status:
|
||||
return InstanceStatus.ERROR
|
||||
|
@ -753,18 +758,13 @@ class BaseInstance(SimpleInstance):
|
|||
return files
|
||||
|
||||
def reset_status(self):
|
||||
if self.is_building or self.is_error:
|
||||
LOG.info(_LI("Resetting the status to ERROR on instance %s."),
|
||||
self.id)
|
||||
self.reset_task_status()
|
||||
LOG.info(_LI("Resetting the status to ERROR on instance %s."),
|
||||
self.id)
|
||||
self.reset_task_status()
|
||||
|
||||
reset_instance = InstanceServiceStatus.find_by(instance_id=self.id)
|
||||
reset_instance.set_status(tr_instance.ServiceStatuses.UNKNOWN)
|
||||
reset_instance.save()
|
||||
else:
|
||||
raise exception.UnprocessableEntity(
|
||||
"Instance %s status can only be reset in BUILD or ERROR "
|
||||
"state." % self.id)
|
||||
reset_instance = InstanceServiceStatus.find_by(instance_id=self.id)
|
||||
reset_instance.set_status(tr_instance.ServiceStatuses.UNKNOWN)
|
||||
reset_instance.save()
|
||||
|
||||
|
||||
class FreshInstance(BaseInstance):
|
||||
|
|
|
@ -18,6 +18,7 @@ from trove.datastore import models
|
|||
from trove.instance.models import InstanceServiceStatus
|
||||
from trove.instance.models import InstanceStatus
|
||||
from trove.instance.models import SimpleInstance
|
||||
from trove.instance.tasks import InstanceTasks
|
||||
from trove.tests.unittests import trove_testtools
|
||||
from trove.tests.unittests.util import util
|
||||
import uuid
|
||||
|
@ -135,3 +136,14 @@ class InstanceStatusTest(BaseInstanceStatusTestCase):
|
|||
self.status.set_status(ServiceStatuses.RUNNING)
|
||||
instance = SimpleInstance('dummy context', self.db_info, self.status)
|
||||
self.assertEqual(InstanceStatus.ACTIVE, instance.status)
|
||||
|
||||
def test_service_status_reset_status(self):
|
||||
self.status.set_status(ServiceStatuses.UNKNOWN)
|
||||
instance = SimpleInstance('dummy context', self.db_info, self.status)
|
||||
self.assertEqual(InstanceStatus.ERROR, instance.status)
|
||||
|
||||
def test_service_status_force_deleteing(self):
|
||||
self.status.set_status(ServiceStatuses.UNKNOWN)
|
||||
self.db_info.task_status = InstanceTasks.DELETING
|
||||
instance = SimpleInstance('dummy context', self.db_info, self.status)
|
||||
self.assertEqual(InstanceStatus.SHUTDOWN, instance.status)
|
||||
|
|
Loading…
Reference in New Issue