UNPKG

vmsnap

Version:

A Node based backup and backup rotation tool for KVM domains.

2 lines (1 loc) 1.95 kB
import{EOL as f}from"os";import p from"chalk";import*as k from"json-to-pretty-yaml";import{spinner as u,logger as t}from"../vmsnap.js";import{getStatus as $,STATUS_OK as d,STATUSES as g}from"./serialization.js";import{FREQUENCY_MONTHLY as h}from"./libnbdbackup.js";export const SCREEN_SIZE=80,TYPE_YAML="YAML",TYPE_JSON="JSON";const m=async({domains:e="*",verbose:i=!1,output:o,pretty:n=!1,machine:s=!1,groupBy:r=h,yml:a=!1,yaml:l=!1,json:S=!1})=>{i&&t.info("Starting status check..."),u.start(`Querying for domains...${f}`);const c=await $(e,o,r,n);u.stop(),a||l||S?N(c,a||l?TYPE_YAML:TYPE_JSON,s):b(c)},b=e=>{for(const i of Object.keys(e)){const o=e[i];t.info(`Status for ${p.bold.magentaBright(i)}:`);const n=o.overallStatus===d?"greenBright":"yellowBright";if(t.info(` Overall status: ${p.bold[n](g.get(o.overallStatus))}`),!o.checkpoints||o.checkpoints.length===0)t.info(` No checkpoints found for ${i}`);else{t.info(` Checkpoints found for ${i}:`);for(const s of o.checkpoints)t.info(` ${s}`)}if(o.disks.length===0)t.info(` No eligible disks found for ${i}`);else{t.info(` Eligible disks found for ${i}:`);for(const s of o.disks)if(t.info(` ${s.disk}`),t.info(` Virtual size: ${s.virtualSize}`),t.info(` Actual size: ${s.actualSize}`),s.bitmaps.length===0)t.info(` No bitmaps found for ${s.disk}`);else{t.info(` Bitmaps found for ${s.disk}:`);for(const r of s.bitmaps)t.info(` ${r}`)}}o.backupDirStats&&(t.info(` Backup directory stats for ${i}:`),t.info(` Path: ${o.backupDirStats.path}`),t.info(` Total files: ${o.backupDirStats.totalFiles}`),t.info(` Total size: ${o.backupDirStats.totalSize}`),t.info(` Checkpoints: ${o.backupDirStats.checkpoints}`))}},E=(e,i)=>{const o="-".repeat(SCREEN_SIZE);return`${e}:${f}${o}${f}${i}${f}${o}`},N=(e,i=TYPE_JSON,o=!0)=>{let n;i===TYPE_YAML?n=k.stringify(e):n=JSON.stringify(e,void 0,o?0:2),o?t.info(n):t.info(E(i,n))};export{m as printStatusCheck};