backups: fix various mount issues

This commit is contained in:
Girish Ramakrishnan
2021-05-17 15:58:38 -07:00
parent 599b604dca
commit 14bb928d41
5 changed files with 45 additions and 38 deletions

View File

@@ -132,7 +132,6 @@ const assert = require('assert'),
externalLdap = require('./externalldap.js'),
moment = require('moment-timezone'),
mounts = require('./mounts.js'),
path = require('path'),
paths = require('./paths.js'),
safe = require('safetydance'),
settingsdb = require('./settingsdb.js'),
@@ -386,8 +385,8 @@ function getBackupConfig(callback) {
const backupConfig = JSON.parse(value); // provider, token, password, region, prefix, bucket
if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs') {
backupConfig.mountStatus = await mounts.getStatus(backupConfig.mountType || 'noop', backupConfig.mountPoint); // { state, message }
if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs' || backupConfig.provider === 'ext4' || backupConfig.provider === 'mountpoint') {
backupConfig.mountStatus = await mounts.getStatus(backupConfig.provider, backupConfig.mountPoint); // { state, message }
}
callback(null, backupConfig);
@@ -417,19 +416,22 @@ function setBackupConfig(backupConfig, callback) {
backups.cleanupCacheFilesSync();
}
if ('mountType' in backupConfig) {
error = mounts.validateMountOptions(backupConfig.mountType, backupConfig.mountOptions);
if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs' || backupConfig.provider === 'ext4') {
error = mounts.validateMountOptions(backupConfig.provider, backupConfig.mountOptions);
if (error) return callback(error);
const backupVolume = {
name: 'backup',
hostPath: backupConfig.mountPoint,
mountType: backupConfig.mountType,
mountType: backupConfig.provider,
mountOptions: backupConfig.mountOptions
};
[error] = await safe(backupConfig.mountType === 'noop' ? mounts.removeMountFile(backupVolume.hostPath) : mounts.writeMountFile(backupVolume));
[error] = await safe(mounts.writeMountFile(backupVolume));
if (error) return callback(error);
} else if (currentConfig.provider === 'sshfs' || currentConfig.provider === 'cifs' || currentConfig.provider === 'nfs' || currentConfig.provider === 'ext4') {
debug('setBackupConfig: removing old mount configuration');
await safe(mounts.removeMountFile(currentConfig.hostPath));
}
settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) {