From 6b096a7470f07c77cf2ad34c7d5a0a9f518ea9c8 Mon Sep 17 00:00:00 2001 From: Spitap Date: Mon, 19 Sep 2022 15:50:03 +0200 Subject: [PATCH] Simplified db dumps restore --- modoboa_installer/scripts/amavis.py | 13 +++---------- modoboa_installer/scripts/base.py | 14 ++++++++++++++ modoboa_installer/scripts/modoboa.py | 13 +++---------- modoboa_installer/scripts/spamassassin.py | 14 +++----------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/modoboa_installer/scripts/amavis.py b/modoboa_installer/scripts/amavis.py index 2e5b696..14e4b1f 100644 --- a/modoboa_installer/scripts/amavis.py +++ b/modoboa_installer/scripts/amavis.py @@ -77,16 +77,9 @@ class Amavis(base.Installer): def get_sql_schema_path(self): """Return schema path.""" if self.restore: - utils.printcolor( - "Trying to restore amavis database from backup.", utils.MAGENTA) - amavis_db_backup_path = os.path.join( - self.restore, "databases/amavis.sql") - if os.path.isfile(amavis_db_backup_path): - utils.printcolor( - "Amavis database backup found ! Restoring...", utils.GREEN) - return amavis_db_backup_path - utils.printcolor( - "Amavis database backup not found, creating empty database.", utils.RED) + db_dump_path = self._restore_database_dump("amavis") + if db_dump_path is not None: + return db_dump_path version = package.backend.get_installed_version("amavisd-new") if version is None: diff --git a/modoboa_installer/scripts/base.py b/modoboa_installer/scripts/base.py index 43e7939..3a1505b 100644 --- a/modoboa_installer/scripts/base.py +++ b/modoboa_installer/scripts/base.py @@ -160,6 +160,20 @@ class Installer(object): self.post_run() self.restart_daemon() + def _restore_database_dump(self, app_name): + """Restore database dump from a dump.""" + + utils.printcolor( + f"Trying to restore {app_name} database from backup.", utils.MAGENTA) + database_backup_path = os.path.join( + self.restore, f"databases/{app_name}.sql") + if os.path.isfile(database_backup_path): + utils.printcolor( + f"{app_name.capitalize()} database backup found ! Restoring...", utils.GREEN) + return database_backup_path + utils.printcolor( + f"{app_name.capitalize()} database backup not found, creating empty database.", utils.RED) + def pre_run(self): """Tasks to execute before the installer starts.""" pass diff --git a/modoboa_installer/scripts/modoboa.py b/modoboa_installer/scripts/modoboa.py index c14888b..299349e 100644 --- a/modoboa_installer/scripts/modoboa.py +++ b/modoboa_installer/scripts/modoboa.py @@ -180,16 +180,9 @@ class Modoboa(base.Installer): def get_sql_schema_path(self): if self.restore: - utils.printcolor( - "Trying to restore modoboa database from backup.", utils.MAGENTA) - modoboa_database_backup_path = os.path.join( - self.restore, "databases/modoboa.sql") - if os.path.isfile(modoboa_database_backup_path): - utils.printcolor( - "Modoboa database backup found ! Restoring...", utils.GREEN) - return modoboa_database_backup_path - utils.printcolor( - "Modoboa database backup not found, creating empty database.", utils.RED) + db_dump_path = self._restore_database_dump("modoboa") + if db_dump_path is not None: + return db_dump_path return super().get_sql_schema_path()() diff --git a/modoboa_installer/scripts/spamassassin.py b/modoboa_installer/scripts/spamassassin.py index 9f6e45d..e5fd3a3 100644 --- a/modoboa_installer/scripts/spamassassin.py +++ b/modoboa_installer/scripts/spamassassin.py @@ -26,17 +26,9 @@ class Spamassassin(base.Installer): def get_sql_schema_path(self): """Return SQL schema.""" if self.restore: - utils.printcolor( - "Trying to restore spamassassin database from backup.", utils.MAGENTA) - sa_database_backup_path = os.path.join( - self.restore, "databases/spamassassin.sql") - if os.path.isfile(sa_database_backup_path): - utils.printcolor( - "Spamassassin database backup found ! Restoring...", utils.GREEN) - return sa_database_backup_path - utils.printcolor( - "Spamassassin database backup not found, creating empty database.", utils.RED) - + db_dump_path = self._restore_database_dump("spamassassin") + if db_dump_path is not None: + return db_dump_path if self.dbengine == "postgres": fname = "bayes_pg.sql" else: