Files
aiops/backend/static/assets/NamespaceManagementPage-BuGcKQSw.js
T
Logan.Li 025e74ff4d feat(k8s): Deployment 存储挂载改 Kuboard 一卷一卡布局
每张数据卷同屏展示卷定义与容器挂载(容器/只读读写/路径/subPath)。
2026-06-26 15:00:09 +08:00

2 lines
19 KiB
JavaScript

import{r as n,j as e}from"./vendor-codemirror-C7mXSpXt.js";import{C as p,a as l}from"./card-B-RtdR4H.js";import{g as Z,i as ee,L as A,B as m,D as L,j as se,a as O,b as B,c as E,e as R,t as q}from"./index-LZWfu62c.js";import{B as H}from"./badge-B0F5ZNtn.js";import{I as $}from"./input-BdDauX3U.js";import{L as ae}from"./label-u-lNUbKh.js";import{T as te,a as ne,b as i,c,d as ce,e as a}from"./table-BPFYQwjr.js";import{k as j}from"./index-Z0O8nAcG.js";import{f as z,B as P,L as N,R as re,P as me,k as oe,A as pe,N as le,j as I,C as xe,l as Q,T as de}from"./vendor-icons-Aso0-eeY.js";const ge=new Set(["kube-system","kube-public","kube-node-lease","default","devops"]);function fe(){const{clusterCode:t}=Z(),F=ee(),[o,M]=n.useState([]),[u,f]=n.useState(!1),[b,J]=n.useState(""),[K,k]=n.useState(!1),[d,y]=n.useState(""),[v,w]=n.useState(!1),[g,h]=n.useState(null),[C,S]=n.useState(!1),x=n.useCallback(async()=>{if(t){f(!0);try{const s=await j.getNamespacesDetail(t);M(Array.isArray(s)?s:[])}catch{M([])}finally{f(!1)}}},[t]);n.useEffect(()=>{x()},[x]);const D=async()=>{if(!(!t||!d.trim())){w(!0);try{await j.createNamespace(t,d.trim()),y(""),k(!1),await x()}catch(s){q.error(s?.message||"创建失败")}finally{w(!1)}}},Y=async()=>{if(!(!t||!g)){S(!0);try{await j.deleteNamespace(t,g),h(null),await x()}catch(s){q.error(s?.message||"删除失败")}finally{S(!1)}}},T=o.filter(s=>!b||s.name.toLowerCase().includes(b.toLowerCase())),G=o.reduce((s,r)=>s+(r.resource_counts?.deployments||0),0),U=o.reduce((s,r)=>s+(r.resource_counts?.pods||0),0),V=o.reduce((s,r)=>s+(r.resource_counts?.services||0),0),W=o.filter(s=>s.has_resource_quota).length;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:109:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:111:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:112:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:113:9",className:"h-3 w-3"}),e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:114:9",to:`/kubernetes/${t}`,className:"hover:text-slate-300 transition-colors",children:t}),e.jsx(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:115:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:116:9",className:"text-slate-300",children:"命名空间管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:120:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:121:9",children:[e.jsxs("h1",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:122:11",className:"text-2xl font-bold text-slate-100 flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:123:13",className:"h-6 w-6 text-emerald-400"}),"命名空间管理"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:126:11",className:"text-sm text-slate-500 mt-1",children:"命名空间资源配额与生命周期管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:128:9",className:"flex items-center gap-2",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:129:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:x,disabled:u,children:u?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:131:24",className:"h-4 w-4 animate-spin"}):e.jsx(re,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:131:71",className:"h-4 w-4"})}),e.jsxs(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:133:11",open:K,onOpenChange:k,children:[e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:134:13",asChild:!0,children:e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:135:15",className:"bg-blue-600 hover:bg-blue-700",children:[e.jsx(me,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:136:17",className:"h-4 w-4 mr-1"}),"创建命名空间"]})}),e.jsxs(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:139:13",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:140:15",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:141:17",children:"创建命名空间"})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:143:15",className:"space-y-4 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:144:17",className:"space-y-2",children:[e.jsx(ae,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:145:19",children:"命名空间名称"}),e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:146:19",value:d,onChange:s=>y(s.target.value),placeholder:"例如: my-app",onKeyDown:s=>s.key==="Enter"&&D()}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:152:19",className:"text-xs text-slate-500",children:"名称需符合 DNS-1123 标准(小写字母/数字/连字符)"})]})}),e.jsxs(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:157:15",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:158:17",variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:159:17",onClick:D,disabled:v||!d.trim(),children:[v?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:160:31",className:"h-4 w-4 animate-spin mr-1"}):null,"创建"]})]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:170:7",className:"grid grid-cols-2 md:grid-cols-5 gap-3",children:[e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:171:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:173:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:173:18",className:"text-xs text-slate-500",children:"命名空间"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:173:64",className:"text-xl font-bold text-emerald-400",children:o.length})]}),e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:174:13",className:"h-6 w-6 opacity-30 text-emerald-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:177:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:179:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:179:18",className:"text-xs text-slate-500",children:"Deployments"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:179:71",className:"text-xl font-bold text-blue-400",children:G})]}),e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:180:13",className:"h-6 w-6 opacity-30 text-blue-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:183:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:185:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:185:18",className:"text-xs text-slate-500",children:"Pods"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:185:64",className:"text-xl font-bold text-purple-400",children:U})]}),e.jsx(pe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:186:13",className:"h-6 w-6 opacity-30 text-purple-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:189:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:191:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:191:18",className:"text-xs text-slate-500",children:"Services"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:191:68",className:"text-xl font-bold text-cyan-400",children:V})]}),e.jsx(le,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:192:13",className:"h-6 w-6 opacity-30 text-cyan-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:195:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:197:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:197:18",className:"text-xs text-slate-500",children:"配额限制"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:197:64",className:"text-xl font-bold text-amber-400",children:W})]}),e.jsx(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:198:13",className:"h-6 w-6 opacity-30 text-amber-400"})]})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:204:7",className:"flex items-center gap-3",children:e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:205:9",value:b,onChange:s=>J(s.target.value),placeholder:"搜索命名空间...",className:"max-w-xs bg-slate-900 border-slate-700"})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:214:7",className:"bg-slate-900 border-slate-800",children:e.jsx(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:215:9",className:"p-0",children:e.jsxs(te,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:216:11",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:217:13",children:e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:218:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:219:17",className:"text-slate-400",children:"名称"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:220:17",className:"text-slate-400",children:"状态"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:221:17",className:"text-slate-400",children:"年龄"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:222:17",className:"text-slate-400 text-center",children:"Deploy"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:223:17",className:"text-slate-400 text-center",children:"Pods"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:224:17",className:"text-slate-400 text-center",children:"Svc"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:225:17",className:"text-slate-400 text-center",children:"配额"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:226:17",className:"text-slate-400",children:"标签"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:227:17",className:"text-slate-400 text-center",children:"操作"})]})}),e.jsx(ce,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:230:13",children:u?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:232:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:232:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:233:19",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):T.length===0?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:236:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:236:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:237:19",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无命名空间"]})}):T.map(s=>{const r=ge.has(s.name);return e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:243:21",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:244:23",className:"font-medium",children:e.jsx("button",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:245:25",className:"text-blue-400 hover:text-blue-300 hover:underline text-left",onClick:()=>F(`/kubernetes/${t}/namespace/${s.name}`),children:s.name})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:252:23",children:e.jsxs(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:253:25",className:s.status==="Active"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:[s.status==="Active"?e.jsx(xe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:254:53",className:"h-3 w-3 mr-1"}):e.jsx(Q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:254:97",className:"h-3 w-3 mr-1"}),s.status]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:258:23",className:"text-sm text-slate-400",children:s.age}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:259:23",className:"text-center text-sm text-slate-300",children:s.resource_counts?.deployments??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:260:23",className:"text-center text-sm text-slate-300",children:s.resource_counts?.pods??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:261:23",className:"text-center text-sm text-slate-300",children:s.resource_counts?.services??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:262:23",className:"text-center",children:s.has_resource_quota?e.jsxs(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:264:27",className:"bg-amber-500/20 text-amber-400",title:JSON.stringify(s.resource_quotas?.[0]?.status),children:[e.jsx(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:265:29",className:"h-3 w-3 mr-1"}),"有"]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:268:27",className:"text-xs text-slate-600",children:"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:271:23",className:"text-xs",children:s.labels&&Object.keys(s.labels).length>0?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:273:27",className:"flex flex-wrap gap-1 max-w-[200px]",children:[Object.entries(s.labels).slice(0,3).map(([_,X])=>e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:275:31",className:"px-1.5 py-0.5 bg-slate-800 rounded text-slate-400",children:[_,"=",X]},_)),Object.keys(s.labels).length>3&&e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:278:31",className:"text-slate-600",children:["+",Object.keys(s.labels).length-3]})]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:282:27",className:"text-slate-600",children:"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:285:23",className:"text-center",children:r?e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:287:27",className:"text-xs text-slate-600",children:"系统"}):e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:289:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>h(s.name),title:"删除命名空间",children:e.jsx(de,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:295:29",className:"h-3.5 w-3.5"})})})]},s.name)})})]})})}),e.jsx(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:309:7",open:!!g,onOpenChange:s=>!s&&h(null),children:e.jsxs(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:310:9",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:311:11",children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:312:13",className:"text-red-400 flex items-center gap-2",children:[e.jsx(Q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:313:15",className:"h-5 w-5"}),"删除命名空间"]})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:316:11",className:"space-y-3 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:317:13",className:"bg-red-500/10 border border-red-500/30 rounded-lg p-3",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:318:15",className:"text-sm text-red-300",children:["⚠️ 即将删除命名空间 ",e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:319:29",className:"font-bold",children:g})," 及其中所有资源。"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:321:15",className:"text-xs text-red-400/70 mt-1",children:"此操作不可逆,所有 Deployment/Pod/Service/ConfigMap 等资源将被永久删除。"})]})}),e.jsxs(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:326:11",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:327:13",variant:"outline",onClick:()=>h(null),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:328:13",variant:"destructive",onClick:Y,disabled:C,children:[C?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:329:27",className:"h-4 w-4 animate-spin mr-1"}):null,"确认删除"]})]})]})})]})}export{fe as default};