2021-11-17 09:14:11 +00:00
|
|
|
from vorta.store.models import ArchiveModel, RepoModel
|
2023-01-20 16:01:12 +00:00
|
|
|
from vorta.utils import borg_compat
|
2023-05-01 08:28:11 +00:00
|
|
|
|
2021-10-04 11:31:41 +00:00
|
|
|
from .borg_job import BorgJob
|
2021-02-18 01:44:10 +00:00
|
|
|
|
|
|
|
|
2021-10-04 11:31:41 +00:00
|
|
|
class BorgRenameJob(BorgJob):
|
2021-02-18 01:44:10 +00:00
|
|
|
def log_event(self, msg):
|
|
|
|
self.app.backup_log_event.emit(msg)
|
|
|
|
|
|
|
|
@classmethod
|
2022-08-15 15:21:55 +00:00
|
|
|
def prepare(cls, profile, old_archive_name, new_archive_name):
|
2021-02-18 01:44:10 +00:00
|
|
|
ret = super().prepare(profile)
|
|
|
|
if not ret['ok']:
|
|
|
|
return ret
|
|
|
|
else:
|
|
|
|
ret['ok'] = False # Set back to false, so we can do our own checks here.
|
|
|
|
|
|
|
|
cmd = ['borg', 'rename', '--info', '--log-json']
|
2023-01-20 16:01:12 +00:00
|
|
|
if borg_compat.check('V2'):
|
2022-08-15 15:21:55 +00:00
|
|
|
cmd.extend(["-r", profile.repo.url, old_archive_name, new_archive_name])
|
2023-01-20 16:01:12 +00:00
|
|
|
else:
|
2022-08-15 15:21:55 +00:00
|
|
|
cmd.extend([f'{profile.repo.url}::{old_archive_name}', new_archive_name])
|
2021-02-18 01:44:10 +00:00
|
|
|
|
2022-08-15 15:21:55 +00:00
|
|
|
ret['old_archive_name'] = old_archive_name
|
|
|
|
ret['new_archive_name'] = new_archive_name
|
|
|
|
ret['repo_url'] = profile.repo.url
|
2021-02-18 01:44:10 +00:00
|
|
|
ret['ok'] = True
|
|
|
|
ret['cmd'] = cmd
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
def process_result(self, result):
|
|
|
|
if result['returncode'] == 0:
|
2022-08-15 15:21:55 +00:00
|
|
|
repo = RepoModel.get(url=result['params']['repo_url'])
|
|
|
|
renamed_archive = ArchiveModel.get(name=result['params']['old_archive_name'], repo=repo)
|
|
|
|
renamed_archive.name = result['params']['new_archive_name']
|
2021-02-18 01:44:10 +00:00
|
|
|
renamed_archive.save()
|