diff --git a/dbaas/logical/admin/database.py b/dbaas/logical/admin/database.py index 0c9beef04..8ed63c78d 100644 --- a/dbaas/logical/admin/database.py +++ b/dbaas/logical/admin/database.py @@ -42,7 +42,8 @@ from django.contrib.admin import site from django.db import IntegrityError from ..models import Database -from ..validators import check_is_database_enabled, check_resize_options +from ..validators import check_is_database_enabled, check_is_database_dead, \ + check_resize_options from ..errors import DisabledDatabase, NoResizeOption LOG = logging.getLogger(__name__) @@ -799,6 +800,7 @@ def generate_random_string(length, stringset=string.ascii_letters + string.digit def database_resize_view(self, request, database_id): try: + check_is_database_dead(database_id, 'VM resize') database = check_is_database_enabled(database_id, 'VM resize') from dbaas_cloudstack.models import CloudStackPack diff --git a/dbaas/logical/validators.py b/dbaas/logical/validators.py index 569ee3b72..078e98f4c 100644 --- a/dbaas/logical/validators.py +++ b/dbaas/logical/validators.py @@ -29,9 +29,6 @@ def check_is_database_enabled(database_id, operation): if database.is_in_quarantine: raise DatabaseInQuarantineError(operation, url) - if database.is_dead() or not database.database_status.is_alive: - raise DatabaseIsDeadError(operation, url) - if database.is_beeing_used_elsewhere(): raise BusyDatabaseError(url) @@ -41,6 +38,16 @@ def check_is_database_enabled(database_id, operation): return database +def check_is_database_dead(database_id, operation): + from logical.models import Database + database = Database.objects.get(id=database_id) + + url = _get_database_error_url(database_id) + if database.is_dead() or not database.database_status.is_alive: + raise DatabaseIsDeadError(operation, url) + + return database + def check_resize_options(database_id, offerings): if not offerings: