diff --git a/core/src/backup/restore.rs b/core/src/backup/restore.rs index fc850ef8c..b75f6f742 100644 --- a/core/src/backup/restore.rs +++ b/core/src/backup/restore.rs @@ -40,6 +40,8 @@ pub struct RestorePackageParams { pub password: String, #[arg(help = "help.arg.package-ids")] pub ids: Vec, + #[arg(long, help = "help.arg.server-id")] + pub server_id: Option, } // #[command(rename = "restore", display(display_none))] @@ -50,13 +52,18 @@ pub async fn restore_packages_rpc( ids, target_id, password, + server_id, }: RestorePackageParams, ) -> Result<(), Error> { let peek = ctx.db.peek().await; let fs = target_id.load(&peek)?; + let server_id = match server_id { + Some(id) => id, + None => peek.as_public().as_server_info().as_id().de()?, + }; let backup_guard = BackupMountGuard::mount( TmpMountGuard::mount(&fs, ReadWrite).await?, - &peek.as_public().as_server_info().as_id().de()?, + &server_id, &password, ) .await?; diff --git a/sdk/base/lib/osBindings/RestorePackageParams.ts b/sdk/base/lib/osBindings/RestorePackageParams.ts index 545d3e7ec..3a3fea189 100644 --- a/sdk/base/lib/osBindings/RestorePackageParams.ts +++ b/sdk/base/lib/osBindings/RestorePackageParams.ts @@ -3,7 +3,8 @@ import type { BackupTargetId } from './BackupTargetId' import type { PackageId } from './PackageId' export type RestorePackageParams = { - ids: Array targetId: BackupTargetId password: string + ids: Array + serverId: string | null } diff --git a/web/projects/ui/src/app/routes/portal/routes/backups/modals/recover.component.ts b/web/projects/ui/src/app/routes/portal/routes/backups/modals/recover.component.ts index ffeef759e..83c74df8b 100644 --- a/web/projects/ui/src/app/routes/portal/routes/backups/modals/recover.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/backups/modals/recover.component.ts @@ -115,13 +115,14 @@ export class BackupsRecoverModal { const ids = options.filter(({ checked }) => !!checked).map(({ id }) => id) const loader = this.loader.open('Initializing').subscribe() - const { targetId, password } = this.context.data + const { targetId, serverId, password } = this.context.data try { await this.api.restorePackages({ ids, targetId, password, + serverId, }) this.context.$implicit.complete() diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts index 0478166bd..1e7015ba2 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/recover.component.ts @@ -149,8 +149,8 @@ export class BackupsRecoverComponent { async restore(options: RecoverOption[]): Promise { const ids = options.filter(({ checked }) => !!checked).map(({ id }) => id) - const { targetId, password } = this.context.data - const params = { ids, targetId, password } + const { targetId, serverId, password } = this.context.data + const params = { ids, targetId, password, serverId } const loader = this.loader.open('Initializing').subscribe() try { diff --git a/web/projects/ui/src/app/services/api/api.fixures.ts b/web/projects/ui/src/app/services/api/api.fixures.ts index 3168326f7..0720fcfa3 100644 --- a/web/projects/ui/src/app/services/api/api.fixures.ts +++ b/web/projects/ui/src/app/services/api/api.fixures.ts @@ -1242,6 +1242,7 @@ export namespace Mock { model: null, vendor: 'SSK', guid: null, + filesystem: null, startOs: { '1234-5678-9876-5432': { hostname: 'adjective-noun',