backups: add setup/teardown

1. add setup, teardown hooks
2. move the managed mount setup and teardown to filesystem backend
3. remove this vague storage.js

we should convert storageApi into a real object, so we don't have to
keep passing apiConfig around
This commit is contained in:
Girish Ramakrishnan
2025-08-01 14:54:32 +02:00
parent a1a683ec56
commit ea419509f1
14 changed files with 228 additions and 208 deletions
+3 -3
View File
@@ -1,6 +1,7 @@
'use strict';
const assert = require('assert'),
backupTargets = require('../backuptargets.js'),
BoxError = require('../boxerror.js'),
DataLayout = require('../datalayout.js'),
debug = require('debug')('box:backupformat/tgz'),
@@ -10,7 +11,6 @@ const assert = require('assert'),
ProgressStream = require('../progress-stream.js'),
promiseRetry = require('../promise-retry.js'),
safe = require('safetydance'),
storage = require('../storage.js'),
stream = require('stream/promises'),
{ Transform } = require('node:stream'),
tar = require('tar-stream'),
@@ -244,7 +244,7 @@ async function download(backupTarget, remotePath, dataLayout, progressCallback)
await promiseRetry({ times: 5, interval: 20000, debug }, async () => {
progressCallback({ message: `Downloading backup ${backupFilePath}` });
const sourceStream = await storage.api(backupTarget.provider).download(backupTarget.config, backupFilePath);
const sourceStream = await backupTargets.storageApi(backupTarget).download(backupTarget.config, backupFilePath);
await tarExtract(sourceStream, dataLayout, backupTarget.encryption, progressCallback);
});
}
@@ -262,7 +262,7 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) {
await promiseRetry({ times: 5, interval: 20000, debug }, async () => {
progressCallback({ message: `Uploading backup ${backupFilePath}` });
const uploader = await storage.api(backupTarget.provider).upload(backupTarget.config, backupFilePath);
const uploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, backupFilePath);
await tarPack(dataLayout, backupTarget.encryption, uploader, progressCallback);
});
}