|
| | | | | | | | | '),Dc=i(" "),Mc=i('•'),Pc=i(""),Ec=i(''),jl=i(' '),Nc=i(' Guest Overview '),Oc=i(' Memory '),Lc=i(' Filesystems '),Rc=i(' Network Interfaces Row charts show current rate; totals below are cumulative since boot. '),Ic=i(' '),Hc=i(' '),Fl=i('-'),Uc=i('-'),Bc=i(""),jc=i(" Install and run the qemu-guest-agent inside this VM so Pulse can surface OS, network, and filesystem details."),Fc=i(' Guest details unavailable '),Vc=i(" Start this container and ensure the Pulse user has sufficient Proxmox permissions to collect guest metrics."),Vl=i(''),Gc=i(""),zc=i(' '),Wc=i('Total RX Total TX '),qc=i('');const Js=new Map,Gl=e=>e.id?e.id:e.instance===e.node?`${e.node}-${e.vmid}`:`${e.instance}-${e.node}-${e.vmid}`,Qs=e=>e.type==="qemu";function Kc(e){const[r,s]=Z(e.customUrl),l=Gl(e.guest),[o,a]=Z(Js.get(l)??!1),d=pe(()=>Gl(e.guest)),c=pe(()=>(e.guest.disks?.length??0)>0),g=pe(()=>e.guest.ipAddresses??[]),b=pe(()=>e.guest.networkInterfaces??[]),p=pe(()=>b().length>0),m=pe(()=>e.guest.osName?.trim()??""),S=pe(()=>e.guest.osVersion?.trim()??""),z=pe(()=>m().length>0||S().length>0);ft(()=>{s(e.customUrl)});const ie=pe(()=>(e.guest.cpu||0)*100),ne=pe(()=>e.guest.memory&&e.guest.memory.usage||0),W=pe(()=>{if(!e.guest.memory)return;const F=e.guest.memory.used??0,P=e.guest.memory.total??0;return`${Zt(F)}/${Zt(P)}`}),X=pe(()=>{if(!e.guest.memory)return;const F=[],P=e.guest.memory.total??0;if(e.guest.memory.balloon&&e.guest.memory.balloon>0&&e.guest.memory.balloon!==P&&F.push(`Balloon: ${Zt(e.guest.memory.balloon)}`),e.guest.memory.swapTotal&&e.guest.memory.swapTotal>0){const E=e.guest.memory.swapUsed??0;F.push(`Swap: ${Zt(E)} / ${Zt(e.guest.memory.swapTotal)}`)}return F.length>0?F:void 0}),I=pe(()=>X()?.join(`
+`)??void 0),L=pe(()=>z()||g().length>0||(X()?.length??0)>0||c()||p()),H=pe(()=>!L()&&(e.guest.type==="qemu"||e.guest.type==="lxc")),se=pe(()=>L()||H());ft(Wn(d,F=>{const P=Js.get(F);a(P!==void 0?P:!1)})),ft(()=>{Js.set(d(),o())}),ft(()=>{!se()&&o()&&(a(!1),Js.set(d(),!1))});const le=F=>{!se()||F.target.closest("a, button, [data-prevent-toggle]")||a(E=>!E)},ee=pe(()=>!e.guest.disk||e.guest.disk.total===0?0:e.guest.disk.usage===-1?-1:e.guest.disk.used/e.guest.disk.total*100),U=pe(()=>!e.guest.disk||e.guest.disk.total<=0?!1:ee()!==-1),Y=pe(()=>e.parentNodeOnline!==!1),oe=pe(()=>io(e.guest,Y())),_=pe(()=>Cc(e.guest,Y())),B=pe(()=>(e.guest.lock||"").trim()),$=()=>{if(!Qs(e.guest))return"Disk stats unavailable";switch(e.guest.diskStatusReason){case"agent-not-running":return"Guest agent not running. Install and start qemu-guest-agent in the VM.";case"agent-timeout":return"Guest agent timeout. Agent may need to be restarted.";case"permission-denied":return"Permission denied. Check that your Pulse user/token has VM.Monitor permission (PVE 8) or VM.GuestAgent.Audit permission (PVE 9).";case"agent-disabled":return"Guest agent is disabled in VM configuration. Enable it in VM Options.";case"no-filesystems":return"No filesystems found. VM may be booting or using a Live ISO.";case"special-filesystems-only":return"Only special filesystems detected (ISO/squashfs). This is normal for Live systems.";case"agent-error":return"Error communicating with guest agent.";case"no-data":return"No disk data available from Proxmox API.";default:return"Disk stats unavailable. Guest agent may not be installed."}},D=pe(()=>!!e.alertStyles?.hasUnacknowledgedAlert),f=pe(()=>!!e.alertStyles?.hasAcknowledgedOnlyAlert),j=pe(()=>D()||f()),K=pe(()=>{if(j())return D()?e.alertStyles?.severity==="critical"?"#ef4444":"#eab308":"#9ca3af"}),C=pe(()=>!oe()),ge=pe(()=>{const F="transition-all duration-200 relative",P="hover:shadow-sm",E=D()?e.alertStyles?.severity==="critical"?"bg-red-50 dark:bg-red-950/30":"bg-yellow-50 dark:bg-yellow-950/20":"",u=D()?"":"hover:bg-gray-50 dark:hover:bg-gray-700/30",v=oe()?"":"opacity-60",V=se()?"cursor-pointer":"",A=o()&&!D()?"bg-gray-50 dark:bg-gray-800/40":"";return`${F} ${P} ${u} ${E} ${v} ${V} ${A}`}),J=pe(()=>"py-0.5 pr-2 whitespace-nowrap relative w-[130px] sm:w-[150px] lg:w-[180px] xl:w-[200px] 2xl:w-[240px] pl-4"),N=pe(()=>{if(!j())return{};const F=K();return F?{"box-shadow":`inset 4px 0 0 0 ${F}`}:{}});return[(()=>{var F=Ac(),P=F.firstChild,E=P.firstChild,u=E.firstChild,v=P.nextSibling,V=v.firstChild,A=V.firstChild,k=v.nextSibling,w=k.nextSibling,de=w.nextSibling,fe=de.nextSibling,x=fe.firstChild,R=fe.nextSibling,Q=R.nextSibling,G=Q.firstChild,T=Q.nextSibling,te=T.firstChild,ae=T.nextSibling,M=ae.firstChild,ce=ae.nextSibling,ue=ce.firstChild;return F.$$click=le,t(E,n(h,{get when(){return r()},get fallback(){return(()=>{var re=Hc();return t(re,()=>e.guest.name),q(()=>Te(re,"title",e.guest.name)),re})()},get children(){var re=Sc();return re.$$click=O=>O.stopPropagation(),t(re,()=>e.guest.name),q(O=>{var xe=r(),he=`${e.guest.name} - Click to open custom URL`;return xe!==O.e&&Te(re,"href",O.e=xe),he!==O.t&&Te(re,"title",O.t=he),O},{e:void 0,t:void 0}),re}}),u),u.$$click=re=>re.stopPropagation(),t(u,n(bc,{get tags(){return Array.isArray(e.guest.tags)?e.guest.tags:[]},maxVisible:3,get onTagClick(){return e.onTagClick},get activeSearch(){return e.activeSearch}})),t(E,n(h,{get when(){return B()},get children(){var re=Tc();return re.firstChild,t(re,B,null),q(()=>Te(re,"title",`Guest is locked (${B()})`)),re}}),null),t(A,()=>Qs(e.guest)?"VM":"LXC"),t(k,()=>e.guest.vmid),t(w,n(h,{get when(){return oe()},fallback:"-",get children(){return js(e.guest.uptime)}})),t(de,n(h,{get when(){return _()},get fallback(){return Fl()},get children(){return n(un,{get value(){return ie()},get label(){return`${ie().toFixed(0)}%`},get sublabel(){return $e(()=>!!e.guest.cpus)()?`${((e.guest.cpu||0)*e.guest.cpus).toFixed(1)}/${e.guest.cpus} cores`:void 0},type:"cpu"})}})),t(x,n(h,{get when(){return _()},get fallback(){return Fl()},get children(){return n(un,{get value(){return ne()},get label(){return`${ne().toFixed(0)}%`},get sublabel(){return W()},type:"memory"})}})),t(R,n(h,{get when(){return U()},get fallback(){return(()=>{var re=Uc();return q(()=>Te(re,"title",$())),re})()},get children(){return n(un,{get value(){return ee()},get label(){return`${ee().toFixed(0)}%`},get sublabel(){return $e(()=>!!e.guest.disk)()?`${Zt(e.guest.disk.used)}/${Zt(e.guest.disk.total)}`:void 0},type:"disk"})}})),t(G,n(Ks,{get value(){return e.guest.diskRead},get disabled(){return!oe()}})),t(te,n(Ks,{get value(){return e.guest.diskWrite},get disabled(){return!oe()}})),t(M,n(Ks,{get value(){return e.guest.networkIn},get disabled(){return!oe()}})),t(ue,n(Ks,{get value(){return e.guest.networkOut},get disabled(){return!oe()}})),q(re=>{var O=ge(),xe=N(),he=o(),me=J(),_e=`inline-block px-1.5 py-0.5 text-xs font-medium rounded ${e.guest.type==="qemu"?"bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300":"bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300"}`,Ce=`py-0.5 px-2 w-[76px] sm:w-[86px] lg:w-[96px] xl:w-[108px] 2xl:w-[128px] text-sm whitespace-nowrap align-middle ${e.guest.uptime<3600?"text-orange-500":"text-gray-600 dark:text-gray-400"}`,Oe=I()??void 0;return O!==re.e&&y(F,re.e=O),re.t=xs(F,xe,re.t),he!==re.a&&Te(F,"aria-expanded",re.a=he),me!==re.o&&y(P,re.o=me),_e!==re.i&&y(A,re.i=_e),Ce!==re.n&&y(w,re.n=Ce),Oe!==re.s&&Te(x,"title",re.s=Oe),re},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),F})(),n(h,{get when(){return $e(()=>!!o())()&&se()},get children(){var F=Ic(),P=F.firstChild,E=P.firstChild;return t(E,n(h,{get when(){return L()},get fallback(){return(()=>{var u=Fc(),v=u.firstChild,V=v.nextSibling;return t(V,n(h,{get when(){return Qs(e.guest)},get fallback(){return Vc()},get children(){return[(()=>{var A=Bc();return t(A,$),A})(),jc()]}})),u})()},get children(){return[n(h,{get when(){return z()||g().length>0},get children(){var u=Nc(),v=u.firstChild,V=v.nextSibling;return t(V,n(h,{get when(){return z()},get children(){var A=Ec();return t(A,n(h,{get when(){return m().length>0},get children(){var k=Dc();return t(k,m),q(()=>Te(k,"title",m())),k}}),null),t(A,n(h,{get when(){return $e(()=>m().length>0)()&&S().length>0},get children(){return Mc()}}),null),t(A,n(h,{get when(){return S().length>0},get children(){var k=Pc();return t(k,S),q(()=>Te(k,"title",S())),k}}),null),A}}),null),t(V,n(h,{get when(){return g().length>0},get children(){var A=jl();return t(A,n(ze,{get each(){return g()},children:k=>(()=>{var w=Vl();return t(w,k),w})()})),A}}),null),u}}),n(h,{get when(){return $e(()=>!!X())()&&X().length>0},get children(){var u=Oc(),v=u.firstChild,V=v.nextSibling;return t(V,n(ze,{get each(){return X()},children:A=>(()=>{var k=Gc();return t(k,A),k})()})),u}}),n(h,{get when(){return c()&&e.guest.disks&&e.guest.disks.length>0},get children(){var u=Lc(),v=u.firstChild,V=v.nextSibling;return t(V,n(kc,{get disks(){return e.guest.disks||[]},get diskStatusReason(){return Qs(e.guest)?e.guest.diskStatusReason:void 0}})),u}}),n(h,{get when(){return p()},get children(){var u=Rc(),v=u.firstChild,V=v.nextSibling,A=V.nextSibling;return t(A,n(ze,{get each(){return b()},children:k=>{const w=k.addresses??[],de=(k.rxBytes??0)>0||(k.txBytes??0)>0;return(()=>{var fe=qc(),x=fe.firstChild,R=x.firstChild;return t(R,()=>k.name||"interface"),t(x,n(h,{get when(){return k.mac},get children(){var Q=zc();return t(Q,()=>k.mac),q(()=>Te(Q,"title",k.mac)),Q}}),null),t(fe,n(h,{get when(){return w.length>0},get children(){var Q=jl();return t(Q,n(ze,{each:w,children:G=>(()=>{var T=Vl();return t(T,G),T})()})),Q}}),null),t(fe,n(h,{when:de,get children(){var Q=Wc(),G=Q.firstChild;G.firstChild;var T=G.nextSibling;return T.firstChild,t(G,()=>Zt(k.rxBytes??0),null),t(T,()=>Zt(k.txBytes??0),null),Q}}),null),q(()=>Te(R,"title",k.name)),fe})()}})),u}})]}})),q(u=>{var v=`text-[11px] ${oe()&&e.parentNodeOnline!==!1?"bg-gray-50/60 text-gray-600 dark:bg-gray-800/40 dark:text-gray-300":"bg-gray-100/70 text-gray-400 dark:bg-gray-900/30 dark:text-gray-500"}`,V=!oe()||e.parentNodeOnline===!1,A=`flex flex-wrap gap-3 justify-start ${C()?"opacity-50 saturate-75 pointer-events-none":""}`;return v!==u.e&&y(F,u.e=v),V!==u.t&&Te(F,"aria-hidden",u.t=V),A!==u.a&&y(E,u.a=A),u},{e:void 0,t:void 0,a:void 0}),F}})]}Xt(["click"]);const wa=(e,r)=>{const s=Object.values(r).filter(z=>z.resourceId===e),l=s.filter(z=>!z.acknowledged),o=s.filter(z=>z.acknowledged);let a=null,d=!1,c=!1;l.forEach(z=>{(z.level==="critical"||z.level==="warning"&&a!=="critical")&&(a=z.level),z.type==="powered-off"?d=!0:c=!0});const g=s.length,b=l.length,p=o.length,m=b>0,S=g>0;return a==="critical"?{rowClass:"bg-red-50 dark:bg-red-950/30 border-l-4 border-red-500 dark:border-red-400",indicatorClass:"bg-red-500",badgeClass:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200",hasAlert:S,alertCount:g,severity:"critical",hasPoweredOffAlert:d,hasNonPoweredOffAlert:c,hasUnacknowledgedAlert:m,unacknowledgedCount:b,acknowledgedCount:p,hasAcknowledgedOnlyAlert:!m&&p>0}:a==="warning"?{rowClass:"bg-yellow-50 dark:bg-yellow-950/20 border-l-4 border-yellow-500 dark:border-yellow-400",indicatorClass:"bg-yellow-500",badgeClass:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",hasAlert:S,alertCount:g,severity:"warning",hasPoweredOffAlert:d,hasNonPoweredOffAlert:c,hasUnacknowledgedAlert:m,unacknowledgedCount:b,acknowledgedCount:p,hasAcknowledgedOnlyAlert:!m&&p>0}:{rowClass:"",indicatorClass:"",badgeClass:"",hasAlert:S,alertCount:g,severity:null,hasPoweredOffAlert:d,hasNonPoweredOffAlert:c,hasUnacknowledgedAlert:m,unacknowledgedCount:b,acknowledgedCount:p,hasAcknowledgedOnlyAlert:!m&&p>0}};var Jc=i(''),Qc=i(""),Yc=i(" | |