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]}`;
}