2 lines
8.5 KiB
JavaScript
2 lines
8.5 KiB
JavaScript
|
|
import{E as ee}from"./index-CunlXsH6.js";import{E as te}from"./index-LblaQ-sT.js";import{E as ae,a as le}from"./index-uEvcRnhb.js";import{E as ne}from"./index-C6BYR-GL.js";import{E as se}from"./index-C8ZMhYZr.js";import{a as oe,E as ie}from"./index-DbiC_J6H.js";import{a as ue,E as de}from"./index-CigTs4Bc.js";import{v as re}from"./directive-DnYsEmpc.js";import{aF as N,aG as T,d as pe,y as m,D as ce,G as me,ah as _e,K as fe,c as _,q as i,aa as o,g as I,s as t,w as a,ac as be,j as k,o as p,x as u,M as B,ad as D,e as E,v as ge}from"./index-_T_ZwAU8.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-DPr6SX3u.js";import"./castArray-BlzMMKhq.js";import"./vnode-BBSgohgu.js";import"./index-DrL-DdXi.js";import"./index-CaL9AHzU.js";import"./index-CnFjh-NG.js";import"./index-jXIxALr6.js";import"./raf-BSHx3Xj9.js";import"./scroll-xdnWlbe1.js";import"./index-I-t9u_Se.js";import"./clamp-eKDmixUu.js";import"./toNumber-B7ieOfxs.js";import"./_baseIteratee-C37ZLjhl.js";import"./_baseClone-BuLLSdZ_.js";import"./debounce-CtiCYe7I.js";import"./index-dqKVgrM4.js";import"./omit-BNuYgpQl.js";import"./index-D9Qe2eDp.js";const he=()=>N("/compute/nodes"),ye=c=>T(`/compute/nodes/${c}/test-connection`),we=c=>T(`/compute/nodes/${c}/enable`),Ce=c=>T(`/compute/nodes/${c}/disable`),ke=c=>T(`/compute/nodes/${c}/drain`),Ee=()=>N("/compute/gpus"),Ne=()=>N("/compute/queue"),Te=c=>N(`/compute/nodes/${c}/replicas`),Ge={class:"compute-page"},Ve={class:"compute-header"},Pe={class:"header-actions"},Se={key:0,class:"last-updated"},Ue={class:"summary-grid"},$e={class:"summary-tile"},qe={class:"summary-tile"},xe={class:"summary-tile"},Ie={class:"summary-tile"},Be={class:"mono"},De={class:"muted mono"},Le={class:"muted"},ze={class:"muted"},Re={key:0,class:"muted"},je={class:"muted"},Me={class:"replica-toolbar"},Fe={key:0,class:"muted"},Ae=pe({__name:"ComputeNodesView",setup(c){const L=be(),j=ge(),G=m(String(L.query.tab||"nodes")),V=m(!1),f=m([]),v=m([]),P=m([]),S=m([]),b=m(""),U=m("");let $=null;const z=k(()=>f.value.find(l=>l.id===b.value)),M=k(()=>f.value.filter(l=>l.enabled).length),F=k(()=>v.value.filter(l=>l.status==="busy"||l.status==="reserved").length),A=k(()=>f.value.reduce((l,n)=>l+n.current_running_jobs,0));ce(()=>L.query.tab,l=>{G.value=String(l||"nodes")});async function h(){V.value=!0;try{const[l,n,d]=await Promise.all([he(),Ee(),Ne()]);f.value=l,v.value=n,P.value=d,!b.value&&l.length&&(b.value=l[0].id),await R(),U.value=new Date().toLocaleTimeString("zh-CN",{hour12:!1})}finally{V.value=!1}}async function R(){if(!b.value){S.value=[];return}S.value=await Te(b.value)}async function J(l){await j.replace({path:"/compute",query:{tab:String(l)}})}async function y(l,n){const d=String(n.id);l==="enable"&&await we(d),l==="disable"&&await Ce(d),l==="drain"&&await ke(d),l==="test"&&await ye(d),await h()}function K(l){return l==="online"?"success":l==="draining"||l==="maintenance"?"warning":"info"}function O(l){return l==="running"?"success":l==="syncing"||l==="queued"?"warning":l==="failed"?"danger":"info"}function Q(l){return l==="busy"?"success":l==="reserved"?"warning":"info"}return me(()=>{h(),$=setInterval(h,5e3)}),_e(()=>{$&&clearInterval($)}),(l,n)=>{const d=ee,s=ie,g=te,W=se,w=oe,C=de,q=ne,H=le,X=ae,Y=ue,Z=re;return fe((p(),_("section",Ge,[i("header",Ve,[n[3]||(n[3]=i("div",null,[i("h1",null,"算力节点"),i("p",null,"维护训练算力节点、GPU 状态、任务队列和模型/数据集本地副本。")],-1)),i("div",Pe,[U.value?(p(),_("span",Se,"更新 "+o(U.value),1)):I("",!0),t(d,{onClick:h},{default:a(()=>[...n[2]||(n[2]=[u("刷新",-1)])]),_:1})])]),i("div",Ue,[i("div",$e,[n[4]||(n[4]=i("span",null,"在线节点",-1)),i("strong",null,o(M.value)+" / "+o(f.value.length),1)]),i("div",qe,[n[5]||(n[5]=i("span",null,"GPU 占用",-1)),i("strong",null,o(F.value)+" / "+o(v.value.length),1)]),i("div",xe,[n[6]||(n[6]=i("span",null,"运行任务",-1)),i("strong",null,o(A.value),1)]),i("div",Ie,[n[7]||(n[7]=i("span",null,"队列任务",-1)),i("strong",null,o(P.value.length),1)])]),t(Y,{modelValue:G.value,"onUpdate:modelValue":n[1]
|