+75
-39
@@ -1,9 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
exports = module.exports = {
|
||||
getDisks: getDisks,
|
||||
checkDiskSpace: checkDiskSpace,
|
||||
getMemory: getMemory
|
||||
getDisks,
|
||||
checkDiskSpace,
|
||||
getMemory
|
||||
};
|
||||
|
||||
const apps = require('./apps.js'),
|
||||
@@ -17,13 +17,74 @@ const apps = require('./apps.js'),
|
||||
os = require('os'),
|
||||
paths = require('./paths.js'),
|
||||
safe = require('safetydance'),
|
||||
settings = require('./settings.js');
|
||||
settings = require('./settings.js'),
|
||||
volumes = require('./volumes.js');
|
||||
|
||||
const dfAsync = async.asyncify(df), dfFileAsync = async.asyncify(df.file);
|
||||
|
||||
function getVolumeDisks(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
let volumeDisks = {};
|
||||
|
||||
volumes.list(function (error, allVolumes) {
|
||||
if (error) return callback(error);
|
||||
|
||||
async.eachSeries(allVolumes, function (volume, iteratorDone) {
|
||||
dfFileAsync(volume.hostPath, function (error, result) {
|
||||
volumeDisks[volume.id] = error ? volumeDisks.appsDataDisk : result.filesystem; // ignore any errors
|
||||
|
||||
iteratorDone();
|
||||
});
|
||||
}, function (error) {
|
||||
callback(error, volumeDisks);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getAppDisks(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
let appDisks = {};
|
||||
|
||||
apps.getAll(function (error, allApps) {
|
||||
if (error) return callback(error);
|
||||
|
||||
async.eachSeries(allApps, function (app, iteratorDone) {
|
||||
if (!app.dataDir) {
|
||||
appDisks[app.id] = appDisks.appsDataDisk;
|
||||
return iteratorDone();
|
||||
}
|
||||
|
||||
dfFileAsync(app.dataDir, function (error, result) {
|
||||
appDisks[app.id] = error ? appDisks.appsDataDisk : result.filesystem; // ignore any errors
|
||||
iteratorDone();
|
||||
});
|
||||
}, function (error) {
|
||||
callback(error, appDisks);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getBackupDisk(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
settings.getBackupConfig(function (error, backupConfig) {
|
||||
if (error) return callback(error);
|
||||
|
||||
if (backupConfig.provider !== 'filesystem') return callback(null, null);
|
||||
|
||||
dfFileAsync(backupConfig.backupFolder, function (error, result) {
|
||||
if (error) return callback(error);
|
||||
|
||||
callback(null, result.filesystem);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getDisks(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
const dfAsync = async.asyncify(df), dfFileAsync = async.asyncify(df.file);
|
||||
|
||||
docker.info(function (error, info) {
|
||||
if (error) return callback(error);
|
||||
|
||||
@@ -32,7 +93,10 @@ function getDisks(callback) {
|
||||
dfFileAsync.bind(null, paths.BOX_DATA_DIR),
|
||||
dfFileAsync.bind(null, paths.PLATFORM_DATA_DIR),
|
||||
dfFileAsync.bind(null, paths.APPS_DATA_DIR),
|
||||
dfFileAsync.bind(null, info.DockerRootDir)
|
||||
dfFileAsync.bind(null, info.DockerRootDir),
|
||||
getBackupDisk,
|
||||
getAppDisks,
|
||||
getVolumeDisks,
|
||||
], function (error, values) {
|
||||
if (error) return callback(new BoxError(BoxError.FS_ERROR, error));
|
||||
|
||||
@@ -46,40 +110,12 @@ function getDisks(callback) {
|
||||
platformDataDisk: values[2].filesystem,
|
||||
appsDataDisk: values[3].filesystem,
|
||||
dockerDataDisk: values[4].filesystem,
|
||||
backupsDisk: null,
|
||||
apps: {}
|
||||
backupsDisk: values[5],
|
||||
apps: values[6],
|
||||
volumes: values[7]
|
||||
};
|
||||
|
||||
apps.getAll(function (error, allApps) {
|
||||
if (error) return callback(error);
|
||||
|
||||
async.eachSeries(allApps, function (app, iteratorDone) {
|
||||
if (!app.dataDir) {
|
||||
disks.apps[app.id] = disks.appsDataDisk;
|
||||
return iteratorDone();
|
||||
}
|
||||
|
||||
dfFileAsync(app.dataDir, function (error, result) {
|
||||
disks.apps[app.id] = error ? disks.appsDataDisk : result.filesystem; // ignore any errors
|
||||
iteratorDone();
|
||||
});
|
||||
}, function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
settings.getBackupConfig(function (error, backupConfig) {
|
||||
if (error) return callback(error);
|
||||
|
||||
if (backupConfig.provider !== 'filesystem') return callback(null, disks);
|
||||
|
||||
dfFileAsync(backupConfig.backupFolder, function (error, result) {
|
||||
if (error) return callback(error);
|
||||
|
||||
disks.backupsDisk = result.filesystem;
|
||||
callback(null, disks);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
callback(null, disks);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user