Add route to list all blockdevices

This commit is contained in:
Johannes Zellner
2023-01-23 17:56:01 +01:00
parent 3dcd4f9da3
commit a6fdb96fbf
4 changed files with 51 additions and 2 deletions

View File

@@ -21,7 +21,9 @@ exports = module.exports = {
updateDiskUsage,
runSystemChecks
runSystemChecks,
getBlockDevices
};
const apps = require('./apps.js'),
@@ -37,6 +39,7 @@ const apps = require('./apps.js'),
dns = require('./dns.js'),
dockerProxy = require('./dockerproxy.js'),
eventlog = require('./eventlog.js'),
execSync = require('child_process').execSync,
fs = require('fs'),
LogStream = require('./log-stream.js'),
mail = require('./mail.js'),
@@ -331,3 +334,28 @@ async function updateDiskUsage() {
tasks.startTask(taskId, {});
return taskId;
}
async function getBlockDevices() {
let info;
try {
info = JSON.parse(execSync('lsblk --paths --json --list --noempty', { encoding: 'utf8' }));
} catch (e) {
console.error('Failed to list disks:', e);
throw new BoxError(BoxError.INTERNAL_ERROR, e);
}
const devices = info.blockdevices;
debug(`getBlockDevices: Found ${devices.length} devices. ${devices.map(d => d.name).join(', ')}`);
// convert to fixed format
return devices.map(function (d) {
return {
path: d.name,
size: d.size,
type: d.type,
mountpoint: d.mountpoints[0] // we only support one mountpoint here
};
});
}