Skip to content

Commit d183eb9

Browse files
authored
Merge pull request #233 from globocom/CleanRegionMigrationCode
Clean region migration code
2 parents a0a9724 + 5dfa2c0 commit d183eb9

File tree

22 files changed

+409
-1333
lines changed

22 files changed

+409
-1333
lines changed

dbaas/logical/admin/database.py

Lines changed: 4 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -227,34 +227,6 @@ def get_capacity_html(self, database):
227227

228228
get_capacity_html.short_description = "Capacity"
229229

230-
def get_actions(self, request):
231-
actions = super(DatabaseAdmin, self).get_actions(request)
232-
if request.user.team_set.filter(role__name="role_dba"):
233-
actions['multiple_initialize_migration'] = (self.multiple_initialize_migration,
234-
'multiple_initialize_migration',
235-
'Initialize Migration')
236-
237-
return actions
238-
239-
def multiple_initialize_migration(self, queryset, request, instances):
240-
from region_migration.models import DatabaseRegionMigration
241-
url = reverse(
242-
'admin:region_migration_databaseregionmigration_changelist')
243-
244-
for database in instances:
245-
region_migration = DatabaseRegionMigration(database=database,
246-
current_step=0,
247-
)
248-
try:
249-
region_migration.save()
250-
except IntegrityError:
251-
pass
252-
253-
self.message_user(
254-
request, "Migration for selected database(s) started!", level=messages.SUCCESS)
255-
256-
return HttpResponseRedirect(url)
257-
258230
def formfield_for_foreignkey(self, db_field, request, **kwargs):
259231
"""
260232
filter teams for the ones that the user is associated, unless the user has ther
@@ -485,7 +457,7 @@ def delete_view(self, request, object_id, extra_context=None):
485457
url = reverse('admin:logical_database_changelist')
486458
return HttpResponseRedirect(url)
487459

488-
if database.has_migration_started():
460+
if database.has_flipperfox_migration_started():
489461
self.message_user(
490462
request, "Database {} cannot be deleted because it is beeing migrated.".format(database.name), level=messages.ERROR)
491463
url = reverse('admin:logical_database_changelist')
@@ -513,7 +485,7 @@ def delete_model(modeladmin, request, obj):
513485
url = reverse('admin:logical_database_changelist')
514486
return HttpResponseRedirect(url)
515487

516-
if database.has_migration_started():
488+
if database.has_flipperfox_migration_started():
517489
modeladmin.message_user(
518490
request, "Database {} cannot be deleted because it is beeing migrated.".format(database.name), level=messages.ERROR)
519491
url = reverse('admin:logical_database_changelist')
@@ -896,7 +868,7 @@ def restore_snapshot(self, request, database_id):
896868
)
897869
return HttpResponseRedirect(url)
898870

899-
if database.has_migration_started():
871+
if database.has_flipperfox_migration_started():
900872
self.message_user(
901873
request,
902874
"Database {} cannot be restored because it is beeing migrated.".format(database.name),
@@ -944,44 +916,6 @@ def database_log_view(self, request, database_id):
944916
locals(),
945917
context_instance=RequestContext(request))
946918

947-
def initialize_migration(self, request, database_id):
948-
from region_migration.models import DatabaseRegionMigration
949-
950-
database = Database.objects.get(id=database_id)
951-
url = reverse('admin:logical_database_change', args=[database_id])
952-
953-
region_migration = DatabaseRegionMigration(database=database, current_step=0,)
954-
955-
if database.is_in_quarantine:
956-
self.message_user(request, "Database in quarantine and cannot be migrated", level=messages.ERROR)
957-
return HttpResponseRedirect(url)
958-
959-
if database.status != Database.ALIVE or not database.database_status.is_alive:
960-
self.message_user(request, "Database is dead and cannot be migrated", level=messages.ERROR)
961-
return HttpResponseRedirect(url)
962-
963-
if not request.user.team_set.filter(role__name="role_dba"):
964-
self.message_user(
965-
request,
966-
"You have no permissions to migrate {}. Please, contact your DBA".format(database.name),
967-
level=messages.ERROR
968-
)
969-
return HttpResponseRedirect(url)
970-
971-
url = reverse('admin:region_migration_databaseregionmigration_changelist')
972-
973-
if database.has_migration_started():
974-
self.message_user(request, "Database {} is already migrating".format(database.name), level=messages.ERROR)
975-
return HttpResponseRedirect(url)
976-
977-
try:
978-
region_migration.save()
979-
self.message_user(request, "Migration for {} started!".format(database.name), level=messages.SUCCESS)
980-
except IntegrityError, e:
981-
self.message_user(request, "Database {} is already migrating!".format(database.name), level=messages.ERROR)
982-
983-
return HttpResponseRedirect(url)
984-
985919
def initialize_flipperfox_migration(self, request, database_id):
986920
from flipperfox_migration.models import DatabaseFlipperFoxMigration
987921

@@ -1031,7 +965,7 @@ def mongodb_engine_version_upgrade(self, request, database_id):
1031965
self.message_user(request, "Database is dead and cannot be upgraded!", level=messages.ERROR)
1032966
return HttpResponseRedirect(url)
1033967

1034-
if database.has_migration_started():
968+
if database.has_flipperfox_migration_started():
1035969
self.message_user(
1036970
request,
1037971
"Database {} is being migrated and cannot be upgraded!".format(database.name),
@@ -1105,10 +1039,6 @@ def get_urls(self):
11051039
self.admin_site.admin_view(self.restore_snapshot),
11061040
name="database_restore_snapshot"),
11071041

1108-
url(r'^/?(?P<database_id>\d+)/initialize_migration/$',
1109-
self.admin_site.admin_view(self.initialize_migration),
1110-
name="database_initialize_migration"),
1111-
11121042
url(r'^/?(?P<database_id>\d+)/initialize_flipperfox_migration/$',
11131043
self.admin_site.admin_view(self.initialize_flipperfox_migration),
11141044
name="database_initialize_flipperfox_migration"),

dbaas/logical/models.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -408,9 +408,6 @@ def get_lognit_url(self):
408408
def get_restore_url(self):
409409
return "/admin/logical/database/{}/restore/".format(self.id)
410410

411-
def get_migration_url(self):
412-
return "/admin/logical/database/{}/initialize_migration/".format(self.id)
413-
414411
def get_mongodb_engine_version_upgrade_url(self):
415412
return "/admin/logical/database/{}/mongodb_engine_version_upgrade/".format(self.id)
416413

@@ -463,32 +460,10 @@ def is_beeing_used_elsewhere(self, task_id=None):
463460

464461
return False
465462

466-
def has_migration_started(self,):
467-
from region_migration.models import DatabaseRegionMigrationDetail
468-
try:
469-
migration = self.migration.get()
470-
except ObjectDoesNotExist:
471-
return False
472-
473-
if migration.is_migration_finished():
474-
return False
475-
476-
if migration.current_step > 0:
477-
return True
478-
479-
status_to_check = [DatabaseRegionMigrationDetail.WAITING,
480-
DatabaseRegionMigrationDetail.RUNNING]
481-
482-
details = migration.details.filter(status__in=status_to_check)
483-
if details:
484-
return True
485-
486-
return False
487-
488463
def has_flipperfox_migration_started(self,):
489464
from flipperfox_migration.models import DatabaseFlipperFoxMigrationDetail
490465
try:
491-
migration = self.migration.get()
466+
migration = self.flipperfoxmigration.get()
492467
except ObjectDoesNotExist:
493468
return False
494469

dbaas/logical/tests/test_database.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ def test_create_database(self):
4444

4545
self.assertTrue(database.pk)
4646

47-
@skip("aovid this test due to region migration")
4847
def test_create_duplicate_database_error(self):
4948

5049
database = Database(name="bleble", databaseinfra=self.databaseinfra,
@@ -55,7 +54,8 @@ def test_create_duplicate_database_error(self):
5554
self.assertTrue(database.pk)
5655

5756
self.assertRaises(IntegrityError, Database(name="bleble",
58-
databaseinfra=self.databaseinfra).save)
57+
databaseinfra=self.databaseinfra,
58+
environment=self.environment).save)
5959

6060
def test_slugify_database_name_with_spaces(self):
6161

dbaas/logical/validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def check_is_database_enabled(database_id, operation):
3434
if database.is_beeing_used_elsewhere():
3535
raise BusyDatabaseError(url)
3636

37-
if database.has_migration_started():
37+
if database.has_flipperfox_migration_started():
3838
url = reverse('admin:logical_database_changelist')
3939
raise MigrationDatabaseError(operation, database.name, url)
4040

0 commit comments

Comments
 (0)