From 8453a1d9cc17bd05aebb6198c6074433fdab6be2 Mon Sep 17 00:00:00 2001 From: Sergey Abramov Date: Tue, 1 Mar 2016 19:09:43 +0300 Subject: [PATCH] add info logging on backup and restore Change-Id: Ia67148cb45c920d784434e6cac774297e69633a8 --- octane/commands/backup.py | 2 ++ octane/commands/restore.py | 2 ++ octane/handlers/backup_restore/base.py | 11 +++++++++++ octane/tests/test_archivators.py | 13 +++++++++++++ 4 files changed, 28 insertions(+) diff --git a/octane/commands/backup.py b/octane/commands/backup.py index 756a7582..ec362d90 100644 --- a/octane/commands/backup.py +++ b/octane/commands/backup.py @@ -37,7 +37,9 @@ def backup(path_to_backup, archivators): tar_obj = tarfile.open(fileobj=temp, mode="w|{0}".format(ext)) with contextlib.closing(tar_obj) as archive: for manager in archivators: + LOG.info("Start backup {0}".format(manager.archivator_name)) manager(archive).backup() + LOG.info("Finish backup {0}".format(manager.archivator_name)) if not archive.getmembers(): raise Exception("Nothing to backup") shutil.move(temp.name, abs_path_to_backup) diff --git a/octane/commands/restore.py b/octane/commands/restore.py index f7aeaabd..32a67d1e 100644 --- a/octane/commands/restore.py +++ b/octane/commands/restore.py @@ -28,7 +28,9 @@ def restore_data(path_to_backup, archivators, context): for archivator in archivators: archivator.pre_restore_check() for archivator in archivators: + LOG.info("Start restore {0}".format(archivator.archivator_name)) archivator.restore() + LOG.info("Finish restore {0}".format(archivator.archivator_name)) class BaseRestoreCommand(command.Command): diff --git a/octane/handlers/backup_restore/base.py b/octane/handlers/backup_restore/base.py index 8830f98e..339cf33b 100644 --- a/octane/handlers/backup_restore/base.py +++ b/octane/handlers/backup_restore/base.py @@ -11,6 +11,7 @@ # under the License. import os +import re from octane.util import archivate from octane.util import docker @@ -23,6 +24,16 @@ class Base(object): self.archive = archive self.context = context + @property + def archivator_name(self): + name = re.sub( + '([A-Z]+)', r' \1', self.__class__.__name__ + ).lower().strip() + for replacer in ["archivator", "backup"]: + if name.endswith(replacer): + name = name[:-len(replacer)].strip() + return name + def backup(self): raise NotImplemented diff --git a/octane/tests/test_archivators.py b/octane/tests/test_archivators.py index e4d79f91..d31e2196 100644 --- a/octane/tests/test_archivators.py +++ b/octane/tests/test_archivators.py @@ -15,6 +15,7 @@ import os import pytest from octane.handlers.backup_restore import astute +from octane.handlers.backup_restore import base from octane.handlers.backup_restore import cobbler from octane.handlers.backup_restore import fuel_keys from octane.handlers.backup_restore import fuel_uuid @@ -249,3 +250,15 @@ def test_repos_backup( ], any_order=True) assert test_archive.add.call_count == len(archive_add_list) + + +@pytest.mark.parametrize("name, expected_name", [ + ("TestArchivator", "test"), + ("TestBackup", "test"), + ("Test", "test"), + ("NotTestArchivator", "not test"), + ("NewBornTestCase", "new born test case"), +]) +def test_archivator_name(mocker, name, expected_name): + + assert expected_name == type(name, (base.Base, ), {})(None).archivator_name