1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2920],{14099:(e,l,a)=>{a.d(l,{J:()=>m});var s=a(37876),t=a(14232),i=a(43224),r=a(47137),u=a(8291);let o=(0,r.F)("text-sm text-gray-900 dark:text-white font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),m=t.forwardRef(({className:e,...l},a)=>(0,s.jsx)(i.b,{ref:a,className:(0,u.cn)(o(),e),...l}));m.displayName=i.b.displayName},22860:(e,l,a)=>{a.d(l,{A:()=>o});var s=a(37876),t=a(14232),i=a(88866),r=a(72806),u=a(8291);let o=t.forwardRef(({className:e,...l},a)=>(0,s.jsxs)(i.bL,{ref:a,className:(0,u.cn)("relative flex w-full touch-none select-none items-center",e),...l,children:[(0,s.jsx)(i.CC,{className:"relative h-2 w-full grow overflow-hidden rounded-full bg-[#494949] dark:bg-[#494949]",children:(0,s.jsx)(i.Q6,{className:"absolute h-full bg-primary"})}),(0,s.jsx)(i.zi,{className:" h-6 w-6 rounded-full border-2 flex items-center border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",children:(0,s.jsx)(r.A,{className:"h-6 w-6 text-primary"})})]}));o.displayName=i.bL.displayName},63291:(e,l,a)=>{a.d(l,{fv:()=>c,u0:()=>m});var s=a(14232),t=a(1992),i=a(2219),r=a(70045);function u(e){return e?e.endsWith("m")?parseFloat(e.replace("m",""))/1e3:parseFloat(e)||0:0}function o(e){return e?e.endsWith("Ki")?parseFloat(e.replace("Ki",""))/1048576:e.endsWith("Mi")?parseFloat(e.replace("Mi",""))/1024:e.endsWith("Gi")?parseFloat(e.replace("Gi","")):parseFloat(e)||0:0}let m=(e,l,a)=>{let[m,c]=(0,s.useState)(null),[n,d]=(0,s.useState)(null),[p,b]=(0,s.useState)(!0),[y,v]=(0,s.useState)(null),{data:f,isLoading:h,error:g,refetch:_}=(0,t.useQuery)(["project-quotas",e,l,a],async()=>{let s,t;if(!e)throw Error("Cluster ID is required");let m=(0,r.hY)();a&&l?(s=`${m}/clusters/${e}/projects/${l}/stacks/${a}`,t="stack/namespace"):l?(s=`${m}/clusters/${e}/projects/${l}/limits`,t="project"):(s=`${m}/clusters/${e}/limits`,t="cluster"),console.log("\uD83C\uDFAF Fetching quotas from:",s,{source:t});let c=await i.default.get(s,{headers:{"Access-Control-Allow-Origin":"*"}});if(a&&l){let e=c.data,l=e.resourceQuota||{},a=e.usedResources||{},s=e.hasLimits??!0,t=e.clusterAvailable||null,i=l.limitsCpu||l.requestsCpu||"0m",r=l.limitsMemory||l.requestsMemory||"0Mi",m=a["limits.cpu"]||a["requests.cpu"]||"0m",n=a["limits.memory"]||a["requests.memory"]||"0Mi",d=u(i),p=u(m),b=o(r),y=o(n),v=Math.max(0,d-p),f=Math.max(0,b-y);return{hasLimits:s,clusterAvailable:t,limits:{cpu_limit:i,memory_limit:r},usage:{cpu_used:m,memory_used:n},available:{cpu_available:v>=1?`${v.toFixed(1)}`:`${Math.round(1e3*v)}m`,memory_available:`${f.toFixed(1)}Gi`},allocatable:{cpu_allocatable:i,memory_allocatable:r,pods:0},reserved:{cpu_reserved:"0m",memory_reserved:"0Mi"}}}if(l&&!a){let e=c.data,l=e.hasLimits??!0,a=e.clusterAvailable||null,s=e.namespaceDefaultResourceQuota||{},t=e.usedLimits||{},i=e.available||{},r=s.limitsCpu||"0m",u=s.limitsMemory||"0Mi",o=t.limitsCpu||"0m",m=t.limitsMemory||"0Mi",n=i.availableCpu||"0m",p=i.availableMemory||"0Mi";return l?d({requestsCpu:s.requestsCpu||"500m",requestsMemory:s.requestsMemory||"512Mi",limitsCpu:s.limitsCpu||"2000m",limitsMemory:s.limitsMemory||"2048Mi"}):d(null),console.log("\uD83D\uDCCA Project quota data:",{projectHasLimits:l,cpuLimit:r,memoryLimit:u,cpuUsed:o,memoryUsed:m,cpuAvailable:n,memoryAvailable:p,namespaceQuota:l?{requestsCpu:s.requestsCpu,requestsMemory:s.requestsMemory,limitsCpu:s.limitsCpu,limitsMemory:s.limitsMemory}:null,source:"project-level API"}),{hasLimits:l,clusterAvailable:a,limits:{cpu_limit:r,memory_limit:u},usage:{cpu_used:o,memory_used:m},available:{cpu_available:n,memory_available:p},allocatable:{cpu_allocatable:r,memory_allocatable:u,pods:0},reserved:{cpu_reserved:t.requestsCpu||"0m",memory_reserved:t.requestsMemory||"0Mi"}}}return c.data},{enabled:!!e,staleTime:3e5,cacheTime:6e5,refetchOnMount:!1,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchInterval:!1,retry:(e,l)=>!(l?.response?.status>=400&&l?.response?.status<500)&&e<3,onSuccess:e=>{console.log("â
Quotas fetched successfully:",e)},onError:e=>{console.error("â Failed to fetch quotas:",e)}}),M=f&&!(f.hasLimits??!0)&&!f.clusterAvailable&&!!e,{data:q}=(0,t.useQuery)(["cluster-limits",e],async()=>{let l=(0,r.hY)(),a=`${l}/clusters/${e}/limits`;console.log("\uD83D\uDD04 Fetching cluster limits from:",a);let s=await i.default.get(a,{headers:{"Access-Control-Allow-Origin":"*"}});return console.log("â
Cluster limits response:",s.data),s.data},{enabled:M,staleTime:3e5,cacheTime:6e5,refetchOnMount:!1,refetchOnWindowFocus:!1,refetchOnReconnect:!1,retry:2});(0,s.useEffect)(()=>
1{if(!f){c(null),d(null),b(!0),v(null);return}try{let e=f.hasLimits??!0;b(e),f.clusterAvailable?v({cpu:u(f.clusterAvailable.cpu),memory:o(f.clusterAvailable.memory)}):q?.available?v({cpu:u(q.available.cpu_available||"0m"),memory:o(q.available.memory_available||"0Mi")}):v(null);let l=u(f.usage?.cpu_used||"0m"),a=u(f.limits?.cpu_limit||"0m"),s=u(f.available?.cpu_available||"0m"),t=o(f.usage?.memory_used||"0Mi"),i=o(f.limits?.memory_limit||"0Mi"),r=o(f.available?.memory_available||"0Mi");c({cpu:{used:l,limit:a,available:s,unit:"cores"},memory:{used:t,limit:i,available:r,unit:"GiB"}})}catch(e){console.error("â Error processing quota data:",e),c(null)}},[f,q]);let C=(0,s.useCallback)(()=>m?{cpu:{used:m.cpu.used,total:m.cpu.limit,percentage:m.cpu.limit>0?m.cpu.used/m.cpu.limit*100:0},memory:{used:m.memory.used,total:m.memory.limit,percentage:m.memory.limit>0?m.memory.used/m.memory.limit*100:0}}:null,[m]);return{quota:m,namespaceQuota:n,isLoading:h,error:g||null,refetch:_,hasQuotaData:!!m,hasLimitsConfigured:p,clusterAvailable:y,quotaUtilization:C()}},c=(e,l,a)=>{let{quota:t,isLoading:i,refetch:r}=m(e,l,a),[c,n]=(0,s.useState)(null),d=(0,s.useCallback)(async e=>{if(!t)return await r(),{isAvailable:!1,message:"Quota data not available"};let l=e.cpu_limit?u(e.cpu_limit):0,a=e.memory_limit?o(e.memory_limit):0;return l>t.cpu.available?{isAvailable:!1,message:`Insufficient CPU quota: ${l} cores requested, ${t.cpu.available} available`}:a>t.memory.available?{isAvailable:!1,message:`Insufficient memory quota: ${a} GiB requested, ${t.memory.available} available`}:(n(new Date),{isAvailable:!0,message:"Resources available"})},[t,r]);return{quota:t,isLoading:i,checkQuotaAvailability:d,lastChecked:c,refreshQuota:r}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.