Merge pull request #7238 from nextcloud/enh/noid/refactor-backup-mode

refactor `backup-mode` handling
This commit is contained in:
Simon L. 2025-12-03 11:35:02 +01:00 committed by GitHub
commit d425bb226c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 27 deletions

View file

@ -104,7 +104,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'is_backup_container_running' => $dockerActionManger->isBackupContainerRunning(), 'is_backup_container_running' => $dockerActionManger->isBackupContainerRunning(),
'backup_exit_code' => $dockerActionManger->GetBackupcontainerExitCode(), 'backup_exit_code' => $dockerActionManger->GetBackupcontainerExitCode(),
'is_instance_restore_attempt' => $configurationManager->isInstanceRestoreAttempt(), 'is_instance_restore_attempt' => $configurationManager->isInstanceRestoreAttempt(),
'borg_backup_mode' => $configurationManager->GetBorgBackupMode(), 'borg_backup_mode' => $configurationManager->GetBackupMode(),
'was_start_button_clicked' => $configurationManager->wasStartButtonClicked(), 'was_start_button_clicked' => $configurationManager->wasStartButtonClicked(),
'has_update_available' => $dockerActionManger->isAnyUpdateAvailable(), 'has_update_available' => $dockerActionManger->isAnyUpdateAvailable(),
'last_backup_time' => $configurationManager->GetLastBackupTime(), 'last_backup_time' => $configurationManager->GetLastBackupTime(),

View file

@ -89,9 +89,7 @@ readonly class DockerController {
} }
public function startBackup(bool $forceStopNextcloud = false) : void { public function startBackup(bool $forceStopNextcloud = false) : void {
$config = $this->configurationManager->GetConfig(); $this->configurationManager->SetBackupMode('backup');
$config['backup-mode'] = 'backup';
$this->configurationManager->WriteConfig($config);
$id = self::TOP_CONTAINER; $id = self::TOP_CONTAINER;
$this->PerformRecursiveContainerStop($id, $forceStopNextcloud); $this->PerformRecursiveContainerStop($id, $forceStopNextcloud);
@ -111,26 +109,22 @@ readonly class DockerController {
} }
public function checkBackup() : void { public function checkBackup() : void {
$config = $this->configurationManager->GetConfig(); $this->configurationManager->SetBackupMode('check');
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup'; $id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id); $this->PerformRecursiveContainerStart($id);
} }
private function listBackup() : void { private function listBackup() : void {
$config = $this->configurationManager->GetConfig(); $this->configurationManager->SetBackupMode('list');
$config['backup-mode'] = 'list';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup'; $id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id); $this->PerformRecursiveContainerStart($id);
} }
public function StartBackupContainerRestore(Request $request, Response $response, array $args) : Response { public function StartBackupContainerRestore(Request $request, Response $response, array $args) : Response {
$this->configurationManager->SetBackupMode('restore');
$config = $this->configurationManager->GetConfig(); $config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'restore';
$config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'] ?? ''; $config['selected-restore-time'] = $request->getParsedBody()['selected_restore_time'] ?? '';
if (isset($request->getParsedBody()['restore-exclude-previews'])) { if (isset($request->getParsedBody()['restore-exclude-previews'])) {
$config['restore-exclude-previews'] = 1; $config['restore-exclude-previews'] = 1;
@ -150,24 +144,20 @@ readonly class DockerController {
} }
public function StartBackupContainerCheckRepair(Request $request, Response $response, array $args) : Response { public function StartBackupContainerCheckRepair(Request $request, Response $response, array $args) : Response {
$config = $this->configurationManager->GetConfig(); $this->configurationManager->SetBackupMode('check-repair');
$config['backup-mode'] = 'check-repair';
$this->configurationManager->WriteConfig($config);
$id = 'nextcloud-aio-borgbackup'; $id = 'nextcloud-aio-borgbackup';
$this->PerformRecursiveContainerStart($id); $this->PerformRecursiveContainerStart($id);
// Restore to backup check which is needed to make the UI logic work correctly // Restore to backup check which is needed to make the UI logic work correctly
$config = $this->configurationManager->GetConfig(); $this->configurationManager->SetBackupMode('check');
$config['backup-mode'] = 'check';
$this->configurationManager->WriteConfig($config);
return $response->withStatus(201)->withHeader('Location', '.'); return $response->withStatus(201)->withHeader('Location', '.');
} }
public function StartBackupContainerTest(Request $request, Response $response, array $args) : Response { public function StartBackupContainerTest(Request $request, Response $response, array $args) : Response {
$this->configurationManager->SetBackupMode('test');
$config = $this->configurationManager->GetConfig(); $config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'test';
$config['instance_restore_attempt'] = 0; $config['instance_restore_attempt'] = 0;
$this->configurationManager->WriteConfig($config); $this->configurationManager->WriteConfig($config);

View file

@ -426,6 +426,12 @@ class ConfigurationManager
return $config['backup-mode']; return $config['backup-mode'];
} }
public function SetBackupMode(string $mode) : void {
$config = $this->GetConfig();
$config['backup-mode'] = $mode;
$this->WriteConfig($config);
}
public function GetSelectedRestoreTime() : string { public function GetSelectedRestoreTime() : string {
$config = $this->GetConfig(); $config = $this->GetConfig();
if(!isset($config['selected-restore-time'])) { if(!isset($config['selected-restore-time'])) {
@ -667,15 +673,6 @@ class ConfigurationManager
return false; return false;
} }
public function GetBorgBackupMode() : string {
$config = $this->GetConfig();
if(!isset($config['backup-mode'])) {
$config['backup-mode'] = '';
}
return $config['backup-mode'];
}
public function GetNextcloudMount() : string { public function GetNextcloudMount() : string {
$envVariableName = 'NEXTCLOUD_MOUNT'; $envVariableName = 'NEXTCLOUD_MOUNT';
$configName = 'nextcloud_mount'; $configName = 'nextcloud_mount';