From b001e198bf2492f4ed3f94b9ab55845cc59160d2 Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Wed, 12 Jul 2023 16:53:49 +0000 Subject: [PATCH] feature(backups): stop services before restores --- selfprivacy_api/backup/__init__.py | 19 ++++++++++--------- tests/test_graphql/test_backup.py | 6 +++++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/selfprivacy_api/backup/__init__.py b/selfprivacy_api/backup/__init__.py index 3bbd721..0f93667 100644 --- a/selfprivacy_api/backup/__init__.py +++ b/selfprivacy_api/backup/__init__.py @@ -258,16 +258,17 @@ class Backups: try: Backups._assert_restorable(snapshot) + with StoppedService(service): + Backups.assert_dead(service) + if strategy == RestoreStrategy.INPLACE: + Backups._inplace_restore(service, snapshot, job) + else: # verify_before_download is our default + Jobs.update(job, status=JobStatus.RUNNING) + Backups._restore_service_from_snapshot( + service, snapshot.id, verify=True + ) - if strategy == RestoreStrategy.INPLACE: - Backups._inplace_restore(service, snapshot, job) - else: # verify_before_download is our default - Jobs.update(job, status=JobStatus.RUNNING) - Backups._restore_service_from_snapshot( - service, snapshot.id, verify=True - ) - - service.post_restore() + service.post_restore() except Exception as e: Jobs.update(job, status=JobStatus.ERROR) diff --git a/tests/test_graphql/test_backup.py b/tests/test_graphql/test_backup.py index 319fb53..3709440 100644 --- a/tests/test_graphql/test_backup.py +++ b/tests/test_graphql/test_backup.py @@ -379,7 +379,11 @@ def restore_strategy(request) -> RestoreStrategy: return RestoreStrategy.INPLACE -def test_restore_snapshot_task(backups, dummy_service, restore_strategy): +def test_restore_snapshot_task( + backups, dummy_service, restore_strategy, simulated_service_stopping_delay +): + dummy_service.set_delay(simulated_service_stopping_delay) + Backups.back_up(dummy_service) snaps = Backups.get_snapshots(dummy_service) assert len(snaps) == 1