33 lines
1.4 KiB
JavaScript
33 lines
1.4 KiB
JavaScript
import disk from 'diskusage';
|
|
|
|
|
|
export function verifyStorage (appContext) {
|
|
const mountPath = appContext.env.FUTUREPORN_WORKDIR
|
|
disk.check(mountPath, (err, info) => {
|
|
if (err) {
|
|
appContext.logger.log({ level: 'error', message: `Error retrieving disk usage for ${mountPath}: ${err}` });
|
|
return;
|
|
}
|
|
|
|
const totalSize = info.total;
|
|
const availableSize = info.available;
|
|
const freeSize = info.free;
|
|
|
|
appContext.logger.log({ 'level': 'info', message: `${mountPath} Disk Usage:` });
|
|
appContext.logger.log({ 'level': 'info', message: `Total: ${bytesToSize(totalSize)}` });
|
|
appContext.logger.log({ 'level': 'info', message: `Free: ${bytesToSize(freeSize)}` });
|
|
appContext.logger.log({ 'level': 'info', message: `Available: ${bytesToSize(availableSize)}` });
|
|
|
|
if (availableSize < 85899345920) appContext.logger.log({ 'level': 'warn', message: `⚠️ Available disk is getting low! ${bytesToSize(availableSize)}` });
|
|
else if (availableSize < 42949672960) appContext.logger.log({ 'level': 'error', message: `⚠️☠️ AVAILABLE DISK IS TOO LOW! ${bytesToSize(availableSize)}` });
|
|
});
|
|
}
|
|
|
|
|
|
// Helper function to convert bytes to human-readable format
|
|
export function bytesToSize(bytes) {
|
|
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
|
if (bytes === 0) return '0 Bytes';
|
|
const i = Math.floor(Math.log2(bytes) / 10);
|
|
return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`;
|
|
} |