feature(backups): global init instead of per-service

restic-rewrite-api
Houkime 2023-05-29 16:50:14 +00:00
parent 345e2c10c4
commit c3696d3a4b
4 changed files with 24 additions and 28 deletions

View File

@ -229,19 +229,17 @@ class Backups:
if service is not None: if service is not None:
repo_name = service.get_id() repo_name = service.get_id()
Backups.provider().backuper.init(repo_name) Backups.provider().backuper.init()
if service is not None: Storage.mark_as_init()
Storage.mark_as_init(service)
@staticmethod @staticmethod
def is_initted(service: Service) -> bool: def is_initted() -> bool:
repo_name = service.get_id() if Storage.has_init_mark():
if Storage.has_init_mark(service):
return True return True
initted = Backups.provider().backuper.is_initted(repo_name) initted = Backups.provider().backuper.is_initted()
if initted: if initted:
Storage.mark_as_init(service) Storage.mark_as_init()
return True return True
return False return False

View File

@ -145,7 +145,7 @@ class ResticBackuper(AbstractBackuper):
service_name=repo_name, service_name=repo_name,
) )
def init(self, repo_name): def init(self):
init_command = self.restic_command( init_command = self.restic_command(
"init", "init",
) )
@ -159,7 +159,7 @@ class ResticBackuper(AbstractBackuper):
if not "created restic repository" in output: if not "created restic repository" in output:
raise ValueError("cannot init a repo: " + output) raise ValueError("cannot init a repo: " + output)
def is_initted(self, repo_name: str) -> bool: def is_initted(self) -> bool:
command = self.restic_command( command = self.restic_command(
"check", "check",
"--json", "--json",

View File

@ -160,13 +160,11 @@ class Storage:
return provider_model return provider_model
@staticmethod @staticmethod
def has_init_mark(service: Service) -> bool: def has_init_mark() -> bool:
repo_name = service.get_id() if redis.exists(REDIS_INITTED_CACHE_PREFIX):
if redis.exists(REDIS_INITTED_CACHE_PREFIX + repo_name):
return True return True
return False return False
@staticmethod @staticmethod
def mark_as_init(service: Service): def mark_as_init():
repo_name = service.get_id() redis.set(REDIS_INITTED_CACHE_PREFIX, 1)
redis.set(REDIS_INITTED_CACHE_PREFIX + repo_name, 1)

View File

@ -120,7 +120,7 @@ def test_select_backend():
def test_file_backend_init(file_backup): def test_file_backend_init(file_backup):
file_backup.backuper.init("somerepo") file_backup.backuper.init()
def test_backup_simple_file(raw_dummy_service, file_backup): def test_backup_simple_file(raw_dummy_service, file_backup):
@ -130,7 +130,7 @@ def test_backup_simple_file(raw_dummy_service, file_backup):
assert file_backup is not None assert file_backup is not None
name = service.get_id() name = service.get_id()
file_backup.backuper.init(name) file_backup.backuper.init()
def test_backup_service(dummy_service, backups): def test_backup_service(dummy_service, backups):
@ -217,11 +217,11 @@ def test_sizing(backups, dummy_service):
def test_init_tracking(backups, raw_dummy_service): def test_init_tracking(backups, raw_dummy_service):
assert Backups.is_initted(raw_dummy_service) is False assert Backups.is_initted() is False
Backups.init_repo(raw_dummy_service) Backups.init_repo()
assert Backups.is_initted(raw_dummy_service) is True assert Backups.is_initted() is True
def finished_jobs(): def finished_jobs():
@ -414,21 +414,21 @@ def test_snapshots_caching(backups, dummy_service):
# Storage # Storage
def test_init_tracking_caching(backups, raw_dummy_service): def test_init_tracking_caching(backups, raw_dummy_service):
assert Storage.has_init_mark(raw_dummy_service) is False assert Storage.has_init_mark() is False
Storage.mark_as_init(raw_dummy_service) Storage.mark_as_init()
assert Storage.has_init_mark(raw_dummy_service) is True assert Storage.has_init_mark() is True
assert Backups.is_initted(raw_dummy_service) is True assert Backups.is_initted() is True
# Storage # Storage
def test_init_tracking_caching2(backups, raw_dummy_service): def test_init_tracking_caching2(backups, raw_dummy_service):
assert Storage.has_init_mark(raw_dummy_service) is False assert Storage.has_init_mark() is False
Backups.init_repo(raw_dummy_service) Backups.init_repo()
assert Storage.has_init_mark(raw_dummy_service) is True assert Storage.has_init_mark() is True
# Storage # Storage