Skip to content

Commit d62fb8b

Browse files
committed
Improve database is_being_used, checking current task error
1 parent d3feaa4 commit d62fb8b

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

dbaas/logical/models.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -510,8 +510,15 @@ def get_cloudstack_service_offering_id(self):
510510

511511
offering_id = property(get_cloudstack_service_offering_id)
512512

513-
def is_being_used_elsewhere(self):
514-
return self.current_task
513+
def is_being_used_elsewhere(self, skip_task_name=None):
514+
if not self.current_task:
515+
return False
516+
517+
if self.current_task.task_name == skip_task_name:
518+
if self.current_task.is_status_error:
519+
return False
520+
521+
return True
515522

516523
def has_flipperfox_migration_started(self,):
517524
from flipperfox_migration.models import DatabaseFlipperFoxMigrationDetail
@@ -665,9 +672,9 @@ def can_do_upgrade_retry(self):
665672
error = "MongoDB 2.4 cannot be upgraded by this task."
666673
elif self.is_in_quarantine:
667674
error = "Database in quarantine and cannot be upgraded."
668-
elif self.is_being_used_elsewhere():
669-
error = "Database cannot be upgraded because" \
670-
" it is in use by another task."
675+
elif self.is_being_used_elsewhere('notification.tasks.upgrade_database'):
676+
error = "Database cannot be upgraded because " \
677+
"it is in use by another task."
671678
elif self.has_flipperfox_migration_started():
672679
error = "Database is being migrated and cannot be upgraded."
673680
elif not self.infra.plan.engine_equivalent_plan:
@@ -696,11 +703,9 @@ def can_do_resize_retry(self):
696703
error = "Database is being migrated and cannot be resized."
697704
elif not self.has_cloudstack_offerings:
698705
error = "There is no offerings for this database."
699-
elif self.is_being_used_elsewhere():
700-
task_name = self.current_task.task_name
701-
if not task_name == "notification.tasks.resize_database":
702-
error = "Database cannot be resized because" \
703-
" it is in use by another task."
706+
elif self.is_being_used_elsewhere('notification.tasks.resize_database'):
707+
error = "Database cannot be resized because" \
708+
" it is in use by another task."
704709
if error:
705710
return False, error
706711
return True, None

dbaas/notification/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,7 @@ def waiting_tasks(cls):
155155
@property
156156
def is_running(self):
157157
return self.task_status == self.STATUS_RUNNING
158+
159+
@property
160+
def is_status_error(self):
161+
return self.task_status == self.STATUS_ERROR

dbaas/notification/tests/test_task_history.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,11 @@ def test_is_running(self):
6969
def test_is_not_running(self):
7070
self.task.task_status = TaskHistory.STATUS_SUCCESS
7171
self.assertFalse(self.task.is_running)
72+
73+
def test_is_error(self):
74+
self.task.task_status = TaskHistory.STATUS_ERROR
75+
self.assertTrue(self.task.is_status_error)
76+
77+
def test_is_not_error(self):
78+
self.task.task_status = TaskHistory.STATUS_SUCCESS
79+
self.assertFalse(self.task.is_status_error)

0 commit comments

Comments
 (0)