Refactorings in OpenSearchHelper, Migration und MigrationDev

Für die Implementation einer Undo-Funktion der Migration habe ich umfangreiche Refactorings vornehmen müssen

Einleitung

Die Ursprungsidee war die implementation einer Undo-Funktion, um Migrationsscripte wieder zurückzunehmen. Das ist überhaupt möglich, weil wir bei einer Migration eines Index-Mappings immer eine Kopie des bisherigen Index bestehen lassen, einen neuen Index (mit neuer Versionsnummer) erstellen und dann den Alias-Namen auf den neuen Index legen.

Das lässt sich natürlich auch rückgängig machen.

Undo

Das Undo ist aber nicht sehr trivial. Man muss beachten, ob es schon ein clean_up gab (also die alten Indexe nicht mehr existieren). Zudem müssen wir schauen, dass die nicht mehr benötigten Indexe weggeräumt werden (löschen oder archivieren), damit bei der nächsten Migration es nicht zu Fehlern kommt (weil die Indexe der Versionen ja nicht überschrieben werden).

Da die Undo-Funktion sehr komplex geworden ist, habe ich sie in MigrationDev.py ausgelagert. Diese Art der Undo-Funktion sollte auch nur recht selten benötigt werden (zum Beispiel, wenn man sich bei einem Script vertan hat und das rückgängig machen muss).

Refactorings in Migration.py und OpenSearchHelper.py

Da MigrationDev.py auf Methoden in Migration.py zurückgreift, habe ich einige Methoden von protected auf public umbenannt. Zudem habe ich die in OpenSearchHelper.py ein paar High-Level Methoden hinzugefügt (Kopieren von Dokumenten, Kopieren eines kompletten Index, Umbenennen eines Index).