rework backup root
notes: * backup root cannot come from backend. for dynamic mounts backend cannot know where it is mounted * backupConfig is 3 parts - format / mount / password . there is also this rootPath (which should not be in db) * password should be stored separately in settings at some point * format has to be passed along everywhere because we allow restore from same backupConfig but different format. we do this by saving the format in the backups table fixes #819
This commit is contained in:
19
src/apps.js
19
src/apps.js
@@ -171,7 +171,6 @@ const appstore = require('./appstore.js'),
|
||||
logs = require('./logs.js'),
|
||||
mail = require('./mail.js'),
|
||||
manifestFormat = require('cloudron-manifestformat'),
|
||||
mounts = require('./mounts.js'),
|
||||
notifications = require('./notifications.js'),
|
||||
once = require('./once.js'),
|
||||
os = require('os'),
|
||||
@@ -2197,23 +2196,11 @@ async function importApp(app, data, auditSource) {
|
||||
let restoreConfig;
|
||||
|
||||
if (data.remotePath) { // if not provided, we import in-place
|
||||
error = backups.validateBackupFormat(backupFormat);
|
||||
error = backups.validateFormat(backupFormat);
|
||||
if (error) throw error;
|
||||
|
||||
// TODO: make this smarter to do a read-only test and check if the file exists in the storage backend
|
||||
if (mounts.isManagedProvider(backupConfig.provider)) {
|
||||
error = mounts.validateMountOptions(backupConfig.provider, backupConfig.mountOptions);
|
||||
if (error) throw error;
|
||||
|
||||
const mountObject = { // keep this in sync with the import code in apptask
|
||||
name: `appimport-${app.id}`,
|
||||
hostPath: `/mnt/appimport-${app.id}`,
|
||||
mountType: backupConfig.provider,
|
||||
mountOptions: backupConfig.mountOptions
|
||||
};
|
||||
await mounts.tryAddMount(mountObject, { timeout: 10 });
|
||||
|
||||
}
|
||||
await backups.setupStorage(backupConfig, `/mnt/appimport-${app.id}`);
|
||||
backupConfig.rootPath = backups.getRootPath(backupConfig, `/mnt/appimport-${app.id}`);
|
||||
error = await backups.testStorage(backupConfig);
|
||||
if (error) throw error;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user