21 lines
218 KiB
JavaScript
21 lines
218 KiB
JavaScript
import{i as Ge,r as m,v as tt,N as Ee,A as Ut,j as e,B as h,L as pe,V as Kt,o as Xt,E as Zt,C as Qt,R as bs,p as ys,t as es,_ as ts,z as Ze,S as yt,G as ks,M as gs,y as ht,P as ut,Q as lt,m as ss,aW as vs,T as Bt,al as js,X as ns,a3 as kt,k as Ns}from"./index-CwVkcMR-.js";import{C as G,a as L,b as le,c as de}from"./card-C5qBu7CR.js";import{I as k}from"./input-B5ad6Rfz.js";import{L as A}from"./label-mg-tHjNc.js";import{B as ee}from"./badge-DgJ0w7jf.js";import{k as Q}from"./index-DK2BjZ0M.js";import{u as we}from"./use-toast-C8N6561m.js";import{S as fe,f as Le,e as Ds,b as fs,s as dt,Y as Ot,P as Ss,a as Es}from"./PodFileBrowser-Dsv7UfKm.js";import{T as Re,a as Be,b as ge,c as K,d as Oe,e as X}from"./table-X8m9Cp5H.js";import{P as oe}from"./plus-CaJ-dB4A.js";import{H as ws}from"./history-DUPeIzQi.js";import{M as gt}from"./minus-BWHRIRGV.js";import{F as vt}from"./file-text-DGoBtmAr.js";import{H as os}from"./hard-drive-CGq_SnM5.js";import{E as bt}from"./external-link-BhKmTUrK.js";import{T as Qe}from"./textarea-BZOXMpxW.js";import{S as Me,a as _e,b as et,c as $e,d as be}from"./select-CGtvCG8I.js";import{S as jt}from"./switch-DYr_nGop.js";import{T as xe}from"./trash-2-BPpnm3Sz.js";import{Z as as}from"./zap-Dr77-_Z_.js";import{F as Cs}from"./folder-open-BPEM3um6.js";import{R as cs}from"./rotate-cw-BWMnGC9F.js";import{P as rs}from"./play-_cqG4jyc.js";import{S as st}from"./save-CdpyeGoy.js";import{D as Ps}from"./disc-nz-uNCoJ.js";import{a as As,F as it}from"./folder-Jx79bRH4.js";import{R as nt}from"./refresh-cw-DM6JPbZg.js";import{C as Vs}from"./circle-x-DBoylLde.js";import{A as Ws}from"./arrow-left-B1MijWEO.js";import{P as It}from"./pause-CoEPLyJU.js";import"./copy-CKzeWvtb.js";import"./sparkles-BA2sXk5-.js";import"./xterm-DSqgeKvr.js";import"./box-D54sw_gB.js";import"./minimize-2-Dk2LAAKi.js";import"./upload-CSuL4aK-.js";import"./download-BgEJ-n5L.js";import"./index-CBIZnJrN.js";import"./chevron-up-DM77dvsL.js";const Ts=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],Rs=Ge("hash",Ts);const Bs=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],Os=Ge("heart",Bs);const Is=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Hs=Ge("image",Is);const zs=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Ms=Ge("key-round",zs);const _s=[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]],Ht=Ge("tags",_s);function ls(t){const s=t.conditions||t.pod_conditions||[],o=n=>s.find(l=>(l.type||l.Type)===n),a=n=>n?.lastTransitionTime||n?.LastTransitionTime||n?.last_transition_time;return{scheduled:a(o("PodScheduled")||{}),initialized:a(o("Initialized")||{}),containersReady:a(o("ContainersReady")||{}),ready:a(o("Ready")||{}),startTime:t.start_time||t.startTime}}function $s(t){const{clusterCode:s,namespace:o,deployment:a,pods:n,revisions:l,onRefresh:d}=t,{toast:p}=we(),[g,x]=m.useState("pods"),[N,D]=m.useState(null),[O,v]=m.useState(null),[f,C]=m.useState(a?.replicas||0),[E,M]=m.useState(!1),[I,q]=m.useState([]),[Y,V]=m.useState([]),[Z,_]=m.useState([]),[F,ne]=m.useState(""),[te,r]=m.useState([]),[u,S]=m.useState([]),T=a?.ready_replicas??a?.readyReplicas??0,i=a?.replicas??0,P=T===i&&i>0;m.useEffect(()=>{g==="services"&&(ne("services"),Promise.all([Q.getNamespaceServices(s,o).catch(()=>[]),Q.getNamespaceIngresses(s,o).catch(()=>[])]).then(([b,J])=>{const z=R=>Array.isArray(R)?R:R?.list||R?.items||R?.data||[],$=z(b),he=z(J),U=a?.spec?.selector?.matchLabels||a?.spec?.template?.metadata?.labels||{},me=$.filter(R=>{const ae=R.spec?.selector||R.selector||{};return Object.keys(ae).length===0?!1:Object.entries(ae).every(([ke,Ne])=>U[ke]===Ne)}).map(R=>({name:R.name||R.metadata?.name,type:R.spec?.type||R.type||"ClusterIP",clusterIP:R.spec?.clusterIP||R.cluster_ip||"<none>",ports:(R.spec?.ports||R.ports||[]).map(ae=>`${ae.port}${ae.targetPort?":"+ae.targetPort:""}/${ae.protocol||"TCP"}`),selector:R.spec?.selector||R.selector||{},age:R.age||""})),je=new Set(me.map(R=>R.name)),re=he.filter(R=>(R.spec?.rules||R.rules||[]).some(ke=>(ke.http?.paths||ke.paths||[]).some(Ne=>{const j=Ne.backend?.service?.name||Ne.backendService||"";return je.has(j)}))).map(R=>({name:R.name||R.metadata?.name,className:R.spec?.ingressClassName||R.ingressClass||"-",hosts:(R.spec?.rules||R.rules||[]).map(ae=>ae.host).filter(Boolean),rules:R.spec?.rules||R.rules||[],age:R.age||""}));q(me),V(re)}).catch(()=>{}).finally(()=>ne("")))},[g,s,o,a]),m.useEffect(()=>{g==="events"&&(ne("events"),Q.getEvents(s,o,void 0).then(b=>{const z=(Array.isArray(b)?b:b?.list||b?.items||b?.data||[]).filter($=>{const U=($.involvedObject||$.involved_object||{}).name||"";return U===a?.name||U.startsWith(a?.name+"-")}).map($=>({type:$.type||"Normal",reason:$.reason||"",message:$.message||"",source:$.source?.component||$.sourceComponent||"-",firstTimestamp:$.firstTimestamp||$.first_timestamp||"",lastTimestamp:$.lastTimestamp||$.last_timestamp||"",count:$.count||1}));_(z)}).catch(()=>{}).finally(()=>ne("")))},[g,s,o,a?.name]),m.useEffect(()=>{g==="scale"&&(ne("scale"),Promise.all([Q.getHPAs(s,o).catch(()=>[]),Promise.resolve([])]).then(([b])=>{const z=(he=>Array.isArray(he)?he:he?.list||he?.items||he?.data||[])(b),$=a?.name||"";r(z.filter(he=>(he.scaleTargetRef?.name||he.targetRef?.name||"")===$)),S([])}).catch(()=>{}).finally(()=>ne("")))},[g,s,o,a?.name]);const H=async b=>{const J=b.revision??b.revision_number??b.number;if(confirm(`确认回滚到修订版本 #${J}?`)){v(J);try{await Q.rollbackDeployment(s,o,a.name,Number(J)),p({title:"回滚已下发",description:`正在回滚到 #${J}`}),d()}catch(z){p({title:"回滚失败",description:z?.message||String(z),variant:"destructive"})}finally{v(null)}}},c=async()=>{M(!0);try{await Q.scaleDeployment(s,o,a.name,f),p({title:"伸缩已提交",description:`副本数 → ${f}`}),d()}catch(b){p({title:"伸缩失败",description:b?.message||String(b),variant:"destructive"})}finally{M(!1)}},y=[{key:"pods",label:"容器组",icon:tt,count:n.length},{key:"services",label:"访问方式",icon:Ee,count:I.length},{key:"events",label:"事件",icon:Ut,count:Z.length},{key:"scale",label:"容器伸缩",icon:oe},{key:"history",label:"历史版本",icon:ws,count:l.length}];return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:225:5",className:"space-y-4",children:[e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:227:7",className:"dg-card",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:228:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:229:11",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3 text-sm",children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:230:13",label:"状态",value:e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:231:15",style:{background:`${P?fe.green:fe.orange}22`,color:P?fe.green:fe.orange,border:`1px solid ${P?fe.green:fe.orange}44`},children:P?"Running":"Updating"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:13",label:"副本",value:e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:41",className:"font-mono",children:[T,"/",i]})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:236:13",label:"策略",value:a?.strategy||"RollingUpdate"}),n[0]&&e.jsxs(e.Fragment,{children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:239:17",label:"所在节点",value:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:240:19",className:"text-[var(--dg-blue)] hover:underline",onClick:()=>window.open(`/kubernetes/${s}/nodes/${n[0].node_name||n[0].node}`,"_blank"),children:n[0].node_name||n[0].node||"-"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:17",label:"容器组 IP",value:e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:49",className:"font-mono",children:n[0].ip||n[0].pod_ip||"-"})})]}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:247:13",label:"创建时间",value:Le(a?.created_at||a?.creationTimestamp)})]}),n[0]&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:251:13",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:e.jsx(ds,{"code-path":"src/components/kubernetes/DeploymentView.tsx:252:15",pod:n[0]})})]})}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:259:7",className:"flex items-center gap-0.5 border-b border-[var(--dg-border)] overflow-x-auto",children:[y.map(b=>e.jsxs("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:261:11",className:`flex items-center gap-1.5 px-4 py-2.5 text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${g===b.key?"border-[var(--dg-blue)] text-[var(--dg-blue)]":"border-transparent text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"}`,onClick:()=>x(b.key),children:[e.jsx(b.icon,{"code-path":"src/components/kubernetes/DeploymentView.tsx:270:13",className:"h-4 w-4"}),b.label,b.key==="pods"&&e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:272:34",className:"ml-1 text-[10px] px-1.5 py-0 bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]",children:b.count})]},b.key)),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:276:9",className:"ml-auto flex items-center gap-1 pr-2 shrink-0",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:277:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:E||f<=0,onClick:()=>C(b=>Math.max(0,b-1)),children:e.jsx(gt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:280:13",className:"h-4 w-4"})}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentView.tsx:282:11",type:"number",min:0,value:f,onChange:b=>C(Math.max(0,Number(b.target.value))),className:"w-16 h-7 text-center text-sm font-bold bg-slate-800 border-slate-700 text-slate-200"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:287:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:E,onClick:()=>C(b=>b+1),children:e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:290:13",className:"h-4 w-4"})}),f!==i&&e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:293:13",size:"sm",className:"h-7 text-xs bg-[var(--dg-blue)] hover:bg-[var(--dg-blue-hover)]",disabled:E,onClick:c,children:E?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:295:31",className:"h-3 w-3 animate-spin"}):"应用"})]})]}),g==="pods"&&e.jsx(Gs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:302:26",...t,expandedPod:N,setExpandedPod:D}),g==="services"&&e.jsx(Ls,{"code-path":"src/components/kubernetes/DeploymentView.tsx:303:30",services:I,ingresses:Y,loading:F,namespace:o}),g==="events"&&e.jsx(Fs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:304:28",events:Z,loading:F}),g==="scale"&&e.jsx(Ys,{"code-path":"src/components/kubernetes/DeploymentView.tsx:306:9",hpas:te,cronHpas:u,loading:F,replicas:i}),g==="history"&&e.jsx(Js,{"code-path":"src/components/kubernetes/DeploymentView.tsx:313:29",revisions:l,rollbackLoading:O,onRollback:H})]})}function Te({label:t,value:s}){return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:321:5",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:322:7",className:"text-xs text-[var(--dg-text-muted)] mb-1",children:t}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:323:7",className:"text-sm text-[var(--dg-text-primary)]",children:s})]})}function ds({pod:t}){const s=ls(t),o=[{label:"已调度",ts:s.scheduled,color:fe.blue},{label:"已初始化",ts:s.initialized,color:fe.orange},{label:"容器已就绪",ts:s.containersReady,color:fe.green},{label:"容器组已就绪",ts:s.ready,color:fe.green}];return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:338:5",className:"flex items-center gap-2 overflow-x-auto",children:o.map((a,n)=>{const l=o[n-1],d=Ds(l?.ts,a.ts);return e.jsxs(m.Fragment,{"code-path":"src/components/kubernetes/DeploymentView.tsx:343:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:344:13",className:"flex flex-col items-center min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:345:15",className:"h-2 w-2 rounded-full",style:{background:a.ts?a.color:"#334155"}}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:346:15",className:"text-[10px] mt-1 font-medium",style:{color:a.ts?a.color:"#475569"},children:a.label}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:347:15",className:"text-[9px] text-[var(--dg-text-muted)]",children:a.ts?Le(a.ts):"-"})]}),n<o.length-1&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:350:15",className:"flex flex-col items-center mx-0.5 min-w-[30px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:351:17",className:"h-0.5 w-8 bg-[var(--dg-border)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:352:17",className:"text-[9px] text-[var(--dg-text-muted)] mt-0.5",children:d!=null?fs(d):""})]})]},a.label)})})}function Gs({clusterCode:t,pods:s,onShowPodLogs:o,onShowPodTerminal:a,onShowPodFileBrowser:n,expandedPod:l,setExpandedPod:d}){return s.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:365:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无容器组"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:368:5",className:"space-y-2",children:s.map(p=>{const g=ls(p),x=l===p.name,N=p.node_name||p.node;return e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:374:11",className:"dg-card",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:375:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:377:15",className:"flex items-center gap-3",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:378:17",variant:"ghost",size:"icon",className:"h-6 w-6 text-[var(--dg-text-muted)]",onClick:()=>d(x?null:p.name),children:x?e.jsx(Kt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:31",className:"h-4 w-4"}):e.jsx(Xt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:69",className:"h-4 w-4"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:381:17",className:"font-mono text-sm text-[var(--dg-text-primary)]",children:p.name}),e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:382:17",style:{background:`${dt(p.status)}22`,color:dt(p.status),border:`1px solid ${dt(p.status)}44`},children:p.status||"Unknown"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:385:17",className:"text-xs text-[var(--dg-text-muted)]",children:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:386:19",className:"text-[var(--dg-blue)] hover:underline mr-2",onClick:()=>window.open(`/kubernetes/${t}/nodes/${N}`,"_blank"),children:N||"-"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:390:17",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:p.ip||p.pod_ip||"-"}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:391:17",className:"text-xs text-[var(--dg-text-muted)]",children:["重启 ",p.restart_count||0," 次"]}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:392:17",className:"text-xs text-[var(--dg-text-muted)]",children:Le(g.startTime||p.created_at)}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:393:17",className:"flex-1"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:394:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-[var(--dg-blue)]",onClick:()=>o(p),children:[e.jsx(vt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:395:19",className:"h-3.5 w-3.5 mr-1"}),"日志"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:397:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-emerald-400",onClick:()=>a(p),children:[e.jsx(Zt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:398:19",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:400:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-amber-400",onClick:()=>n(p),children:[e.jsx(os,{"code-path":"src/components/kubernetes/DeploymentView.tsx:401:19",className:"h-3.5 w-3.5 mr-1"}),"文件"]})]}),x&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:406:17",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:[e.jsx(ds,{"code-path":"src/components/kubernetes/DeploymentView.tsx:407:19",pod:p}),p.containers&&p.containers.length>0&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:410:21",className:"mt-3 grid grid-cols-1 md:grid-cols-2 gap-2",children:p.containers.map((D,O)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:412:25",className:"p-2 rounded bg-[var(--dg-bg-tertiary)] text-xs",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:413:27",className:"flex items-center justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:414:29",className:"font-medium text-[var(--dg-text-primary)]",children:D.name}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:415:29",className:D.ready?"text-emerald-400":"text-[var(--dg-text-muted)]",children:D.ready?"Ready":"Pending"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:417:27",className:"text-[var(--dg-text-muted)] mt-1",children:D.image}),D.resources&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:419:29",className:"mt-1 flex gap-3",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:420:31",children:["CPU: ",D.resources?.requests?.cpu||"0","/",D.resources?.limits?.cpu||"-"," m"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:421:31",children:["内存: ",D.resources?.requests?.memory||"0","/",D.resources?.limits?.memory||"-"]})]})]},O))})]})]})},p.name)})})}function Ls({services:t,ingresses:s,loading:o}){return o==="services"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:12",className:"flex items-center justify-center py-12",children:e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:444:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:446:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:447:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:448:11",className:"h-4 w-4 text-[var(--dg-blue)]"}),"关联 Service"]}),t.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:451:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Service(Deployment 选择器未关联任何 Service)"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:453:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:454:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:455:15",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:456:17",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:457:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:458:19",className:"text-[var(--dg-text-muted)]",children:"类型"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:459:19",className:"text-[var(--dg-text-muted)]",children:"ClusterIP"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:460:19",className:"text-[var(--dg-text-muted)]",children:"端口"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:461:19",className:"text-[var(--dg-text-muted)]",children:"Selector"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:464:15",children:t.map(a=>e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:466:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:467:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:21",children:e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:32",variant:"outline",className:"text-xs",children:a.type})}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:469:21",className:"font-mono text-sm text-[var(--dg-text-muted)]",children:a.clusterIP}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:470:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.ports.join(", ")}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:471:21",className:"text-xs text-[var(--dg-text-muted)]",children:Object.entries(a.selector).map(([n,l])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentView.tsx:473:25",className:"mr-1 bg-[var(--dg-bg-tertiary)] px-1 rounded",children:[n,"=",l]},n))})]},a.name))})]})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:485:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:486:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(bt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:487:11",className:"h-4 w-4 text-[var(--dg-purple)]"}),"关联 Ingress"]}),s.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:490:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Ingress"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:492:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:493:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:494:15",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:495:17",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:496:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:497:19",className:"text-[var(--dg-text-muted)]",children:"Class"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:498:19",className:"text-[var(--dg-text-muted)]",children:"Host"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:499:19",className:"text-[var(--dg-text-muted)]",children:"路径"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:502:15",children:s.map(a=>e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:504:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:505:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:506:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.className}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:507:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.hosts.join(", ")}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:508:21",className:"text-xs text-[var(--dg-text-muted)]",children:a.rules.flatMap(n=>(n.http?.paths||n.paths||[]).map(l=>l.path||"/")).join(", ")})]},a.name))})]})})]})]})}function Fs({events:t,loading:s}){return s==="events"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:12",className:"flex items-center justify-center py-12",children:e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:528:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无事件"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:531:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:532:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:533:9",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:534:11",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:535:13",className:"text-[var(--dg-text-muted)] w-16",children:"类型"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:536:13",className:"text-[var(--dg-text-muted)] w-24",children:"原因"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:537:13",className:"text-[var(--dg-text-muted)]",children:"消息"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:538:13",className:"text-[var(--dg-text-muted)] w-20",children:"来源"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:539:13",className:"text-[var(--dg-text-muted)] w-10",children:"次数"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:540:13",className:"text-[var(--dg-text-muted)] w-40",children:"最后时间"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:543:9",children:t.map((o,a)=>e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:545:13",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:546:15",children:e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:547:17",variant:"outline",className:o.type==="Warning"?"text-[var(--dg-yellow)] border-[var(--dg-yellow)]/30":"text-[var(--dg-text-muted)] border-[var(--dg-border)]",children:o.type})}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:551:15",className:"text-sm text-[var(--dg-text-secondary)]",children:o.reason}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:552:15",className:"text-sm text-[var(--dg-text-primary)] max-w-md truncate",title:o.message,children:o.message}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:553:15",className:"text-xs text-[var(--dg-text-muted)]",children:o.source}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:554:15",className:"text-sm text-[var(--dg-text-muted)]",children:o.count}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:555:15",className:"text-xs text-[var(--dg-text-muted)]",children:Le(o.lastTimestamp)})]},a))})]})})}function Ys({hpas:t,cronHpas:s,loading:o,replicas:a}){return o==="scale"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:12",className:"flex items-center justify-center py-12",children:e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:571:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:573:7",className:"flex items-center gap-2 px-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:574:9",className:"text-sm text-[var(--dg-text-muted)]",children:"当前副本:"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:575:9",className:"text-sm font-bold text-[var(--dg-text-primary)]",children:a}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:576:9",className:"text-xs text-[var(--dg-text-muted)]",children:"(可通过 Tab 栏右侧 +/- 手动调整)"})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:580:7",className:"dg-card",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:9",className:"pb-2",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:38",className:"text-sm flex items-center gap-2",children:[e.jsx(Ut,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:93",className:"h-4 w-4 text-[var(--dg-orange)]"}),"HPA — 水平自动伸缩"]})}),e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:582:9",children:t.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:584:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 HPA — ",e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:585:25",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 HPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:588:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:589:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:590:17",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:591:19",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:592:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:593:21",className:"text-[var(--dg-text-muted)]",children:"最小/最大"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:594:21",className:"text-[var(--dg-text-muted)]",children:"指标"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:595:21",className:"text-[var(--dg-text-muted)]",children:"当前负载"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:596:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:599:17",children:t.map((n,l)=>{const d=n.spec?.minReplicas??n.minReplicas??1,p=n.spec?.maxReplicas??n.maxReplicas??10,g=n.spec?.metrics||n.metrics||[],x=n.status?.currentReplicas??n.currentReplicas??0,O=(n.status?.conditions||n.conditions||[]).find(v=>v.type==="AbleToScale")?.status==="True";return e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:609:23",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:610:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsxs(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:611:25",className:"text-sm text-[var(--dg-text-secondary)] font-mono",children:[d," → ",p]}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:612:25",className:"text-xs text-[var(--dg-text-muted)]",children:g.map((v,f)=>{const C=v.resource||v.object?.metric?.name||"",E=v.resource?.target?.averageUtilization||v.resource?.target?.averageValue||v.resource?.target?.type||"-";return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:616:36",children:[C?.name||C,": ",E,v.resource?.target?.averageUtilization?"%":""]},f)})}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:619:25",className:"text-sm font-mono text-[var(--dg-text-secondary)]",children:x}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:620:25",children:e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:621:27",className:O?"bg-[var(--dg-green)]/20 text-[var(--dg-green)]":"bg-[var(--dg-red)]/20 text-[var(--dg-red)]",children:O?"正常":"异常"})})]},n.name||l)})})]})})})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:636:7",className:"dg-card",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:9",className:"pb-2",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:38",className:"text-sm flex items-center gap-2",children:[e.jsx(Qt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:93",className:"h-4 w-4 text-[var(--dg-blue)]"}),"CronHPA — 定时伸缩"]})}),e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:638:9",children:s.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:640:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 CronHPA — ",e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:641:29",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 CronHPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:644:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:645:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:646:17",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:647:19",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:648:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:649:21",className:"text-[var(--dg-text-muted)]",children:"目标副本"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:650:21",className:"text-[var(--dg-text-muted)]",children:"调度规则"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:651:21",className:"text-[var(--dg-text-muted)]",children:"时区"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:652:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:655:17",children:s.map((n,l)=>{const d=n.spec?.jobs||n.jobs||[],p=n.spec?.timezone||"UTC";return e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:660:23",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:661:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:662:25",className:"text-sm text-[var(--dg-text-secondary)]",children:d.map(g=>g.targetSize||g.targetReplicas||"?").join(", ")}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:665:25",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:d.map(g=>g.schedule||"?").join(", ")}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:666:25",className:"text-xs text-[var(--dg-text-muted)]",children:p}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:667:25",children:e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:668:27",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)]",children:"已启用"})})]},n.name||l)})})]})})})]})]})}function Js({revisions:t,rollbackLoading:s,onRollback:o}){return t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:686:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无历史版本"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:689:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:690:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:691:9",children:e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:692:11",className:"border-[var(--dg-border)]",children:[e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:693:13",className:"text-[var(--dg-text-muted)] w-24",children:"Revision"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:694:13",className:"text-[var(--dg-text-muted)]",children:"镜像"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:695:13",className:"text-[var(--dg-text-muted)] w-24",children:"状态"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:696:13",className:"text-[var(--dg-text-muted)] w-40",children:"更新时间"}),e.jsx(K,{"code-path":"src/components/kubernetes/DeploymentView.tsx:697:13",className:"text-[var(--dg-text-muted)] w-24",children:"操作"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:700:9",children:t.map((a,n)=>{const l=a.revision??a.revision_number??a.number??n+1,d=n===0;return e.jsxs(ge,{"code-path":"src/components/kubernetes/DeploymentView.tsx:705:15",className:"border-[var(--dg-border)]",children:[e.jsxs(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:706:17",className:"font-mono text-[var(--dg-text-primary)]",children:["#",l]}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:707:17",className:"text-xs font-mono text-[var(--dg-text-muted)] max-w-[300px] truncate",children:a.image||a.images?.[0]||"-"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:708:17",children:d?e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:710:23",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)] border-[var(--dg-green)]/30",children:"当前"}):e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentView.tsx:711:23",variant:"outline",className:"text-[var(--dg-text-muted)]",children:"历史"})}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:713:17",className:"text-xs text-[var(--dg-text-muted)]",children:Le(a.created_at||a.time)}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:714:17",children:e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentView.tsx:715:19",variant:"ghost",size:"sm",className:"h-7 text-amber-400",disabled:d||s!==null,onClick:()=>o(a),children:[s===l?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:53",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(bs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:105",className:"h-3 w-3 mr-1"}),"回滚"]})})]},l)})})]})})}function zt(t){const s=n=>{if(!n)return null;let l="none";return n.httpGet?l="httpGet":n.tcpSocket?l="tcpSocket":n.exec&&(l="exec"),{type:l,httpPath:n.httpGet?.path||"",httpPort:n.httpGet?.port??"",httpHost:n.httpGet?.host||"",tcpPort:n.tcpSocket?.port??"",execCommand:Array.isArray(n.exec?.command)?n.exec.command.join(`
|
||
`):n.exec?.command||"",initialDelaySeconds:n.initialDelaySeconds,periodSeconds:n.periodSeconds,timeoutSeconds:n.timeoutSeconds,successThreshold:n.successThreshold,failureThreshold:n.failureThreshold}},o=n=>{if(!n)return{type:"none"};let l="none";return n.exec?l="exec":n.httpGet?l="httpGet":n.tcpSocket&&(l="tcpSocket"),{type:l,execCommand:Array.isArray(n.exec?.command)?n.exec.command.join(`
|
||
`):"",httpPath:n.httpGet?.path||"",httpPort:n.httpGet?.port??"",tcpPort:n.tcpSocket?.port??""}},a=t.securityContext;return{name:t.name||"",image:t.image||"",imagePullPolicy:t.imagePullPolicy||"",command:Array.isArray(t.command)?t.command:[],args:Array.isArray(t.args)?t.args:[],workingDir:t.workingDir||"",env:(Array.isArray(t.env)?t.env:[]).map(n=>({name:n.name||"",value:n.value??""})),ports:(Array.isArray(t.ports)?t.ports:[]).map(n=>({name:n.name||"",containerPort:n.containerPort??"",protocol:n.protocol||"TCP"})),resources:{requests:t.resources?.requests||{},limits:t.resources?.limits||{}},livenessProbe:s(t.livenessProbe),readinessProbe:s(t.readinessProbe),startupProbe:s(t.startupProbe),lifecycle:t.lifecycle?{postStart:t.lifecycle.postStart?o(t.lifecycle.postStart):void 0,preStop:t.lifecycle.preStop?o(t.lifecycle.preStop):void 0}:null,securityContext:a?{runAsUser:a.runAsUser,runAsGroup:a.runAsGroup,runAsNonRoot:a.runAsNonRoot,privileged:a.privileged,readOnlyRootFilesystem:a.readOnlyRootFilesystem,allowPrivilegeEscalation:a.allowPrivilegeEscalation,capabilitiesAdd:a.capabilities?.add||[],capabilitiesDrop:a.capabilities?.drop||[]}:null,volumeMounts:(Array.isArray(t.volumeMounts)?t.volumeMounts:[]).map(n=>({name:n.name||"",mountPath:n.mountPath||"",subPath:n.subPath||"",readOnly:n.readOnly||!1}))}}function Mt(t=""){return{name:t,image:"",imagePullPolicy:"IfNotPresent",command:[],args:[],workingDir:"",env:[],ports:[],resources:{},livenessProbe:null,readinessProbe:null,startupProbe:null,lifecycle:null,securityContext:null,volumeMounts:[]}}function pt(t){if(!t||t.type==="none"||!t.type)return;const s={};if(t.type==="httpGet")s.httpGet={},t.httpPath&&(s.httpGet.path=t.httpPath),t.httpPort!==""&&t.httpPort!=null&&(s.httpGet.port=typeof t.httpPort=="number"?t.httpPort:Number(t.httpPort)),t.httpHost&&(s.httpGet.host=t.httpHost);else if(t.type==="tcpSocket")s.tcpSocket={},t.tcpPort!==""&&t.tcpPort!=null&&(s.tcpSocket.port=typeof t.tcpPort=="number"?t.tcpPort:Number(t.tcpPort));else if(t.type==="exec"){const o=(t.execCommand||"").split(`
|
||
`).map(a=>a.trim()).filter(Boolean);o.length&&(s.exec={command:o})}return t.initialDelaySeconds!=null&&(s.initialDelaySeconds=t.initialDelaySeconds),t.periodSeconds!=null&&(s.periodSeconds=t.periodSeconds),t.timeoutSeconds!=null&&(s.timeoutSeconds=t.timeoutSeconds),t.successThreshold!=null&&(s.successThreshold=t.successThreshold),t.failureThreshold!=null&&(s.failureThreshold=t.failureThreshold),Object.keys(s).length>0?s:void 0}function _t(t){if(!(!t||t.type==="none"||!t.type)){if(t.type==="exec"){const s=(t.execCommand||"").split(`
|
||
`).map(o=>o.trim()).filter(Boolean);return s.length?{exec:{command:s}}:void 0}if(t.type==="httpGet"){const s={httpGet:{}};return t.httpPath&&(s.httpGet.path=t.httpPath),t.httpPort!==""&&t.httpPort!=null&&(s.httpGet.port=Number(t.httpPort)),s}if(t.type==="tcpSocket"){const s={tcpSocket:{}};return t.tcpPort!==""&&t.tcpPort!=null&&(s.tcpSocket.port=Number(t.tcpPort)),s}}}function $t(t){const s={name:t.name};t.image&&(s.image=t.image),t.imagePullPolicy&&(s.imagePullPolicy=t.imagePullPolicy),t.workingDir&&(s.workingDir=t.workingDir),t.command.length>0&&(s.command=t.command),t.args.length>0&&(s.args=t.args),t.env.length>0&&(s.env=t.env.filter(x=>x.name.trim()).map(x=>{const N={name:x.name};return x.value!=null&&(N.value=x.value),N})),t.ports.length>0&&(s.ports=t.ports.filter(x=>x.containerPort!=="").map(x=>{const N={containerPort:typeof x.containerPort=="number"?x.containerPort:Number(x.containerPort)};return x.name&&(N.name=x.name),x.protocol&&(N.protocol=x.protocol),N}));const o=t.resources.requests,a=t.resources.limits,n=o&&Object.values(o).some(x=>x&&x.trim()),l=a&&Object.values(a).some(x=>x&&x.trim());(n||l)&&(s.resources={},n&&(s.resources.requests={},o.cpu?.trim()&&(s.resources.requests.cpu=o.cpu),o.memory?.trim()&&(s.resources.requests.memory=o.memory)),l&&(s.resources.limits={},a.cpu?.trim()&&(s.resources.limits.cpu=a.cpu),a.memory?.trim()&&(s.resources.limits.memory=a.memory)));const d=pt(t.livenessProbe);d&&(s.livenessProbe=d);const p=pt(t.readinessProbe);p&&(s.readinessProbe=p);const g=pt(t.startupProbe);if(g&&(s.startupProbe=g),t.lifecycle){const x={},N=_t(t.lifecycle.postStart);N&&(x.postStart=N);const D=_t(t.lifecycle.preStop);D&&(x.preStop=D),Object.keys(x).length>0&&(s.lifecycle=x)}if(t.securityContext){const x=t.securityContext,N={};x.runAsUser!==""&&x.runAsUser!=null&&(N.runAsUser=Number(x.runAsUser)),x.runAsGroup!==""&&x.runAsGroup!=null&&(N.runAsGroup=Number(x.runAsGroup)),x.runAsNonRoot!=null&&(N.runAsNonRoot=x.runAsNonRoot),x.privileged!=null&&(N.privileged=x.privileged),x.readOnlyRootFilesystem!=null&&(N.readOnlyRootFilesystem=x.readOnlyRootFilesystem),x.allowPrivilegeEscalation!=null&&(N.allowPrivilegeEscalation=x.allowPrivilegeEscalation);const D=(x.capabilitiesAdd||[]).filter(Boolean),O=(x.capabilitiesDrop||[]).filter(Boolean);(D.length||O.length)&&(N.capabilities={},D.length&&(N.capabilities.add=D),O.length&&(N.capabilities.drop=O)),Object.keys(N).length>0&&(s.securityContext=N)}return t.volumeMounts.length>0&&(s.volumeMounts=t.volumeMounts.filter(x=>x.name.trim()&&x.mountPath.trim()).map(x=>{const N={name:x.name,mountPath:x.mountPath};return x.subPath&&(N.subPath=x.subPath),x.readOnly&&(N.readOnly=!0),N})),s}function Gt(t){return t.join(`
|
||
`)}function Lt(t){return t.split(`
|
||
`).map(s=>s.trim()).filter(Boolean)}function qs({container:t,onUpdate:s}){const o=t,a="flex items-center gap-1.5 text-xs font-semibold text-slate-300 mb-2";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:36:7",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:37:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:38:11",className:"text-slate-400 text-xs",children:"容器名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:39:11",value:o.name,onChange:n=>s({name:n.target.value}),placeholder:"my-app",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:43:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:44:11",className:"text-slate-400 text-xs",children:"容器镜像"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:45:11",value:o.image,onChange:n=>s({image:n.target.value}),placeholder:"nginx:1.25",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:49:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:50:11",className:"text-slate-400 text-xs",children:"镜像拉取策略"}),e.jsxs(Me,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:51:11",value:o.imagePullPolicy||"__none",onValueChange:n=>s({imagePullPolicy:n==="__none"?"":n}),children:[e.jsx(_e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:52:13",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 text-xs h-8",children:e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:53:15"})}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:55:13",className:"bg-slate-900 border-slate-700",children:[e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:56:15",value:"__none",className:"text-slate-400",children:"不设置(默认 IfNotPresent)"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:57:15",value:"Always",className:"text-slate-200",children:"Always"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:58:15",value:"IfNotPresent",className:"text-slate-200",children:"IfNotPresent"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:59:15",value:"Never",className:"text-slate-200",children:"Never"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:63:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:64:11",className:"text-slate-400 text-xs",children:"工作目录 (workingDir)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:65:11",value:o.workingDir||"",onChange:n=>s({workingDir:n.target.value}),placeholder:"/app",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:72:7",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:73:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:74:11",className:"text-slate-400 text-xs",children:"启动命令 (command) — 每行一个"}),e.jsx(Qe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:75:11",value:Gt(o.command),placeholder:`/bin/sh
|
||
-c`,onChange:n=>s({command:Lt(n.target.value)}),className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[60px]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:79:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:80:11",className:"text-slate-400 text-xs",children:"启动参数 (args) — 每行一个"}),e.jsx(Qe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:81:11",value:Gt(o.args),placeholder:`--config=/etc/app.yaml
|
||
--debug`,onChange:n=>s({args:Lt(n.target.value)}),className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[60px]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:88:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:89:9",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:90:11",className:a,children:[e.jsx(Zt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:90:39",className:"h-3.5 w-3.5 text-cyan-400"})," 环境变量"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:91:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>s({env:[...o.env,{name:"",value:""}]}),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:93:13",className:"h-3 w-3 mr-1"}),"新增"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:96:9",className:"space-y-1.5",children:[o.env.map((n,l)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:98:13",className:"grid grid-cols-[1fr_1.4fr_auto] gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:99:15",value:n.name,placeholder:"KEY",onChange:d=>{const p=[...o.env];p[l]={...n,name:d.target.value},s({env:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:102:15",value:n.value||"",placeholder:"value",onChange:d=>{const p=[...o.env];p[l]={...n,value:d.target.value},s({env:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:105:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400",onClick:()=>s({env:o.env.filter((d,p)=>p!==l)}),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:107:17",className:"h-3.5 w-3.5"})})]},l)),o.env.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:111:34",className:"text-[11px] text-slate-600",children:"无环境变量"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:116:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:117:9",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:118:11",className:a,children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:118:39",className:"h-3.5 w-3.5 text-indigo-400"})," 端口"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:119:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>s({ports:[...o.ports,{name:"",containerPort:"",protocol:"TCP"}]}),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:121:13",className:"h-3 w-3 mr-1"}),"新增"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:124:9",className:"space-y-1.5",children:[o.ports.map((n,l)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:126:13",className:"grid grid-cols-[1fr_1fr_100px_auto] gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:127:15",value:n.name||"",placeholder:"http",onChange:d=>{const p=[...o.ports];p[l]={...n,name:d.target.value},s({ports:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:130:15",type:"number",value:n.containerPort,placeholder:"8080",onChange:d=>{const p=[...o.ports];p[l]={...n,containerPort:d.target.value},s({ports:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsxs(Me,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:133:15",value:n.protocol||"TCP",onValueChange:d=>{const p=[...o.ports];p[l]={...n,protocol:d},s({ports:p})},children:[e.jsx(_e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:134:17",className:"bg-slate-800 border-slate-700 text-slate-200 text-xs h-8",children:e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:135:19"})}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:137:17",className:"bg-slate-900 border-slate-700",children:[e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:138:19",value:"TCP",className:"text-slate-200",children:"TCP"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:139:19",value:"UDP",className:"text-slate-200",children:"UDP"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:140:19",value:"SCTP",className:"text-slate-200",children:"SCTP"})]})]}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:143:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400",onClick:()=>s({ports:o.ports.filter((d,p)=>p!==l)}),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:145:17",className:"h-3.5 w-3.5"})})]},l)),o.ports.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:149:36",className:"text-[11px] text-slate-600",children:"无端口暴露"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:154:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:155:9",className:a,children:[e.jsx(ys,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:155:37",className:"h-3.5 w-3.5 text-amber-400"})," 资源 (requests / limits)"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:156:9",className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:157:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:158:13",className:"text-[11px] text-slate-500",children:"CPU 请求"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:159:13",value:o.resources.requests?.cpu||"",placeholder:"100m",onChange:n=>s({resources:{...o.resources,requests:{...o.resources.requests,cpu:n.target.value}}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:163:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:164:13",className:"text-[11px] text-slate-500",children:"CPU 上限"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:165:13",value:o.resources.limits?.cpu||"",placeholder:"500m",onChange:n=>s({resources:{...o.resources,limits:{...o.resources.limits,cpu:n.target.value}}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:169:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:170:13",className:"text-[11px] text-slate-500",children:"内存请求"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:171:13",value:o.resources.requests?.memory||"",placeholder:"128Mi",onChange:n=>s({resources:{...o.resources,requests:{...o.resources.requests,memory:n.target.value}}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:175:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:176:13",className:"text-[11px] text-slate-500",children:"内存上限"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:177:13",value:o.resources.limits?.memory||"",placeholder:"512Mi",onChange:n=>s({resources:{...o.resources,limits:{...o.resources.limits,memory:n.target.value}}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:185:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:186:9",className:a,children:[e.jsx(Os,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:186:37",className:"h-3.5 w-3.5 text-rose-400"})," 健康检查 (Probes)"]}),e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:187:9",className:"space-y-2",children:["livenessProbe","readinessProbe","startupProbe"].map(n=>e.jsx(Us,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:189:13",label:{livenessProbe:"存活探针 (liveness)",readinessProbe:"就绪探针 (readiness)",startupProbe:"启动探针 (startup)"}[n],probe:o[n],onChange:l=>s({[n]:l})},n))})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:199:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:200:9",className:a,children:[e.jsx(as,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:200:37",className:"h-3.5 w-3.5 text-yellow-400"})," 生命周期回调 (Lifecycle)"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:201:9",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsx(Ft,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:202:11",label:"启动后 (postStart)",handler:o.lifecycle?.postStart,onChange:n=>s({lifecycle:{...o.lifecycle,postStart:n}})}),e.jsx(Ft,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:204:11",label:"终止前 (preStop)",handler:o.lifecycle?.preStop,onChange:n=>s({lifecycle:{...o.lifecycle,preStop:n}})})]}),!o.lifecycle&&e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:208:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px] mt-1",onClick:()=>s({lifecycle:{postStart:{type:"none"},preStop:{type:"none"}}}),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:210:13",className:"h-3 w-3 mr-1"}),"启用生命周期回调"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:216:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:217:9",className:a,children:[e.jsx(es,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:217:37",className:"h-3.5 w-3.5 text-emerald-400"})," 安全上下文 (SecurityContext)"]}),o.securityContext?e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:219:11",className:"space-y-2 border border-slate-800 rounded-md p-3 bg-slate-950/30",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:220:13",className:"grid grid-cols-2 md:grid-cols-3 gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:221:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:222:17",className:"text-[11px] text-slate-500",children:"runAsUser"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:223:17",type:"number",value:o.securityContext.runAsUser??"",placeholder:"1000",onChange:n=>s({securityContext:{...o.securityContext,runAsUser:n.target.value===""?void 0:Number(n.target.value)}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:227:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:228:17",className:"text-[11px] text-slate-500",children:"runAsGroup"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:229:17",type:"number",value:o.securityContext.runAsGroup??"",placeholder:"1000",onChange:n=>s({securityContext:{...o.securityContext,runAsGroup:n.target.value===""?void 0:Number(n.target.value)}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:233:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:234:17",className:"text-[11px] text-slate-500",children:"Capabilities Add (逗号分隔)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:235:17",value:(o.securityContext.capabilitiesAdd||[]).join(","),placeholder:"NET_ADMIN",onChange:n=>s({securityContext:{...o.securityContext,capabilitiesAdd:n.target.value.split(",").map(l=>l.trim()).filter(Boolean)}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:239:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:240:17",className:"text-[11px] text-slate-500",children:"Capabilities Drop (逗号分隔)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:241:17",value:(o.securityContext.capabilitiesDrop||[]).join(","),placeholder:"ALL",onChange:n=>s({securityContext:{...o.securityContext,capabilitiesDrop:n.target.value.split(",").map(l=>l.trim()).filter(Boolean)}}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:246:13",className:"flex items-center gap-4 flex-wrap",children:[e.jsx(Ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:247:15",label:"runAsNonRoot",value:!!o.securityContext.runAsNonRoot,onChange:n=>s({securityContext:{...o.securityContext,runAsNonRoot:n}})}),e.jsx(Ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:249:15",label:"privileged",value:!!o.securityContext.privileged,onChange:n=>s({securityContext:{...o.securityContext,privileged:n}})}),e.jsx(Ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:251:15",label:"readOnlyRootFilesystem",value:!!o.securityContext.readOnlyRootFilesystem,onChange:n=>s({securityContext:{...o.securityContext,readOnlyRootFilesystem:n}})}),e.jsx(Ke,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:253:15",label:"allowPrivilegeEscalation",value:o.securityContext.allowPrivilegeEscalation??!1,onChange:n=>s({securityContext:{...o.securityContext,allowPrivilegeEscalation:n}})})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:256:13",size:"sm",variant:"ghost",className:"h-6 text-red-400 text-[11px]",onClick:()=>s({securityContext:null}),children:[e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:258:15",className:"h-3 w-3 mr-1"}),"移除安全上下文"]})]}):e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:262:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>s({securityContext:{runAsNonRoot:!1,privileged:!1}}),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:264:13",className:"h-3 w-3 mr-1"}),"启用安全上下文"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:270:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:271:9",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:272:11",className:a,children:[e.jsx(Cs,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:272:39",className:"h-3.5 w-3.5 text-teal-400"})," 卷挂载 (VolumeMounts)"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:273:11",size:"sm",variant:"outline",className:"h-6 border-slate-700 text-slate-300 text-[11px]",onClick:()=>s({volumeMounts:[...o.volumeMounts,{name:"",mountPath:"",subPath:"",readOnly:!1}]}),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:275:13",className:"h-3 w-3 mr-1"}),"新增"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:278:9",className:"space-y-1.5",children:[o.volumeMounts.map((n,l)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:280:13",className:"grid grid-cols-[1fr_1fr_1fr_60px_auto] gap-2 items-center",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:281:15",value:n.name,placeholder:"volume 名称",onChange:d=>{const p=[...o.volumeMounts];p[l]={...n,name:d.target.value},s({volumeMounts:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:284:15",value:n.mountPath,placeholder:"/data",onChange:d=>{const p=[...o.volumeMounts];p[l]={...n,mountPath:d.target.value},s({volumeMounts:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:287:15",value:n.subPath||"",placeholder:"subPath (可选)",onChange:d=>{const p=[...o.volumeMounts];p[l]={...n,subPath:d.target.value},s({volumeMounts:p})},className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsxs("label",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:290:15",className:"flex items-center gap-1 text-[10px] text-slate-500 cursor-pointer",children:[e.jsx(jt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:291:17",checked:!!n.readOnly,onCheckedChange:d=>{const p=[...o.volumeMounts];p[l]={...n,readOnly:d},s({volumeMounts:p})}}),"RO"]}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:295:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400",onClick:()=>s({volumeMounts:o.volumeMounts.filter((d,p)=>p!==l)}),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:297:17",className:"h-3.5 w-3.5"})})]},l)),o.volumeMounts.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:301:43",className:"text-[11px] text-slate-600",children:"无卷挂载"})]})]})]})}function Us({label:t,probe:s,onChange:o}){const a=!!s,n=s||{type:"httpGet"},l=d=>o({...n,...d});return e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:315:5",className:"border border-slate-800 rounded-md p-2.5 bg-slate-950/30",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:316:7",className:"flex items-center justify-between mb-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:317:9",className:"text-xs text-slate-300 font-medium",children:t}),e.jsx(jt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:318:9",checked:a,onCheckedChange:d=>o(d?{type:"httpGet",httpPath:"/",httpPort:8080,initialDelaySeconds:10,periodSeconds:10}:null)})]}),a&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:323:11",className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:324:13",className:"text-[10px] text-slate-500 w-8",children:"类型"}),e.jsxs(Me,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:325:13",value:n.type||"httpGet",onValueChange:d=>l({type:d}),children:[e.jsx(_e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:326:15",className:"bg-slate-800 border-slate-700 text-slate-200 text-xs h-7 flex-1",children:e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:327:17"})}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:329:15",className:"bg-slate-900 border-slate-700",children:[e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:330:17",value:"httpGet",className:"text-slate-200",children:"HTTP GET"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:331:17",value:"tcpSocket",className:"text-slate-200",children:"TCP Socket"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:332:17",value:"exec",className:"text-slate-200",children:"Exec 命令"})]})]})]}),n.type==="httpGet"&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:337:13",className:"grid grid-cols-3 gap-2 mb-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:338:15",value:n.httpPath||"",placeholder:"/healthz",onChange:d=>l({httpPath:d.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:341:15",type:"number",value:n.httpPort??"",placeholder:"8080",onChange:d=>l({httpPort:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:344:15",value:n.httpHost||"",placeholder:"host (可选)",onChange:d=>l({httpHost:d.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),n.type==="tcpSocket"&&e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:350:13",className:"mb-2",children:e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:351:15",type:"number",value:n.tcpPort??"",placeholder:"端口",onChange:d=>l({tcpPort:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})}),n.type==="exec"&&e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:357:13",className:"mb-2",children:e.jsx(Qe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:358:15",value:n.execCommand||"",placeholder:"每行一个命令片段,如:\\ncat\\n/tmp/healthy",onChange:d=>l({execCommand:d.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[50px]"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:363:11",className:"grid grid-cols-5 gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:364:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:365:15",className:"text-[10px] text-slate-500",children:"延迟(s)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:366:15",type:"number",value:n.initialDelaySeconds??"",placeholder:"10",onChange:d=>l({initialDelaySeconds:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:370:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:371:15",className:"text-[10px] text-slate-500",children:"间隔(s)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:372:15",type:"number",value:n.periodSeconds??"",placeholder:"10",onChange:d=>l({periodSeconds:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:376:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:377:15",className:"text-[10px] text-slate-500",children:"超时(s)"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:378:15",type:"number",value:n.timeoutSeconds??"",placeholder:"1",onChange:d=>l({timeoutSeconds:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:382:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:383:15",className:"text-[10px] text-slate-500",children:"成功"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:384:15",type:"number",value:n.successThreshold??"",placeholder:"1",onChange:d=>l({successThreshold:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:388:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:389:15",className:"text-[10px] text-slate-500",children:"失败"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:390:15",type:"number",value:n.failureThreshold??"",placeholder:"3",onChange:d=>l({failureThreshold:d.target.value===""?void 0:Number(d.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]})]})]})]})}function Ft({label:t,handler:s,onChange:o}){const a=s||{type:"none"},n=!a.type||a.type==="none"?"__none":a.type;return e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:406:5",className:"border border-slate-800 rounded-md p-2.5 bg-slate-950/30",children:[e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:407:7",className:"text-xs text-slate-300 font-medium block mb-2",children:t}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:408:7",className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:409:9",className:"text-[10px] text-slate-500 w-8",children:"类型"}),e.jsxs(Me,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:410:9",value:n,onValueChange:l=>o({...a,type:l==="__none"?"none":l}),children:[e.jsx(_e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:411:11",className:"bg-slate-800 border-slate-700 text-slate-200 text-xs h-7 flex-1",children:e.jsx(et,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:412:13"})}),e.jsxs($e,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:414:11",className:"bg-slate-900 border-slate-700",children:[e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:415:13",value:"__none",className:"text-slate-400",children:"不设置"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:416:13",value:"exec",className:"text-slate-200",children:"Exec 命令"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:417:13",value:"httpGet",className:"text-slate-200",children:"HTTP GET"}),e.jsx(be,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:418:13",value:"tcpSocket",className:"text-slate-200",children:"TCP Socket"})]})]})]}),a.type==="exec"&&e.jsx(Qe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:423:9",value:a.execCommand||"",placeholder:"每行一个命令片段",onChange:l=>o({...a,execCommand:l.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs min-h-[50px]"}),a.type==="httpGet"&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:428:9",className:"grid grid-cols-2 gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:429:11",value:a.httpPath||"",placeholder:"/shutdown",onChange:l=>o({...a,httpPath:l.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:432:11",type:"number",value:a.httpPort??"",placeholder:"8080",onChange:l=>o({...a,httpPort:l.target.value===""?void 0:Number(l.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]}),a.type==="tcpSocket"&&e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:438:9",type:"number",value:a.tcpPort??"",placeholder:"端口",onChange:l=>o({...a,tcpPort:l.target.value===""?void 0:Number(l.target.value)}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-7"})]})}function Ke({label:t,value:s,onChange:o}){return e.jsxs("label",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:448:5",className:"flex items-center gap-1.5 cursor-pointer",children:[e.jsx(jt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:449:7",checked:s,onCheckedChange:o}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerEditor.tsx:450:7",className:"text-[11px] text-slate-400 font-mono",children:t})]})}function Yt({title:t,description:s,icon:o,containers:a,accentColor:n,onAdd:l,onRemove:d,onUpdate:p,onDuplicate:g}){const[x,N]=m.useState(new Set([0])),D=f=>{N(C=>{const E=new Set(C);return E.has(f)?E.delete(f):E.add(f),E})},O=n==="blue"?"border-blue-500/30":"border-purple-500/30",v=n==="blue"?"bg-blue-500/5":"bg-purple-500/5";return e.jsxs(G,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:35:5",className:"bg-slate-900 border-slate-800",children:[e.jsxs(le,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:36:7",className:"pb-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:37:9",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:38:11",className:"flex items-center gap-2",children:[o,e.jsx(de,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:40:13",className:"text-sm text-slate-200",children:t}),e.jsx(ee,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:41:13",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:a.length})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:43:11",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:l,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:44:13",className:"h-3 w-3 mr-1"}),"新增容器"]})]}),e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:47:9",className:"text-[11px] text-slate-600",children:s})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:49:7",className:"pt-0 space-y-3",children:[a.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:51:11",className:"text-center py-6 text-slate-600 text-xs",children:"暂无容器,点击「新增容器」添加"}),a.map((f,C)=>{const E=x.has(C)||a.length===1;return e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:56:13",className:`rounded-lg border ${O} overflow-hidden`,children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:58:15",className:`flex items-center justify-between px-3 py-2 ${v} cursor-pointer`,onClick:()=>D(C),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:59:17",className:"flex items-center gap-2",children:[E?e.jsx(Kt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:60:29",className:"h-4 w-4 text-slate-500"}):e.jsx(Xt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:60:82",className:"h-4 w-4 text-slate-500"}),e.jsx(tt,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:61:19",className:`h-4 w-4 ${n==="blue"?"text-blue-400":"text-purple-400"}`}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:62:19",className:"text-sm font-mono text-slate-200 font-semibold",children:f.name||"(未命名)"}),f.image&&e.jsx("code",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:63:31",className:"text-[10px] text-slate-500 font-mono truncate max-w-[300px]",children:f.image})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:65:17",className:"flex items-center gap-1",onClick:M=>M.stopPropagation(),children:[g&&e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:67:21",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-500 hover:text-slate-300",title:"复制",onClick:()=>g(C),children:e.jsx(cs,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:69:23",className:"h-3.5 w-3.5"})}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:72:19",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",title:"删除",onClick:()=>{confirm(`确认删除容器「${f.name}」?`)&&d(C)},children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:74:21",className:"h-3.5 w-3.5"})})]})]}),E&&e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:80:17",className:"p-3 space-y-4 bg-slate-950/30",children:e.jsx(qs,{"code-path":"src/components/kubernetes/deployment-edit/ContainerGroupSection.tsx:81:19",container:f,onUpdate:M=>p(C,M)})})]},C)})]})]})}function Ks({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const{toast:d}=we(),[p,g]=m.useState(!1),[x,N]=m.useState(!a),[D,O]=m.useState(a||{}),[v,f]=m.useState([]),[C,E]=m.useState([]),[M,I]=m.useState([]);m.useEffect(()=>{if(!a){N(!1);return}O(a);const r=a?.spec?.template?.spec||{};f((Array.isArray(r.containers)?r.containers:[]).map(zt)),E((Array.isArray(r.initContainers)?r.initContainers:[]).map(zt)),I((Array.isArray(r.imagePullSecrets)?r.imagePullSecrets:[]).map(u=>u.name||"")),N(!1)},[a]);const q=(r,u)=>{f(S=>S.map((T,i)=>i===r?{...T,...u}:T))},Y=()=>{f(r=>[...r,Mt(`container-${r.length+1}`)])},V=r=>{f(u=>u.filter((S,T)=>T!==r))},Z=r=>{f(u=>{const S=JSON.parse(JSON.stringify(u[r]));S.name=`${S.name}-copy`;const T=[...u];return T.splice(r+1,0,S),T})},_=(r,u)=>{E(S=>S.map((T,i)=>i===r?{...T,...u}:T))},F=()=>{E(r=>[...r,Mt(`init-${r.length+1}`)])},ne=r=>{E(u=>u.filter((S,T)=>T!==r))},te=async()=>{for(const r of[...C,...v]){if(!r.name.trim()){d({title:"保存失败",description:"容器名称不能为空",variant:"destructive"});return}if(!r.image.trim()){d({title:"保存失败",description:`容器 ${r.name} 的镜像不能为空`,variant:"destructive"});return}}g(!0);try{const r=JSON.parse(JSON.stringify(D));r.spec=r.spec||{},r.spec.template=r.spec.template||{},r.spec.template.spec=r.spec.template.spec||{},r.spec.template.spec.containers=v.map($t),r.spec.template.spec.initContainers=C.length>0?C.map($t):void 0,r.spec.template.spec.imagePullSecrets=M.filter(S=>S.trim()).length>0?M.filter(S=>S.trim()).map(S=>({name:S})):void 0;const u=JSON.stringify(r,null,2);await Q.updateResourceYaml(t,s,"deployments",o,u),d({title:"容器配置已保存",description:`${o} 更新已提交`}),n()}catch(r){d({title:"保存失败",description:r?.message||String(r),variant:"destructive"})}finally{g(!1)}};return x?e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:113:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:114:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:115:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:116:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})}):a?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:132:5",className:"space-y-4",children:[e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:134:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:135:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:136:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ms,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:137:13",className:"h-4 w-4 text-amber-400"}),"镜像拉取凭证 (imagePullSecrets)",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:139:13",variant:"outline",className:"border-slate-700 text-slate-500 text-[10px]",children:"Pod 级别"})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:142:9",className:"pt-0 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:143:11",className:"flex items-center gap-2 flex-wrap",children:[M.map((r,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:145:15",className:"flex items-center gap-1 bg-slate-800 rounded px-2 py-1",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:146:17",className:"text-xs text-slate-300 font-mono",children:r}),e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:147:17",onClick:()=>I(S=>S.filter((T,i)=>i!==u)),className:"text-red-400 hover:text-red-300 ml-1",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:148:68",className:"h-3 w-3"})})]},u)),M.length===0&&e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:151:47",className:"text-[11px] text-slate-600",children:"无"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:153:11",className:"flex gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:154:13",placeholder:"输入 Secret 名称后回车",className:"bg-slate-800 border-slate-700 text-slate-200 text-xs h-8",onKeyDown:r=>{if(r.key==="Enter"){const u=r.target.value.trim();u&&(I(S=>[...S,u]),r.target.value="")}}}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:161:13",size:"sm",variant:"outline",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:()=>I(r=>[...r,""]),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:163:15",className:"h-3 w-3 mr-1"}),"新增"]})]})]})]}),e.jsx(Yt,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:170:7",title:"初始化容器",description:"在主容器启动前按顺序执行的容器,用于初始化环境",icon:e.jsx(rs,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:173:15",className:"h-4 w-4 text-purple-400"}),containers:C,accentColor:"purple",onAdd:F,onRemove:ne,onUpdate:_}),e.jsx(Yt,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:182:7",title:"工作容器",description:"Deployment 运行的主容器,定义应用进程及其运行时配置",icon:e.jsx(tt,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:185:15",className:"h-4 w-4 text-blue-400"}),containers:v,accentColor:"blue",onAdd:Y,onRemove:V,onUpdate:q,onDuplicate:Z}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:195:7",className:"sticky bottom-0 bg-slate-950/80 backdrop-blur border-t border-slate-800 p-3 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:196:9",className:"text-[11px] text-slate-500",children:["共 ",e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:197:13",className:"text-slate-300 font-semibold",children:C.length})," 个初始化容器 +",e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:198:11",className:"text-slate-300 font-semibold ml-1",children:v.length})," 个工作容器"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:200:9",className:"flex gap-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:201:11",variant:"outline",className:"border-slate-700 text-slate-400",onClick:l,children:"取消"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:202:11",className:"bg-blue-600 hover:bg-blue-700",disabled:p,onClick:te,children:[p?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:203:23",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(st,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:203:75",className:"h-4 w-4 mr-1"}),"保存"]})]})]})]}):e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:123:7",className:"bg-slate-900 border-slate-800",children:e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditContainers.tsx:124:9",className:"p-8 text-center text-slate-500",children:"未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。"})})}function mt(t){return!t||typeof t!="object"?[]:Object.entries(t).map(([s,o])=>({key:s,value:String(o)}))}function xt(t){const s={};for(const{key:o,value:a}of t){const n=o.trim();n&&(s[n]=a)}return s}function Xs({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const{toast:d}=we(),[p,g]=m.useState(!1),[x,N]=m.useState(!a),[D,O]=m.useState(a||{}),[v,f]=m.useState(1),[C,E]=m.useState([]),[M,I]=m.useState([]),[q,Y]=m.useState([]);m.useEffect(()=>{const i=a;if(!i){N(!1);return}O(i),f(i?.spec?.replicas??1),E(mt(i?.metadata?.labels)),I(mt(i?.metadata?.annotations)),Y(mt(i?.spec?.selector?.matchLabels)),N(!1)},[a]);const V=(i,P)=>{E(H=>H.map((c,y)=>y===i?{...c,...P}:c))},Z=()=>E(i=>[...i,{key:"",value:""}]),_=i=>E(P=>P.filter((H,c)=>c!==i)),F=(i,P)=>{I(H=>H.map((c,y)=>y===i?{...c,...P}:c))},ne=()=>I(i=>[...i,{key:"",value:""}]),te=i=>I(P=>P.filter((H,c)=>c!==i)),r=(i,P)=>{Y(H=>H.map((c,y)=>y===i?{...c,...P}:c))},u=()=>Y(i=>[...i,{key:"",value:""}]),S=i=>Y(P=>P.filter((H,c)=>c!==i)),T=async()=>{g(!0);try{const i=JSON.parse(JSON.stringify(D));i.spec=i.spec||{},i.spec.replicas=v;const P=xt(C);i.metadata=i.metadata||{},i.metadata.labels=Object.keys(P).length>0?P:void 0;const H=xt(M);i.metadata.annotations=Object.keys(H).length>0?H:void 0;const c=xt(q);Object.keys(c).length>0&&(i.spec.selector=i.spec.selector||{},i.spec.selector.matchLabels=c,i.spec.template=i.spec.template||{},i.spec.template.metadata=i.spec.template.metadata||{},i.spec.template.metadata.labels={...i.spec.template.metadata.labels,...c});const y=JSON.stringify(i,null,2);await Q.updateResourceYaml(t,s,"deployments",o,y),d({title:"基本信息已保存",description:`${o} 更新已提交`}),n()}catch(i){d({title:"保存失败",description:i?.message||String(i),variant:"destructive"})}finally{g(!1)}};return x?e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:123:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:124:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:125:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:126:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})}):a?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:143:5",className:"space-y-4",children:[e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:145:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:146:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:147:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Rs,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:148:13",className:"h-4 w-4 text-blue-400"}),"副本数 (Replicas)"]})}),e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:152:9",className:"pt-0",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:153:11",className:"flex items-center gap-3",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:154:13",type:"number",min:0,value:v,onChange:i=>f(Math.max(0,Number(i.target.value)||0)),className:"w-32 bg-slate-800 border-slate-700 text-slate-200"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:161:13",className:"text-xs text-slate-500",children:"期望运行的 Pod 实例数量"})]})})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:167:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:168:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:169:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(ts,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:170:13",className:"h-4 w-4 text-slate-500"}),"基本标识(只读)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:174:9",className:"pt-0 grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:175:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:176:13",className:"text-slate-400 text-xs",children:"名称 (name)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:177:13",value:o,readOnly:!0,className:"mt-1 bg-slate-950 border-slate-800 text-slate-500 font-mono text-sm cursor-not-allowed"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:180:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:181:13",className:"text-slate-400 text-xs",children:"命名空间 (namespace)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:182:13",value:s,readOnly:!0,className:"mt-1 bg-slate-950 border-slate-800 text-slate-500 font-mono text-sm cursor-not-allowed"})]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:189:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:190:9",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:191:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:192:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ht,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:193:15",className:"h-4 w-4 text-emerald-400"}),"标签 (Labels)",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:195:15",variant:"outline",className:"border-slate-700 text-slate-500 text-[10px]",children:C.length})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:197:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:Z,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:198:15",className:"h-3 w-3 mr-1"}),"新增"]})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:202:9",className:"pt-0 space-y-1.5",children:[C.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:203:35",className:"text-[11px] text-slate-600",children:"无标签"}),C.map((i,P)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:205:13",className:"grid grid-cols-[1fr_1.4fr_auto] gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:206:15",value:i.key,placeholder:"app",onChange:H=>V(P,{key:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:209:15",value:i.value,placeholder:"nginx",onChange:H=>V(P,{value:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:212:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300",onClick:()=>_(P),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:213:48",className:"h-3.5 w-3.5"})})]},P))]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:220:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:221:9",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:222:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:223:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ht,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:224:15",className:"h-4 w-4 text-amber-400"}),"选择器 (Selector)",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:226:15",variant:"outline",className:"border-amber-700/50 text-amber-500 text-[10px]",children:"⚠️ 需与模板标签一致"})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:228:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:u,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:229:15",className:"h-3 w-3 mr-1"}),"新增"]})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:233:9",className:"pt-0 space-y-1.5",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:234:11",className:"text-[11px] text-amber-500/70 mb-1",children:"Selector 决定哪些 Pod 归属此 Deployment。修改时必须确保与 Pod Template Labels 匹配,否则 Deployment 将无法管理 Pod。"}),q.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:235:43",className:"text-[11px] text-slate-600",children:"无选择器"}),q.map((i,P)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:237:13",className:"grid grid-cols-[1fr_1.4fr_auto] gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:238:15",value:i.key,placeholder:"app",onChange:H=>r(P,{key:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:241:15",value:i.value,placeholder:"nginx",onChange:H=>r(P,{value:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:244:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300",onClick:()=>S(P),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:245:51",className:"h-3.5 w-3.5"})})]},P))]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:252:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:253:9",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:254:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:255:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(vt,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:256:15",className:"h-4 w-4 text-purple-400"}),"注解 (Annotations)",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:258:15",variant:"outline",className:"border-slate-700 text-slate-500 text-[10px]",children:M.length})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:260:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:ne,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:261:15",className:"h-3 w-3 mr-1"}),"新增"]})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:265:9",className:"pt-0 space-y-1.5",children:[M.length===0&&e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:266:40",className:"text-[11px] text-slate-600",children:"无注解"}),M.map((i,P)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:268:13",className:"grid grid-cols-[1fr_1.4fr_auto] gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:269:15",value:i.key,placeholder:"deployment.kubernetes.io/revision",onChange:H=>F(P,{key:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:272:15",value:i.value,placeholder:"1",onChange:H=>F(P,{value:H.target.value}),className:"bg-slate-800 border-slate-700 text-slate-200 font-mono text-xs h-8"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:275:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300",onClick:()=>te(P),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:276:53",className:"h-3.5 w-3.5"})})]},P))]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:283:7",className:"sticky bottom-0 bg-slate-950/80 backdrop-blur border-t border-slate-800 p-3 flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:284:9",className:"text-[11px] text-slate-500",children:["保存将通过 ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:285:17",className:"text-slate-400",children:"PUT application/yaml"})," 提交(自动剥离 status/managedFields 等只读字段)"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:287:9",className:"flex gap-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:288:11",variant:"outline",className:"border-slate-700 text-slate-400",onClick:l,children:"取消"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:289:11",className:"bg-blue-600 hover:bg-blue-700",disabled:p,onClick:T,children:[p?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:290:23",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(st,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:290:75",className:"h-4 w-4 mr-1"}),"保存"]})]})]})]}):e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:134:7",className:"bg-slate-900 border-slate-800",children:e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditBasic.tsx:135:9",className:"p-8 text-center text-slate-500",children:"未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。"})})}const Jt=[{key:"persistentVolumeClaim",label:"存储卷声明",icon:Ze,color:"text-emerald-400",desc:"PVC"},{key:"emptyDir",label:"临时目录",icon:Ps,color:"text-slate-400",desc:"EmptyDir"},{key:"hostPath",label:"HostPath",icon:os,color:"text-amber-400",desc:"主机路径"},{key:"nfs",label:"NFS",icon:yt,color:"text-purple-400",desc:"网络存储"},{key:"configMap",label:"配置字典",icon:As,color:"text-blue-400",desc:"ConfigMap"},{key:"secret",label:"密文",icon:ts,color:"text-rose-400",desc:"Secret"}];function Zs(t){if(!t||typeof t!="object")return{name:"",type:"emptyDir"};const s=t.name||"";return t.emptyDir?{name:s,type:"emptyDir",medium:t.emptyDir.medium||"",sizeLimit:t.emptyDir.sizeLimit||""}:t.hostPath?{name:s,type:"hostPath",path:t.hostPath.path||"",pathType:t.hostPath.type||"Directory"}:t.configMap?{name:s,type:"configMap",configMapName:t.configMap.name||"",cmItems:t.configMap.items?JSON.stringify(t.configMap.items):""}:t.secret?{name:s,type:"secret",secretName:t.secret.secretName||"",secItems:t.secret.items?JSON.stringify(t.secret.items):""}:t.persistentVolumeClaim?{name:s,type:"persistentVolumeClaim",pvcName:t.persistentVolumeClaim.claimName||"",pvcReadOnly:!!t.persistentVolumeClaim.readOnly}:t.nfs?{name:s,type:"nfs",nfsServer:t.nfs.server||"",nfsPath:t.nfs.path||"",nfsReadOnly:!!t.nfs.readOnly}:{name:s,type:"emptyDir"}}function Qs(t){const s={name:t.name.trim()};if(!s.name)return null;switch(t.type){case"emptyDir":{const o={};t.medium&&(o.medium=t.medium),t.sizeLimit&&(o.sizeLimit=t.sizeLimit),s.emptyDir=o;break}case"hostPath":s.hostPath={path:t.path||"",type:t.pathType||"Directory"};break;case"configMap":{if(s.configMap={name:t.configMapName||""},t.cmItems)try{s.configMap.items=JSON.parse(t.cmItems)}catch{}break}case"secret":{if(s.secret={secretName:t.secretName||""},t.secItems)try{s.secret.items=JSON.parse(t.secItems)}catch{}break}case"persistentVolumeClaim":s.persistentVolumeClaim={claimName:t.pvcName||"",...t.pvcReadOnly?{readOnly:!0}:{}};break;case"nfs":s.nfs={server:t.nfsServer||"",path:t.nfsPath||"",...t.nfsReadOnly?{readOnly:!0}:{}};break}return s}function en({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const{toast:d}=we(),[p,g]=m.useState(!1),[x,N]=m.useState(!a),[D,O]=m.useState(a||{}),[v,f]=m.useState([]),[C,E]=m.useState([]),[M,I]=m.useState([]);m.useEffect(()=>{const r=a;if(!r){N(!1);return}O(r);const u=r?.spec?.template?.spec||{},S=Array.isArray(u.volumes)?u.volumes:[];f(S.map(Zs));const T=[...u.containers||[],...u.initContainers||[]],i=T.map(H=>H.name||"(unnamed)");I(i);const P=[];for(const H of T){const c=H.name||"(unnamed)",y=Array.isArray(H.volumeMounts)?H.volumeMounts:[];for(const b of y)P.push({containerName:c,volumeName:b.name||"",mountPath:b.mountPath||"",subPath:b.subPath||"",readOnly:!!b.readOnly})}E(P),N(!1)},[a]);const q=()=>f(r=>[...r,{name:"",type:"emptyDir"}]),Y=r=>{const u=v[r]?.name;f(S=>S.filter((T,i)=>i!==r)),u&&E(S=>S.filter(T=>T.volumeName!==u))},V=(r,u)=>f(S=>S.map((T,i)=>i===r?{...T,...u}:T)),Z=()=>E(r=>[...r,{containerName:M[0]||"",volumeName:"",mountPath:"",subPath:"",readOnly:!1}]),_=r=>E(u=>u.filter((S,T)=>T!==r)),F=(r,u)=>E(S=>S.map((T,i)=>i===r?{...T,...u}:T)),ne=async()=>{g(!0);try{const r=JSON.parse(JSON.stringify(D));r.spec=r.spec||{},r.spec.template=r.spec.template||{},r.spec.template.spec=r.spec.template.spec||{};const u=r.spec.template.spec,S=v.map(Qs).filter(Boolean);S.length>0?u.volumes=S:delete u.volumes;const T=[...u.containers||[],...u.initContainers||[]];for(const P of T){const H=P.name||"(unnamed)",c=C.filter(y=>y.containerName===H&&y.volumeName&&y.mountPath).map(y=>{const b={name:y.volumeName,mountPath:y.mountPath,readOnly:y.readOnly};return y.subPath&&(b.subPath=y.subPath),b});c.length>0?P.volumeMounts=c:delete P.volumeMounts}u.containers=T.filter(P=>!(u.initContainers||[]).includes(P)),u.initContainers=u.initContainers||[];const i=JSON.stringify(r,null,2);await Q.updateResourceYaml(t,s,"deployments",o,i),d({title:"存储配置已保存",description:`${o} 更新已提交`}),n()}catch(r){d({title:"保存失败",description:r?.message||String(r),variant:"destructive"})}finally{g(!1)}};if(x)return e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:193:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:194:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:195:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:196:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})});if(!a)return e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:204:7",className:"bg-slate-900 border-slate-800",children:e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:205:9",className:"p-8 text-center text-slate-500",children:"未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。"})});const te=v.map(r=>r.name).filter(Boolean);return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:215:5",className:"space-y-4",children:[e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:217:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:218:9",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:219:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:220:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ze,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:221:15",className:"h-4 w-4 text-emerald-400"}),"定义数据卷",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:222:15",variant:"outline",className:"border-slate-700 text-slate-400",children:v.length})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:224:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:q,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:225:15",className:"h-3 w-3 mr-1"}),"添加数据卷"]})]})}),e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:229:9",className:"pt-0 space-y-3",children:v.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:231:13",className:"text-center py-8 text-slate-500 text-sm border border-dashed border-slate-800 rounded-lg",children:[e.jsx(Ze,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:232:15",className:"h-8 w-8 mx-auto mb-2 text-slate-700"}),"未配置数据卷"]}):v.map((r,u)=>{const S=Jt.find(i=>i.key===r.type),T=S?.icon||it;return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:239:15",className:"bg-slate-950/50 border border-slate-800 rounded-lg p-3 space-y-2.5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:241:17",className:"flex items-center gap-2",children:[e.jsx(T,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:242:19",className:`h-4 w-4 ${S?.color||"text-slate-400"}`}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:243:19",className:"text-[10px] text-slate-500 w-16 shrink-0",children:"数据卷名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:244:19",value:r.name,onChange:i=>V(u,{name:i.target.value}),placeholder:"volume-name",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs(Me,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:247:19",value:r.type,onValueChange:i=>V(u,{type:i}),children:[e.jsx(_e,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:248:21",className:"h-7 w-[120px] bg-slate-800 border-slate-700 text-xs text-slate-300",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:249:23",className:"flex items-center gap-1.5",children:[e.jsx(T,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:250:25",className:"h-3 w-3"}),S?.label||r.type]})}),e.jsx($e,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:253:21",children:Jt.map(i=>{const P=i.icon;return e.jsx(be,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:257:27",value:i.key,children:e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:258:29",className:"flex items-center gap-1.5 text-xs",children:[e.jsx(P,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:259:31",className:"h-3 w-3"}),i.label]})},i.key)})})]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:266:19",size:"icon",variant:"ghost",className:"h-7 w-7 text-red-400",onClick:()=>Y(u),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:267:21",className:"h-3.5 w-3.5"})})]}),r.type==="persistentVolumeClaim"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:273:19",className:"flex items-center gap-2 pl-[88px]",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:274:21",value:r.pvcName||"",onChange:i=>V(u,{pvcName:i.target.value}),placeholder:"PVC 名称",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:276:21",className:"flex items-center gap-1.5 text-xs text-slate-400 cursor-pointer whitespace-nowrap",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:277:23",type:"checkbox",checked:!!r.pvcReadOnly,onChange:i=>V(u,{pvcReadOnly:i.target.checked}),className:"accent-blue-500"}),"只读"]})]}),r.type==="emptyDir"&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:285:19",className:"flex items-center gap-2 pl-[88px]",children:e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:286:21",value:r.sizeLimit||"",onChange:i=>V(u,{sizeLimit:i.target.value}),placeholder:"sizeLimit (如 512Mi, 可为空)",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})}),r.type==="hostPath"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:293:19",className:"flex items-center gap-2 pl-[88px]",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:294:21",value:r.path||"",onChange:i=>V(u,{path:i.target.value}),placeholder:"主机路径 /data/app",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:297:21",value:r.pathType||"Directory",onChange:i=>V(u,{pathType:i.target.value}),className:"h-7 w-28 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:299:23",value:"Directory",children:"Directory"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:300:23",value:"File",children:"File"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:301:23",value:"",children:"(默认)"})]})]}),r.type==="nfs"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:307:19",className:"flex items-center gap-2 pl-[88px]",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:308:21",value:r.nfsServer||"",onChange:i=>V(u,{nfsServer:i.target.value}),placeholder:"NFS Server IP",className:"h-7 w-40 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:311:21",className:"text-slate-600 text-xs",children:":"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:312:21",value:r.nfsPath||"",onChange:i=>V(u,{nfsPath:i.target.value}),placeholder:"/export/path",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:315:21",className:"flex items-center gap-1.5 text-xs text-slate-400 cursor-pointer whitespace-nowrap",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:316:23",type:"checkbox",checked:!!r.nfsReadOnly,onChange:i=>V(u,{nfsReadOnly:i.target.checked}),className:"accent-blue-500"}),"只读"]})]}),r.type==="configMap"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:324:19",className:"flex items-center gap-2 pl-[88px]",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:325:21",className:"text-[10px] text-slate-500 whitespace-nowrap",children:"ConfigMap"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:326:21",value:r.configMapName||"",onChange:i=>V(u,{configMapName:i.target.value}),placeholder:"ConfigMap 名称",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:329:21",value:r.cmItems||"",onChange:i=>V(u,{cmItems:i.target.value}),placeholder:"KeyToPath (可为空)",className:"h-7 w-40 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),r.type==="secret"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:336:19",className:"flex items-center gap-2 pl-[88px]",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:337:21",className:"text-[10px] text-slate-500 whitespace-nowrap",children:"密文"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:338:21",value:r.secretName||"",onChange:i=>V(u,{secretName:i.target.value}),placeholder:"Secret 名称",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:341:21",value:r.secItems||"",onChange:i=>V(u,{secItems:i.target.value}),placeholder:"KeyToPath (可为空)",className:"h-7 w-40 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]})]},u)})})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:353:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:354:9",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:355:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:356:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(it,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:357:15",className:"h-4 w-4 text-blue-400"}),"将数据卷挂载到容器",e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:358:15",variant:"outline",className:"border-slate-700 text-slate-400",children:C.length})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:360:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:Z,disabled:te.length===0||M.length===0,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:362:15",className:"h-3 w-3 mr-1"}),"添加挂载"]})]})}),e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:366:9",className:"pt-0 space-y-2",children:C.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:368:13",className:"text-center py-8 text-slate-500 text-sm border border-dashed border-slate-800 rounded-lg",children:[e.jsx(it,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:369:15",className:"h-8 w-8 mx-auto mb-2 text-slate-700"}),te.length===0?"请先定义数据卷":"未配置挂载点"]}):C.map((r,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:373:13",className:"flex items-center gap-2 bg-slate-950/50 border border-slate-800 rounded-lg p-2.5",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:375:15",className:"text-[10px] text-slate-500 whitespace-nowrap",children:"容器:"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:376:15",value:r.containerName,onChange:S=>F(u,{containerName:S.target.value}),className:"h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5 min-w-[120px]",children:[M.length===0&&e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:378:45",value:"",children:"(无容器)"}),M.map(S=>e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:379:39",value:S,children:S},S))]}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:382:15",value:r.volumeName,onChange:S=>F(u,{volumeName:S.target.value}),className:"h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5 min-w-[100px]",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:384:17",value:"",children:"选择数据卷"}),te.map(S=>e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:385:40",value:S,children:S},S))]}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:388:15",value:r.mountPath,onChange:S=>F(u,{mountPath:S.target.value}),placeholder:"挂载路径 /app/data",className:"h-7 flex-1 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:392:15",className:"flex items-center gap-1 bg-slate-800 rounded-lg p-0.5 border border-slate-700",children:[e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:393:17",onClick:()=>F(u,{readOnly:!1}),className:`px-2 py-0.5 rounded text-[10px] font-medium transition-all ${r.readOnly?"text-slate-500":"bg-blue-500/20 text-blue-300"}`,children:"读写"}),e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:397:17",onClick:()=>F(u,{readOnly:!0}),className:`px-2 py-0.5 rounded text-[10px] font-medium transition-all ${r.readOnly?"bg-amber-500/20 text-amber-300":"text-slate-500"}`,children:"只读"})]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:402:15",size:"icon",variant:"ghost",className:"h-7 w-7 text-red-400",onClick:()=>_(u),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:403:17",className:"h-3.5 w-3.5"})})]},u))})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:411:7",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:412:9",variant:"outline",className:"border-slate-700 text-slate-400",onClick:l,children:"取消"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:413:9",className:"bg-blue-600 hover:bg-blue-700",disabled:p,onClick:ne,children:[p?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:414:21",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(st,{"code-path":"src/components/kubernetes/DeploymentEditStorage.tsx:414:73",className:"h-4 w-4 mr-1"}),"保存"]})]})]})}const tn=[{key:"nodeName",label:"节点名称"},{key:"nodeSelector",label:"标签选择器"},{key:"nodeAffinity",label:"节点亲和性"}];function sn({scheduleMode:t,onScheduleModeChange:s,nodeName:o,onNodeNameChange:a,availableNodes:n,nodesLoading:l,labelSelectorKv:d,onAddLabelSelector:p,onRemoveLabelSelector:g,onUpdateLabelSelector:x,nodeLabels:N}){return e.jsxs(G,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:54:5",className:"bg-slate-900 border-slate-800",children:[e.jsxs(le,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:55:7",className:"pb-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:56:9",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:57:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(yt,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:58:13",className:"h-4 w-4 text-emerald-400"}),"调度 (Scheduling)"]}),e.jsx("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:60:11",className:"flex items-center gap-1 bg-slate-800 rounded-lg p-0.5 border border-slate-700",children:tn.map(D=>e.jsx("button",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:62:15",onClick:()=>s(D.key),className:`px-2.5 py-1 rounded text-[10px] font-medium transition-all ${t===D.key?"bg-emerald-500/20 text-emerald-300 shadow-sm":"text-slate-400 hover:text-slate-300"}`,children:D.label},D.key))})]}),e.jsxs("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:76:9",className:"text-xs text-slate-500 mt-1",children:[t==="nodeName"&&"Pod 将直接调度到指定节点",t==="nodeSelector"&&"Pod 将调度到匹配标签的节点",t==="nodeAffinity"&&"通过亲和性规则控制 Pod 调度到指定节点"]})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:82:7",className:"pt-0",children:[t==="nodeName"&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:84:11",className:"space-y-2",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:85:13",className:"text-slate-400 text-xs",children:"请选择节点"}),l?e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:87:15",className:"flex items-center gap-1 text-slate-500 text-xs",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:88:17",className:"h-3 w-3 animate-spin"}),"加载节点列表..."]}):e.jsxs("select",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:91:15",value:o,onChange:D=>a(D.target.value),className:"h-8 w-full bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2",children:[e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:96:17",value:"",children:"(不指定)"}),n.map(D=>e.jsxs("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:98:19",value:D.name,children:[D.name," ",D.ip?`(${D.ip})`:""]},D.name))]}),o&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:105:15",className:"text-[10px] text-slate-500",children:["已选择: ",e.jsx("code",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:106:22",className:"bg-slate-800 px-1 py-0.5 rounded text-emerald-400",children:o})]})]}),t==="nodeSelector"&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:113:11",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:114:13",className:"flex items-center justify-between",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:115:15",className:"text-slate-400 text-xs",children:"请选择标签"}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:116:15",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:p,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:117:17",className:"h-3 w-3 mr-1"}),"添加"]})]}),d.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:121:15",className:"text-xs text-slate-600 italic",children:"未配置标签选择器"}):d.map((D,O)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:124:17",className:"flex items-center gap-2",children:[e.jsxs("select",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:125:19",value:D.key,onChange:v=>x(O,{key:v.target.value,value:""}),className:"flex-1 h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5",children:[e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:130:21",value:"",children:"选择标签"}),Object.entries(N).map(([v,f])=>e.jsxs("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:132:23",value:v,children:[v," (",f.length,")"]},v))]}),e.jsxs("select",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:135:19",value:D.value,onChange:v=>x(O,{value:v.target.value}),className:"flex-1 h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5",disabled:!D.key,children:[e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:141:21",value:"",children:"选择值"}),(N[D.key]||[]).map(v=>e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:143:23",value:v,children:v},v))]}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:146:19",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>g(O),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:152:21",className:"h-3 w-3"})})]},O))]}),t==="nodeAffinity"&&e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:161:11",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:162:13",className:"flex items-center justify-between",children:[e.jsxs(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:163:15",className:"text-slate-400 text-xs",children:["请选择标签 ",e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:164:23",className:"text-slate-600",children:"(生成 requiredDuringScheduling 规则)"})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:166:15",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:p,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:167:17",className:"h-3 w-3 mr-1"}),"添加"]})]}),d.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:171:15",className:"text-xs text-slate-600 italic",children:"未配置亲和性规则"}):d.map((D,O)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:174:17",className:"flex items-center gap-2",children:[e.jsxs("select",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:175:19",value:D.key,onChange:v=>x(O,{key:v.target.value,value:""}),className:"flex-1 h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5",children:[e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:180:21",value:"",children:"选择标签"}),Object.entries(N).map(([v,f])=>e.jsxs("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:182:23",value:v,children:[v," (",f.length,")"]},v))]}),e.jsxs("select",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:185:19",value:D.value,onChange:v=>x(O,{value:v.target.value}),className:"flex-1 h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5",disabled:!D.key,children:[e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:191:21",value:"",children:"选择值"}),(N[D.key]||[]).map(v=>e.jsx("option",{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:193:23",value:v,children:v},v))]}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:196:19",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>g(O),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/SchedulingSection.tsx:202:21",className:"h-3 w-3"})})]},O))]})]})]})}function nn({dnsNameservers:t,onDnsNameserversChange:s,dnsSearches:o,onDnsSearchesChange:a,dnsOptions:n,onDnsOptionsChange:l,hostAliases:d,onHostAliasesChange:p}){const g=()=>l([...n,{name:"",value:""}]),x=(f,C)=>l(n.map((E,M)=>M===f?{...E,...C}:E)),N=f=>l(n.filter((C,E)=>E!==f)),D=()=>p([...d,{ip:"",hostnames:""}]),O=(f,C)=>p(d.map((E,M)=>M===f?{...E,...C}:E)),v=f=>p(d.filter((C,E)=>E!==f));return e.jsxs(e.Fragment,{children:[e.jsxs(G,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:53:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:54:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:55:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(ks,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:56:13",className:"h-4 w-4 text-indigo-400"}),"DNS 配置 (dnsConfig)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:59:9",className:"pt-0 space-y-3",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:60:11",className:"text-[11px] text-slate-500",children:["提示:dnsConfig 通常与 ",e.jsx("code",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:61:30",className:"text-slate-400",children:"dnsPolicy: None"})," 搭配使用。每行一个值。"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:63:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:64:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:65:15",className:"text-slate-500 text-xs",children:"nameservers(每行一个 IP)"}),e.jsx("textarea",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:66:15",value:t,onChange:f=>s(f.target.value),placeholder:`8.8.8.8
|
||
114.114.114.114`,rows:3,className:"w-full mt-1 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 font-mono p-2 resize-y"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:74:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:75:15",className:"text-slate-500 text-xs",children:"searches(搜索域,每行一个)"}),e.jsx("textarea",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:76:15",value:o,onChange:f=>a(f.target.value),placeholder:`svc.cluster.local
|
||
cluster.local`,rows:3,className:"w-full mt-1 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 font-mono p-2 resize-y"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:85:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:86:13",className:"flex items-center justify-between mb-1",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:87:15",className:"text-slate-400 text-xs",children:"options(DNS 选项)"}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:88:15",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:g,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:89:17",className:"h-3 w-3 mr-1"}),"添加"]})]}),n.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:93:15",className:"text-xs text-slate-600 italic",children:"未配置"}):n.map((f,C)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:96:17",className:"flex items-center gap-2 mb-1.5",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:97:19",value:f.name,onChange:E=>x(C,{name:E.target.value}),placeholder:"ndots",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:103:19",className:"text-slate-600",children:":"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:104:19",value:f.value,onChange:E=>x(C,{value:E.target.value}),placeholder:"5(可留空)",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:110:19",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>N(C),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:111:21",className:"h-3 w-3"})})]},C))]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:120:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:121:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:122:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(gs,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:123:13",className:"h-4 w-4 text-amber-400"}),"主机别名 (hostAliases)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:126:9",className:"pt-0 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:127:11",className:"flex items-center justify-between mb-1",children:[e.jsx(A,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:128:13",className:"text-slate-400 text-xs",children:"IP → 主机名映射(注入 Pod 的 /etc/hosts)"}),e.jsxs(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:129:13",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:D,children:[e.jsx(oe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:130:15",className:"h-3 w-3 mr-1"}),"添加"]})]}),d.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:134:13",className:"text-xs text-slate-600 italic",children:"未配置"}):d.map((f,C)=>e.jsxs("div",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:137:15",className:"flex items-center gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:138:17",value:f.ip,onChange:E=>O(C,{ip:E.target.value}),placeholder:"10.10.10.72",className:"w-40 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:144:17",className:"text-slate-600",children:"→"}),e.jsx(k,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:145:17",value:f.hostnames,onChange:E=>O(C,{hostnames:E.target.value}),placeholder:"gitlab.local, registry.local",className:"flex-1 h-7 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(h,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:151:17",size:"icon",variant:"ghost",className:"h-6 w-6 text-red-400",onClick:()=>v(C),children:e.jsx(xe,{"code-path":"src/components/kubernetes/deployment-edit-advanced/DnsHostSection.tsx:152:19",className:"h-3 w-3"})})]},C))]})]})]})}function on({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const{toast:d}=we(),[p,g]=m.useState(!1),[x,N]=m.useState(!a),[D,O]=m.useState(a||{}),[v,f]=m.useState("RollingUpdate"),[C,E]=m.useState("25%"),[M,I]=m.useState("25%"),[q,Y]=m.useState("10"),[V,Z]=m.useState("600"),[_,F]=m.useState("nodeSelector"),[ne,te]=m.useState(""),[r,u]=m.useState([]),[S,T]=m.useState(!1),[i,P]=m.useState([]),[H,c]=m.useState({}),[y,b]=m.useState([]),[J,z]=m.useState("ClusterFirst"),[$,he]=m.useState("Always"),[U,me]=m.useState("default-scheduler"),[je,re]=m.useState("30"),[R,ae]=m.useState(""),[ke,Ne]=m.useState(""),[j,ue]=m.useState(""),[ve,Ce]=m.useState(""),[We,ot]=m.useState(!1),[Fe,at]=m.useState(!1),[Ye,Se]=m.useState(!1),[Nt,Dt]=m.useState(!1),[ft,St]=m.useState(!1),[Et,wt]=m.useState([]),[Ct,Pt]=m.useState(""),[At,Vt]=m.useState(""),[Wt,Tt]=m.useState([]);m.useEffect(()=>{const w=a;if(!w){N(!1);return}O(w);const W=w?.spec||{},se=W?.template?.spec||{},ye=W.strategy||{};f(ye.type||"RollingUpdate");const Pe=ye.rollingUpdate||{};E(String(Pe.maxSurge??"25%")),I(String(Pe.maxUnavailable??"25%")),Y(W.revisionHistoryLimit!=null?String(W.revisionHistoryLimit):"10"),Z(W.progressDeadlineSeconds!=null?String(W.progressDeadlineSeconds):"600");const Ae=se.nodeSelector||{},Ie=Object.entries(Ae).map(([ce,He])=>({key:ce,value:String(He)}));P(Ie),te(se.nodeName||""),se.nodeName?F("nodeName"):se.affinity?.nodeAffinity?F("nodeAffinity"):Ie.length>0&&F("nodeSelector"),t&&(T(!0),Q.getClusterNodes(t).then(ce=>{const Rt=(Array.isArray(ce)?ce:ce?.items||ce?.list||[]).map(qe=>{const Ve=qe.metadata||{},Ue=qe.status||{},hs=(Array.isArray(Ue.addresses)?Ue.addresses:[]).find(us=>us.type==="InternalIP")?.address||"";return{name:Ve.name||"",ip:hs,labels:Ve.labels||{}}});u(Rt);const ze={};for(const qe of Rt)for(const[Ve,Ue]of Object.entries(qe.labels)){const rt=String(Ue);ze[Ve]||(ze[Ve]=[]),ze[Ve].includes(rt)||ze[Ve].push(rt)}c(ze)}).catch(()=>{}).finally(()=>T(!1)));const Je=Array.isArray(se.tolerations)?se.tolerations:[];b(Je.map(ce=>({key:ce.key||"",operator:ce.operator||"Equal",value:ce.value||"",effect:ce.effect||"",tolerationSeconds:ce.tolerationSeconds!=null?String(ce.tolerationSeconds):""}))),z(se.dnsPolicy||"ClusterFirst"),he(se.restartPolicy||"Always"),me(se.schedulerName||"default-scheduler"),re(se.terminationGracePeriodSeconds!=null?String(se.terminationGracePeriodSeconds):"30"),ae(se.serviceAccountName||"");const De=se.securityContext||{};Ne(De.fsGroup!=null?String(De.fsGroup):""),ue(De.runAsUser!=null?String(De.runAsUser):""),Ce(De.runAsGroup!=null?String(De.runAsGroup):""),ot(!!De.runAsNonRoot),at(!!se.hostNetwork),Se(!!se.hostIPC),Dt(!!se.hostPID),St(!!se.shareProcessNamespace);const ct=Array.isArray(se.hostAliases)?se.hostAliases:[];wt(ct.map(ce=>({ip:ce.ip||"",hostnames:Array.isArray(ce.hostnames)?ce.hostnames.join(", "):""})));const B=se.dnsConfig||{};Pt(Array.isArray(B.nameservers)?B.nameservers.join(`
|
||
`):""),Vt(Array.isArray(B.searches)?B.searches.join(`
|
||
`):"");const ie=Array.isArray(B.options)?B.options:[];Tt(ie.map(ce=>({name:ce.name||"",value:ce.value||""}))),N(!1)},[a]);const is=()=>P(w=>[...w,{key:"",value:""}]),ps=w=>P(W=>W.filter((se,ye)=>ye!==w)),ms=(w,W)=>P(se=>se.map((ye,Pe)=>Pe===w?{...ye,...W}:ye)),xs=async()=>{g(!0);try{const w=JSON.parse(JSON.stringify(D));w.spec=w.spec||{},w.spec.template=w.spec.template||{},w.spec.template.spec=w.spec.template.spec||{};const W=w.spec.template.spec;if(w.spec.strategy={type:v},v==="RollingUpdate"&&(w.spec.strategy.rollingUpdate={maxSurge:C,maxUnavailable:M}),q&&(w.spec.revisionHistoryLimit=Number(q)),V&&(w.spec.progressDeadlineSeconds=Number(V)),_==="nodeName"&&ne.trim())W.nodeName=ne.trim(),delete W.nodeSelector,W.affinity&&delete W.affinity.nodeAffinity;else if(_==="nodeSelector"){const B={};for(const{key:ie,value:ce}of i){const He=ie.trim();He&&(B[He]=ce)}Object.keys(B).length>0?W.nodeSelector=B:delete W.nodeSelector,W.nodeName&&delete W.nodeName,W.affinity&&delete W.affinity.nodeAffinity}else if(_==="nodeAffinity"){const B=i.filter(ie=>ie.key.trim()).map(ie=>({key:ie.key.trim(),operator:"In",values:[ie.value]}));B.length>0?(W.affinity=W.affinity||{},W.affinity.nodeAffinity={requiredDuringSchedulingIgnoredDuringExecution:{nodeSelectorTerms:[{matchExpressions:B}]}}):W.affinity&&delete W.affinity.nodeAffinity,delete W.nodeSelector,W.nodeName&&delete W.nodeName}const se=y.filter(B=>B.key||B.operator==="Exists").map(B=>{const ie={};return B.key&&(ie.key=B.key),B.operator&&(ie.operator=B.operator),B.value&&B.operator!=="Exists"&&(ie.value=B.value),B.effect&&(ie.effect=B.effect),B.tolerationSeconds&&B.effect==="NoExecute"&&(ie.tolerationSeconds=Number(B.tolerationSeconds)),ie});se.length>0?W.tolerations=se:delete W.tolerations,J&&(W.dnsPolicy=J),$&&(W.restartPolicy=$),U&&(W.schedulerName=U),je&&(W.terminationGracePeriodSeconds=Number(je)),R&&(W.serviceAccountName=R);const ye={};ke&&(ye.fsGroup=Number(ke)),j&&(ye.runAsUser=Number(j)),ve&&(ye.runAsGroup=Number(ve)),We&&(ye.runAsNonRoot=!0),Object.keys(ye).length>0?W.securityContext=ye:delete W.securityContext,Fe?W.hostNetwork=!0:delete W.hostNetwork,Ye?W.hostIPC=!0:delete W.hostIPC,Nt?W.hostPID=!0:delete W.hostPID,ft?W.shareProcessNamespace=!0:delete W.shareProcessNamespace;const Pe=Et.filter(B=>B.ip.trim()).map(B=>({ip:B.ip.trim(),hostnames:B.hostnames.split(/[,\s]+/).map(ie=>ie.trim()).filter(Boolean)})).filter(B=>B.hostnames.length>0);Pe.length>0?W.hostAliases=Pe:delete W.hostAliases;const Ae={},Ie=Ct.split(`
|
||
`).map(B=>B.trim()).filter(Boolean);Ie.length>0&&(Ae.nameservers=Ie);const Je=At.split(`
|
||
`).map(B=>B.trim()).filter(Boolean);Je.length>0&&(Ae.searches=Je);const De=Wt.filter(B=>B.name.trim()).map(B=>{const ie={name:B.name.trim()};return B.value.trim()&&(ie.value=B.value.trim()),ie});De.length>0&&(Ae.options=De),Object.keys(Ae).length>0?W.dnsConfig=Ae:delete W.dnsConfig;const ct=JSON.stringify(w,null,2);await Q.updateResourceYaml(t,s,"deployments",o,ct),d({title:"高级设置已保存",description:`${o} 更新已提交`}),n()}catch(w){d({title:"保存失败",description:w?.message||String(w),variant:"destructive"})}finally{g(!1)}};return x?e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:322:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:323:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:324:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:325:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})}):a?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:342:5",className:"space-y-4",children:[e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:344:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:345:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:346:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(nt,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:347:13",className:"h-4 w-4 text-blue-400"}),"更新策略 (Strategy)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:350:9",className:"pt-0 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:351:11",className:"flex items-center gap-4",children:[e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:352:13",className:"flex items-center gap-1.5 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:353:15",type:"radio",checked:v==="RollingUpdate",onChange:()=>f("RollingUpdate"),className:"accent-blue-500"}),"RollingUpdate(滚动更新)"]}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:357:13",className:"flex items-center gap-1.5 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:358:15",type:"radio",checked:v==="Recreate",onChange:()=>f("Recreate"),className:"accent-blue-500"}),"Recreate(重建)"]})]}),v==="RollingUpdate"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:364:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:365:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:366:17",className:"text-slate-500 text-xs",children:"maxSurge(整数或百分比,超出期望副本数)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:367:17",value:C,onChange:w=>E(w.target.value),placeholder:"25%",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:370:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:371:17",className:"text-slate-500 text-xs",children:"maxUnavailable(整数或百分比,不可用上限)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:372:17",value:M,onChange:w=>I(w.target.value),placeholder:"25%",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]})]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:381:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:382:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:383:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Qt,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:384:13",className:"h-4 w-4 text-amber-400"}),"历史版本 & 进度"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:387:9",className:"pt-0 grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:388:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:389:13",className:"text-slate-500 text-xs",children:"revisionHistoryLimit(保留 RS 历史)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:390:13",type:"number",value:q,onChange:w=>Y(w.target.value),className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:393:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:394:13",className:"text-slate-500 text-xs",children:"progressDeadlineSeconds(升级超时秒数)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:395:13",type:"number",value:V,onChange:w=>Z(w.target.value),className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]})]})]}),e.jsx(sn,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:401:7",scheduleMode:_,onScheduleModeChange:F,nodeName:ne,onNodeNameChange:te,availableNodes:r,nodesLoading:S,labelSelectorKv:i,onAddLabelSelector:is,onRemoveLabelSelector:ps,onUpdateLabelSelector:ms,nodeLabels:H}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:416:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:417:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:418:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(ht,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:419:13",className:"h-4 w-4 text-slate-400"}),"Pod 级别"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:422:9",className:"pt-0 grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:423:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:424:13",className:"text-slate-500 text-xs",children:"dnsPolicy"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:425:13",value:J,onChange:w=>z(w.target.value),className:"h-8 mt-1 w-full bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:427:15",value:"ClusterFirst",children:"ClusterFirst"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:428:15",value:"ClusterFirstWithHostNet",children:"ClusterFirstWithHostNet"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:429:15",value:"Default",children:"Default"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:430:15",value:"None",children:"None"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:433:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:434:13",className:"text-slate-500 text-xs",children:"restartPolicy"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:435:13",value:$,onChange:w=>he(w.target.value),className:"h-8 mt-1 w-full bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:437:15",value:"Always",children:"Always"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:438:15",value:"OnFailure",children:"OnFailure"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:439:15",value:"Never",children:"Never"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:442:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:443:13",className:"text-slate-500 text-xs",children:"schedulerName"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:444:13",value:U,onChange:w=>me(w.target.value),className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:447:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:448:13",className:"text-slate-500 text-xs",children:"terminationGracePeriodSeconds"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:449:13",type:"number",value:je,onChange:w=>re(w.target.value),className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:452:11",className:"col-span-2",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:453:13",className:"text-slate-500 text-xs",children:"serviceAccountName"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:454:13",value:R,onChange:w=>ae(w.target.value),placeholder:"default",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:461:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:462:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:463:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(es,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:464:13",className:"h-4 w-4 text-rose-400"}),"Pod 安全上下文 (securityContext)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:467:9",className:"pt-0 grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:468:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:469:13",className:"text-slate-500 text-xs",children:"fsGroup"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:470:13",type:"number",value:ke,onChange:w=>Ne(w.target.value),placeholder:"1000",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:473:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:474:13",className:"text-slate-500 text-xs",children:"runAsUser"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:475:13",type:"number",value:j,onChange:w=>ue(w.target.value),placeholder:"1000",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:478:11",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:479:13",className:"text-slate-500 text-xs",children:"runAsGroup"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:480:13",type:"number",value:ve,onChange:w=>Ce(w.target.value),placeholder:"1000",className:"h-8 mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:483:11",className:"flex items-end pb-1",children:e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:484:13",className:"flex items-center gap-2 text-xs text-slate-400 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:485:15",type:"checkbox",checked:We,onChange:w=>ot(w.target.checked),className:"accent-blue-500"}),"runAsNonRoot"]})})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:494:7",className:"bg-slate-900 border-slate-800",children:[e.jsx(le,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:495:9",className:"pb-3",children:e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:496:11",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:497:13",className:"h-4 w-4 text-cyan-400"}),"主机设置 (Host Namespace)"]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:500:9",className:"pt-0 grid grid-cols-2 gap-3",children:[e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:501:11",className:"flex items-center gap-2 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:502:13",type:"checkbox",checked:Fe,onChange:w=>at(w.target.checked),className:"accent-blue-500"}),"hostNetwork(共享主机网络命名空间)"]}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:506:11",className:"flex items-center gap-2 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:507:13",type:"checkbox",checked:Ye,onChange:w=>Se(w.target.checked),className:"accent-blue-500"}),"hostIPC(共享主机 IPC 命名空间)"]}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:511:11",className:"flex items-center gap-2 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:512:13",type:"checkbox",checked:Nt,onChange:w=>Dt(w.target.checked),className:"accent-blue-500"}),"hostPID(共享主机 PID 命名空间)"]}),e.jsxs("label",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:516:11",className:"flex items-center gap-2 text-xs text-slate-300 cursor-pointer",children:[e.jsx("input",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:517:13",type:"checkbox",checked:ft,onChange:w=>St(w.target.checked),className:"accent-blue-500"}),"shareProcessNamespace(共享进程命名空间)"]})]})]}),e.jsx(nn,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:524:7",dnsNameservers:Ct,onDnsNameserversChange:Pt,dnsSearches:At,onDnsSearchesChange:Vt,dnsOptions:Wt,onDnsOptionsChange:Tt,hostAliases:Et,onHostAliasesChange:wt}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:536:7",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:537:9",variant:"outline",className:"border-slate-700 text-slate-400",onClick:l,children:"取消"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:538:9",className:"bg-blue-600 hover:bg-blue-700",disabled:p,onClick:xs,children:[p?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:539:21",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(st,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:539:73",className:"h-4 w-4 mr-1"}),"保存"]})]})]}):e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:333:7",className:"bg-slate-900 border-slate-800",children:e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditAdvanced.tsx:334:9",className:"p-8 text-center text-slate-500",children:"未获取到 manifest 数据,请使用 YAML 编辑模式直接修改。"})})}const an=[{label:"HTTP",protocol:"TCP",port:8080,targetPort:8080,name:"http"},{label:"WebSocket",protocol:"TCP",port:8001,targetPort:8002,name:"ws"},{label:"gRPC",protocol:"TCP",port:8002,targetPort:8002,name:"grpc"}],qt=t=>Array.isArray(t)?t:t?.list||t?.items||t?.data||[];function cn({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const{toast:d}=we(),[p,g]=m.useState(!0),[x,N]=m.useState([]),[D,O]=m.useState([]),[v,f]=m.useState({}),[C,E]=m.useState(null),[M,I]=m.useState(null),[q,Y]=m.useState({name:"",type:"ClusterIP",ports:[{name:"http",port:"8080",targetPort:"8080",protocol:"TCP",nodePort:""}]}),[V,Z]=m.useState({name:"",className:"nginx",host:"",path:"/",pathType:"Prefix",svcPort:"80"}),_=c=>{Y(y=>({...y,ports:[...y.ports,c?{name:c.name,port:String(c.port),targetPort:String(c.targetPort),protocol:c.protocol,nodePort:""}:{name:"",port:"",targetPort:"",protocol:"TCP",nodePort:""}]}))},F=(c,y,b)=>{Y(J=>({...J,ports:J.ports.map((z,$)=>$===c?{...z,[y]:b}:z)}))},ne=c=>{q.ports.length<=1||Y(y=>({...y,ports:y.ports.filter((b,J)=>J!==c)}))},te=m.useCallback(async()=>{g(!0);try{const c=a?.spec?.selector?.matchLabels||a?.selector||{};f(c);const[y,b]=await Promise.all([Q.getNamespaceServices(t,s).catch(()=>[]),Q.getNamespaceIngresses(t,s).catch(()=>[])]),J=qt(y),z=qt(b),$=J.map(U=>{const me=U.spec||{},je=Array.isArray(me.ports)?me.ports.map(re=>({port:re.port,targetPort:re.targetPort,protocol:re.protocol||"TCP",nodePort:re.nodePort,name:re.name})):Array.isArray(U.portList)?U.portList.map(re=>({port:re.port,targetPort:re.targetPort,protocol:re.protocol||"TCP",nodePort:re.nodePort,name:re.name})):[];return{name:U.name||U.metadata?.name||"",type:me.type||U.type||"ClusterIP",clusterIP:me.clusterIP||U.cluster_ip||"<none>",externalIP:Array.isArray(me.externalIPs)?me.externalIPs.join(","):"",ports:je,selector:me.selector||U.selector||{},age:U.age||U.created_at||"",raw:U}}),he=z.map(U=>{const me=U.spec||{},re=(Array.isArray(me.rules)?me.rules:Array.isArray(U.rules)?U.rules:[]).map(R=>({host:R.host||"",paths:(R.http?.paths||R.paths||[]).map(ae=>({path:ae.path||"/",backend:{service:ae.backend?.service?.name||ae.backendService||"",port:ae.backend?.service?.port?.number||ae.backend?.service?.port?.name||ae.backendPort||""}}))}));return{name:U.name||U.metadata?.name||"",className:me.ingressClassName||U.ingressClass||"<none>",hosts:re.map(R=>R.host).filter(Boolean),rules:re,raw:U}});N($),O(he)}catch(c){console.error("M9 load error:",c)}finally{g(!1)}},[t,s,a]);m.useEffect(()=>{te()},[te]);const r=c=>Object.keys(c).length===0?!1:Object.entries(c).every(([y,b])=>v[y]===b),u=x.filter(c=>r(c.selector)),S=new Set(u.map(c=>c.name)),T=D.filter(c=>c.rules.some(y=>y.paths.some(b=>S.has(b.backend.service)))),i=async()=>{const c=q.name.trim()||`${o}-svc`,y=q.ports.map(z=>{const $={name:z.name||"http",port:Number(z.port)||80,targetPort:/^\d+$/.test(String(z.targetPort))?Number(z.targetPort):z.targetPort,protocol:z.protocol||"TCP"};return q.type==="NodePort"&&z.nodePort&&($.nodePort=Number(z.nodePort)),$}),b={apiVersion:"v1",kind:"Service",metadata:{name:c,namespace:s,labels:{app:o}},spec:{type:q.type,selector:v,ports:y}},J=JSON.stringify(b,null,2);try{await Q.updateResourceYaml(t,s,"services",c,J),d({title:"Service 已创建",description:c}),I(null),te()}catch(z){d({title:"创建失败",description:z?.message||String(z),variant:"destructive"})}},P=async()=>{const c=V.name.trim()||`${o}-ingress`,y=u[0]?.name||`${o}-svc`,b=Number(V.svcPort)||80,J={apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:c,namespace:s,labels:{app:o}},spec:{ingressClassName:V.className||void 0,rules:[{host:V.host||void 0,http:{paths:[{path:V.path||"/",pathType:V.pathType||"Prefix",backend:{service:{name:y,port:{number:b}}}}]}}]}};V.className||delete J.spec.ingressClassName;const z=JSON.stringify(J,null,2);try{await Q.updateResourceYaml(t,s,"ingresses",c,z),d({title:"Ingress 已创建",description:c}),I(null),te()}catch($){d({title:"创建失败",description:$?.message||String($),variant:"destructive"})}},H=async(c,y)=>{if(window.confirm(`确认删除 ${c==="service"?"Service":"Ingress"} 「${y}」?此操作不可撤销。`))try{const b=c==="service"?"services":"ingresses";await Q.deleteResourceYaml(t,s,b,y),d({title:"已删除",description:`${c==="service"?"Service":"Ingress"} ${y} 已删除`}),te()}catch(b){d({title:"删除失败",description:b?.message||String(b),variant:"destructive"})}};return p?e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:281:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:282:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:283:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:284:11",className:"text-slate-500 mt-3 text-sm",children:"加载中..."})]})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:291:5",className:"space-y-4",children:[e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:293:7",className:"bg-slate-900/50 border-slate-800",children:e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:294:9",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:295:11",className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:296:13",className:"h-3.5 w-3.5 text-blue-400"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:297:13",children:"选择器:"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:298:13",className:"flex flex-wrap gap-1",children:[Object.entries(v).map(([c,y])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:300:17",className:"bg-slate-800 px-1.5 py-0.5 rounded text-slate-300 text-[11px]",children:[c,"=",y]},c)),Object.keys(v).length===0&&e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:303:17",className:"text-slate-600 italic",children:"(无 selector)"})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:306:13",size:"sm",variant:"ghost",className:"h-6 ml-auto text-xs text-slate-400",onClick:te,children:[e.jsx(nt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:307:15",className:"h-3 w-3 mr-1"}),"刷新"]})]})})}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:314:7",className:"bg-slate-900 border-slate-800",children:[e.jsxs(le,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:315:9",className:"pb-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:316:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:317:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:318:15",className:"h-4 w-4 text-blue-400"}),"Services",e.jsxs(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:320:15",variant:"outline",className:"border-slate-700 text-slate-400",children:[u.length," 个关联"]})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:322:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>{Y({name:`${o}-svc`,type:"ClusterIP",ports:[{name:"http",port:"8080",targetPort:"8080",protocol:"TCP",nodePort:""}]}),I("service")},children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:327:15",className:"h-3 w-3 mr-1"}),"创建 Service"]})]}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:330:11",className:"text-xs text-slate-500 mt-1",children:"仅显示 selector 匹配此 Deployment 的关联 Service"})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:332:9",className:"pt-0",children:[u.length===0&&M!=="service"?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:334:13",className:"text-center py-6 text-slate-500 text-sm border border-dashed border-slate-800 rounded-lg",children:[e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:335:15",className:"h-8 w-8 mx-auto mb-2 text-slate-700"}),"当前命名空间暂无关联 Service"]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:339:13",className:"space-y-2",children:u.map(c=>{const y=r(c.selector);return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:343:19",className:`rounded-lg border p-3 ${y?"border-blue-700/50 bg-blue-950/20":"border-slate-800 bg-slate-950/30"}`,children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:344:21",className:"flex items-center gap-2 flex-wrap",children:[y?e.jsx(ut,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:345:34",className:"h-4 w-4 text-blue-400"}):e.jsx(Ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:345:86",className:"h-4 w-4 text-slate-500"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:346:23",className:"text-sm font-semibold text-slate-200",children:c.name}),e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:347:23",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:c.type}),y&&e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:348:35",className:"bg-blue-500/20 text-blue-300 border-blue-500/30 text-[10px]",children:"关联"}),e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:349:23",className:"text-[11px] text-slate-500 ml-auto",children:c.clusterIP}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:350:23",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400",onClick:()=>E({kind:"service",name:c.name}),children:[e.jsx(bt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:352:25",className:"h-3 w-3 mr-1"}),"YAML"]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:354:23",size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-red-400 hover:text-red-300",title:"删除 Service",onClick:()=>H("service",c.name),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:356:25",className:"h-3 w-3"})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:360:21",className:"mt-2 flex flex-wrap gap-1.5 text-[11px]",children:c.ports.map((b,J)=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:362:25",className:"bg-slate-800/60 px-1.5 py-0.5 rounded text-slate-300",children:[b.name&&e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:363:38",className:"text-slate-500",children:[b.name,": "]}),b.port,"→",b.targetPort,b.nodePort?`/NodePort:${b.nodePort}`:"","/",b.protocol]},J))}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:369:21",className:"mt-1 flex flex-wrap gap-1 text-[10px]",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:370:23",className:"text-slate-600",children:"selector:"}),Object.entries(c.selector).map(([b,J])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:372:25",className:"text-slate-500",children:[b,"=",J]},b))]})]},c.name)})}),M==="service"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:383:13",className:"mt-3 border border-blue-800/50 rounded-lg p-3 bg-blue-950/20 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:384:15",className:"text-xs font-semibold text-blue-300 flex items-center gap-1.5",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:385:17",className:"h-3 w-3"}),"创建新 Service"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:389:15",className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:390:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:391:19",className:"text-slate-500 text-[11px]",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:392:19",value:q.name,onChange:c=>Y(y=>({...y,name:c.target.value})),placeholder:`${o}-svc`,className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:396:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:397:19",className:"text-slate-500 text-[11px]",children:"类型"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:398:19",value:q.type,onChange:c=>Y(y=>({...y,type:c.target.value})),className:"h-7 mt-0.5 w-full bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:400:21",value:"ClusterIP",children:"ClusterIP"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:401:21",value:"NodePort",children:"NodePort"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:407:15",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:408:17",className:"text-slate-500 text-[11px] mb-1 block",children:"快速添加常用端口"}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:409:17",className:"flex gap-1.5",children:an.map(c=>e.jsxs("button",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:411:21",onClick:()=>_(c),className:`flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium
|
||
bg-slate-800 border border-slate-700 text-slate-300 hover:border-blue-500/50 hover:text-blue-300 transition-colors`,children:[e.jsx(as,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:414:23",className:"h-2.5 w-2.5"}),c.label,e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:416:23",className:"text-slate-500 text-[9px]",children:[c.protocol," ",c.port,":",c.targetPort]})]},c.name))})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:423:15",className:"space-y-2",children:[e.jsxs(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:424:17",className:"text-slate-500 text-[11px]",children:["端口配置 ",e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:425:24",className:"text-slate-600",children:["(",q.ports.length," 个端口)"]})]}),q.ports.map((c,y)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:428:19",className:"flex items-center gap-1.5 p-2 rounded bg-slate-800/50 border border-slate-700/50",children:[e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:430:21",value:c.name,onChange:b=>F(y,"name",b.target.value),placeholder:"http",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsxs("select",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:434:21",value:c.protocol,onChange:b=>F(y,"protocol",b.target.value),className:"h-7 bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-1.5 w-16",children:[e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:436:23",value:"TCP",children:"TCP"}),e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:437:23",value:"UDP",children:"UDP"})]}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:440:21",value:c.port,onChange:b=>F(y,"port",b.target.value),type:"number",placeholder:"port",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:443:21",className:"text-slate-600 text-[10px]",children:"→"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:444:21",value:c.targetPort,onChange:b=>F(y,"targetPort",b.target.value),type:"number",placeholder:"targetPort",className:"h-7 w-[72px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),q.type==="NodePort"&&e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:449:23",value:c.nodePort,onChange:b=>F(y,"nodePort",b.target.value),type:"number",placeholder:"30000-32767",className:"h-7 w-[80px] bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:454:21",size:"icon",variant:"ghost",className:"h-6 w-6 text-slate-500 hover:text-red-400",onClick:()=>ne(y),disabled:q.ports.length<=1,children:e.jsx(gt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:456:23",className:"h-3 w-3"})})]},y)),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:461:17",size:"sm",variant:"outline",className:"h-7 w-full border-dashed border-slate-700 text-slate-400 text-xs",onClick:()=>_(),children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:463:19",className:"h-3 w-3 mr-1"}),"添加自定义端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:468:15",className:"text-[10px] text-slate-500 border-t border-slate-700/50 pt-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:469:17",className:"text-slate-600",children:"selector (自动检测): "}),Object.keys(v).length>0?Object.entries(v).map(([c,y])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:472:21",className:"bg-slate-800 px-1 py-0.5 rounded text-slate-400 ml-1",children:[c,"=",y]},c)):e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:475:19",className:"text-slate-600 italic",children:"未检测到"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:479:15",className:"flex justify-end gap-2 pt-1",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:480:17",size:"sm",variant:"ghost",className:"h-7 text-xs text-slate-400",onClick:()=>I(null),children:"取消"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:481:17",size:"sm",className:"h-7 bg-blue-600 hover:bg-blue-700 text-xs",onClick:i,children:"创建"})]})]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:489:7",className:"bg-slate-900 border-slate-800",children:[e.jsxs(le,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:490:9",className:"pb-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:491:11",className:"flex items-center justify-between",children:[e.jsxs(de,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:492:13",className:"text-sm text-slate-200 flex items-center gap-2",children:[e.jsx(lt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:493:15",className:"h-4 w-4 text-purple-400"}),"Ingresses (应用路由)",e.jsxs(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:495:15",variant:"outline",className:"border-slate-700 text-slate-400",children:[T.length,"/",D.length]})]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:497:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>{Z(c=>({...c,name:`${o}-ingress`,svcPort:String(u[0]?.ports[0]?.port||80)})),I("ingress")},children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:502:15",className:"h-3 w-3 mr-1"}),"创建 Ingress"]})]}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:505:11",className:"text-xs text-slate-500 mt-1",children:"backend 指向关联 Service 的 Ingress 自动高亮"})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:507:9",className:"pt-0",children:[D.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:509:13",className:"text-center py-6 text-slate-500 text-sm border border-dashed border-slate-800 rounded-lg",children:[e.jsx(lt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:510:15",className:"h-8 w-8 mx-auto mb-2 text-slate-700"}),"当前命名空间暂无 Ingress"]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:514:13",className:"space-y-2",children:D.map(c=>{const y=T.includes(c);return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:518:19",className:`rounded-lg border p-3 ${y?"border-purple-700/50 bg-purple-950/20":"border-slate-800 bg-slate-950/30"}`,children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:519:21",className:"flex items-center gap-2 flex-wrap",children:[y?e.jsx(ut,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:520:34",className:"h-4 w-4 text-purple-400"}):e.jsx(lt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:520:88",className:"h-4 w-4 text-slate-500"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:521:23",className:"text-sm font-semibold text-slate-200",children:c.name}),e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:522:23",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:c.className}),y&&e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:523:35",className:"bg-purple-500/20 text-purple-300 border-purple-500/30 text-[10px]",children:"关联"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:524:23",size:"sm",variant:"ghost",className:"h-6 text-xs text-slate-400 ml-auto",onClick:()=>E({kind:"ingress",name:c.name}),children:[e.jsx(bt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:526:25",className:"h-3 w-3 mr-1"}),"YAML"]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:528:23",size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-red-400 hover:text-red-300",title:"删除 Ingress",onClick:()=>H("ingress",c.name),children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:530:25",className:"h-3 w-3"})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:534:21",className:"mt-2 space-y-1 text-[11px]",children:c.rules.map((b,J)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:536:25",className:"flex items-start gap-1.5",children:[e.jsx(yt,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:537:27",className:"h-3 w-3 text-slate-500 mt-0.5"}),e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:538:27",className:"text-slate-300",children:b.host||"*"}),b.paths.map((z,$)=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:540:29",className:"bg-slate-800/60 px-1.5 py-0.5 rounded text-slate-400",children:[z.path," → ",z.backend?.service,":",z.backend?.port]},$))]},J))})]},c.name)})}),M==="ingress"&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:555:13",className:"mt-3 border border-purple-800/50 rounded-lg p-3 bg-purple-950/20 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:556:15",className:"text-xs font-semibold text-purple-300 flex items-center gap-1.5",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:557:17",className:"h-3 w-3"}),"创建新 Ingress"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:559:15",className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:560:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:561:19",className:"text-slate-500 text-[11px]",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:562:19",value:V.name,onChange:c=>Z(y=>({...y,name:c.target.value})),placeholder:`${o}-ingress`,className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:566:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:567:19",className:"text-slate-500 text-[11px]",children:"ingressClassName"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:568:19",value:V.className,onChange:c=>Z(y=>({...y,className:c.target.value})),placeholder:"nginx",className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:572:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:573:19",className:"text-slate-500 text-[11px]",children:"host (域名)"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:574:19",value:V.host,onChange:c=>Z(y=>({...y,host:c.target.value})),placeholder:"app.example.com",className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:578:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:579:19",className:"text-slate-500 text-[11px]",children:"path"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:580:19",value:V.path,onChange:c=>Z(y=>({...y,path:c.target.value})),placeholder:"/",className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:584:17",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:585:19",className:"text-slate-500 text-[11px]",children:"Service 端口"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:586:19",type:"number",value:V.svcPort,onChange:c=>Z(y=>({...y,svcPort:c.target.value})),className:"h-7 mt-0.5 bg-slate-800 border-slate-700 text-slate-300 text-xs font-mono"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:590:15",className:"flex justify-end gap-2 pt-1",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:591:17",size:"sm",variant:"ghost",className:"h-7 text-xs text-slate-400",onClick:()=>I(null),children:"取消"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:592:17",size:"sm",className:"h-7 bg-purple-600 hover:bg-purple-700 text-xs",onClick:P,children:"创建"})]})]})]})]}),C&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:601:9",className:"hidden"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:605:7",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:606:9",size:"sm",variant:"ghost",className:"h-7 text-xs text-slate-400",onClick:l,children:"完成"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentEditService.tsx:607:9",size:"sm",className:"h-7 bg-slate-600 text-xs",onClick:n,children:"保存并关闭"})]})]})}function rn({clusterCode:t,namespace:s,deploymentName:o,mode:a,onBack:n,onModeChange:l}){const d=ss(),{toast:p}=we(),[g,x]=m.useState(null),[N,D]=m.useState(null),[O,v]=m.useState([]),[f,C]=m.useState([]),[E,M]=m.useState([]),[I,q]=m.useState(!0),[Y,V]=m.useState(""),[Z,_]=m.useState(null),[F,ne]=m.useState(""),[te,r]=m.useState(0),[u,S]=m.useState(null),[T,i]=m.useState(null),P=g?.cluster_id||g?.clusterId||t,H=j=>Array.isArray(j)?j:j?.list||j?.items||j?.data||[],c=m.useCallback(async()=>{q(!0);try{const[j,ue,ve,Ce]=await Promise.all([Q.getDeployment(t,s,o).catch(()=>null),Q.getNamespacePods(t,s).catch(()=>[]),Q.getReplicaSets(t,s).catch(()=>[]),Q.getDeploymentRevisions(t,s,o).catch(()=>[])]),We=j||(Array.isArray(j)?j[0]:null);x(We),r(We?.replicas||0),ne(We?.image||"");const Fe=H(ue).filter(Se=>Se.namespace===s&&(Se.name||"").startsWith(o));v(Fe);const Ye=H(ve).filter(Se=>Se.namespace===s&&(Se.owner_deployment===o||(Se.name||"").startsWith(o)));C(Ye),M(H(Ce))}catch(j){console.error("加载详情失败:",j)}finally{q(!1)}},[t,s,o]),y=m.useCallback(async()=>{try{const j=await Q.getResourceYaml(t,s,"deployments",o);let ue=null;try{ue=JSON.parse(j)}catch{try{ue=(await vs(()=>import("./js-yaml-37NdyH6G.js"),[],import.meta.url)).load(j)}catch{ue=null}}D(ue||g)}catch(j){console.warn("加载 manifest 失败(编辑功能降级):",j),D(g)}},[t,s,o,g]);m.useEffect(()=>{c()},[c]),m.useEffect(()=>{a==="edit"&&!N&&y()},[a,N,y]);const b=async()=>{V("scale");try{await Q.scaleDeployment(t,s,o,te),p({title:"伸缩成功",description:`副本数已设置为 ${te}`}),_(null),c()}catch(j){p({title:"操作失败",description:j?.message||String(j),variant:"destructive"})}finally{V("")}},J=async()=>{if(confirm(`确认滚动重启 Deployment "${o}"?`)){V("restart");try{await Q.restartDeployment(t,s,o),p({title:"重启指令已下发",description:"Deployment 正在滚动重启"}),setTimeout(c,1500)}catch(j){p({title:"重启失败",description:j?.message||String(j),variant:"destructive"})}finally{V("")}}},z=async()=>{const j=!!g?.paused,ue=j?"恢复":"暂停";if(confirm(`确认${ue} Deployment "${o}" 的滚动更新?`)){V(j?"resume":"pause");try{j?await Q.resumeDeployment(t,s,o):await Q.pauseDeployment(t,s,o),p({title:`${ue}成功`,description:`Deployment 滚动更新已${ue}`}),setTimeout(c,1e3)}catch(ve){p({title:`${ue}失败`,description:ve?.message||String(ve),variant:"destructive"})}finally{V("")}}},$=()=>{_({kind:"cicd"})},he=async()=>{if(F.trim()){V("image");try{await Q.updateDeploymentImage(t,s,o,F),p({title:"镜像更新成功",description:`正在滚动更新为 ${F}`}),_(null),c()}catch(j){p({title:"更新失败",description:j?.message||String(j),variant:"destructive"})}finally{V("")}}},U=async()=>{V("delete");try{const j=kt.getState().token||"",ve=`/api/v1/kubernetes/${t}/namespace/${s}/deployments/${o}`,Ce=await fetch(ve,{method:"DELETE",headers:{Authorization:`Bearer ${j}`}});if(!Ce.ok)throw new Error(`HTTP ${Ce.status}`);p({title:"删除成功",description:`${o} 已删除`}),_(null),setTimeout(()=>d(`/kubernetes/${t}/namespace/${s}/deployments`),800)}catch(j){p({title:"删除失败",description:j?.message||String(j),variant:"destructive"})}finally{V("")}},me=j=>_({kind:"podLogs",pod:j.name}),je=j=>_({kind:"podYaml",pod:j.name}),re=j=>{S(j.name)},R=j=>{i(j.name)};if(I)return e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:260:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:261:9",className:"p-12 text-center",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:262:11",className:"h-6 w-6 animate-spin mx-auto text-slate-500"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:263:11",className:"text-slate-500 mt-3",children:"加载中..."})]})});if(!g)return e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:271:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:272:9",className:"p-12 text-center",children:[e.jsx(Vs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:273:11",className:"h-8 w-8 mx-auto text-red-400"}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:274:11",className:"text-slate-400 mt-3",children:["未找到 Deployment: ",o]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:275:11",variant:"outline",className:"mt-4",onClick:n,children:"返回"})]})});const ae=g.ready_replicas||g.readyReplicas||0,ke=g.replicas||0,Ne=ae===ke&&ke>0;return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:287:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:289:7",className:"flex items-center justify-between gap-2 flex-wrap",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:290:9",className:"flex items-center gap-3 min-w-0",children:[e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:291:11",variant:"ghost",size:"sm",className:"text-slate-400",onClick:n,children:[e.jsx(Ws,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:292:13",className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:294:11",className:"min-w-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:295:13",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:296:15",className:"text-xl font-bold text-slate-100 truncate",children:o}),e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:297:15",variant:"outline",className:"border-slate-700 text-slate-400",children:s}),e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:298:15",variant:"outline",className:"border-slate-700 text-slate-400",children:"Deployment"}),e.jsxs(ee,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:299:15",className:Ne?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-amber-500/20 text-amber-400 border-amber-500/30",children:[Ne?e.jsx(ut,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:304:30",className:"h-3 w-3 mr-1"}):e.jsx(Bt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:304:73",className:"h-3 w-3 mr-1"}),ae,"/",ke]}),g?.paused&&e.jsxs(ee,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:308:17",className:"bg-orange-500/20 text-orange-400 border-orange-500/30",children:[e.jsx(It,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:309:19",className:"h-3 w-3 mr-1"}),"已暂停更新"]})]}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:313:13",className:"text-xs text-slate-500 mt-0.5 truncate",children:["镜像: ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:314:19",className:"text-slate-400",children:g.image||"-"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:319:9",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:321:11",className:"inline-flex rounded-md border border-slate-700 overflow-hidden",children:[e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:322:13",className:`px-3 py-1.5 text-xs font-medium transition-colors ${a==="view"?"bg-slate-700 text-slate-100":"bg-transparent text-slate-400 hover:text-slate-200"}`,onClick:()=>l("view"),children:"查看"}),e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:328:13",className:`px-3 py-1.5 text-xs font-medium transition-colors ${a==="edit"?"bg-blue-600 text-white":"bg-transparent text-slate-400 hover:text-slate-200"}`,onClick:()=>l("edit"),children:"编辑"}),e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:334:13",className:`px-3 py-1.5 text-xs font-medium transition-colors ${a==="yaml"?"bg-emerald-600 text-white":"bg-transparent text-slate-400 hover:text-slate-200"}`,onClick:()=>l("yaml"),children:"YAML"})]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:342:11",variant:"outline",size:"sm",className:"border-slate-700 text-slate-400",onClick:c,title:"刷新",children:e.jsx(nt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:343:13",className:"h-4 w-4"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:347:11",className:"flex items-center gap-1.5",children:[e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:348:13",variant:"outline",size:"sm",className:"border-slate-700 text-slate-300",onClick:()=>_({kind:"image"}),children:[e.jsx(Hs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:349:15",className:"h-3.5 w-3.5 mr-1"}),"调整镜像"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:351:13",variant:"outline",size:"sm",className:"border-slate-700 text-slate-300",onClick:J,children:[e.jsx(cs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:352:15",className:"h-3.5 w-3.5 mr-1"}),"重启"]}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:354:13",variant:"outline",size:"sm",className:"border-slate-700 text-slate-300",disabled:!!Y,onClick:z,children:g?.paused?e.jsxs(e.Fragment,{children:[e.jsx(rs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:361:21",className:"h-3.5 w-3.5 mr-1 text-green-400"}),"恢复"]}):e.jsxs(e.Fragment,{children:[e.jsx(It,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:362:21",className:"h-3.5 w-3.5 mr-1 text-orange-400"}),"暂停"]})}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:365:13",variant:"outline",size:"sm",className:"border-slate-700 text-slate-300",onClick:$,children:[e.jsx(js,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:366:15",className:"h-3.5 w-3.5 mr-1 text-purple-400"}),"CI/CD"]}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:368:13",variant:"outline",size:"sm",className:"border-slate-700 text-red-400 hover:bg-red-500/10",onClick:()=>_({kind:"delete"}),children:[e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:369:15",className:"h-3.5 w-3.5 mr-1"}),"删除"]})]})]})]}),a==="view"?e.jsx($s,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:377:9",clusterCode:t,namespace:s,deployment:g,pods:O,replicaSets:f,revisions:E,onRefresh:c,onShowPodLogs:me,onShowPodTerminal:re,onShowPodYaml:je,onShowPodFileBrowser:R}):a==="yaml"?e.jsx(Ot,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:392:9",clusterCode:t,namespace:s,resource:"deployments",name:o,cleanBeforeEdit:!0,inline:!0,onSaved:c,onClose:()=>l("view")}):e.jsx(ln,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:404:9",clusterCode:t,namespace:s,deploymentName:o,manifest:N,onSaved:()=>{y(),c(),l("view")},onCancel:()=>l("view")}),Z?.kind==="yaml"&&e.jsx(Ot,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:416:9",clusterCode:t,namespace:s,resource:"deployments",name:o,cleanBeforeEdit:!0,onClose:()=>_(null),onSaved:c}),Z?.kind==="image"&&e.jsx(Xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:429:9",title:"调整镜像版本",onClose:()=>_(null),children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:430:11",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:431:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:432:15",className:"text-slate-400 text-sm",children:"当前镜像"}),e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:433:15",className:"text-xs text-slate-500 font-mono mt-1 bg-slate-800 rounded px-3 py-2",children:g.image||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:435:13",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:436:15",className:"text-slate-400 text-sm",children:"新镜像地址"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:437:15",value:F,onChange:j=>ne(j.target.value),placeholder:"harbor.example.com/app:v2.0",className:"mt-1 bg-slate-800 border-slate-700 text-slate-200 text-sm font-mono"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:441:13",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:442:15",variant:"outline",className:"border-slate-700 text-slate-400",onClick:()=>_(null),children:"取消"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:443:15",className:"bg-blue-600 hover:bg-blue-700",disabled:Y==="image"||!F.trim(),onClick:he,children:Y==="image"?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:444:46",className:"h-4 w-4 animate-spin"}):"更新镜像"})]})]})}),Z?.kind==="scale"&&e.jsx(Xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:453:9",title:"伸缩 (Scale)",onClose:()=>_(null),children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:454:11",className:"space-y-3",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:455:13",className:"text-xs text-slate-500",children:["当前副本: ",g.replicas||0]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:456:13",className:"flex items-center justify-center gap-3 py-3",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:457:15",variant:"outline",size:"icon",className:"border-slate-700 text-slate-300",disabled:Y==="scale"||te<=0,onClick:()=>r(j=>Math.max(0,j-1)),children:e.jsx(gt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:460:17",className:"h-4 w-4"})}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:462:15",type:"number",min:0,value:te,onChange:j=>r(Math.max(0,Number(j.target.value))),className:"w-24 text-center text-lg font-bold bg-slate-800 border-slate-700 text-slate-200"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:465:15",variant:"outline",size:"icon",className:"border-slate-700 text-slate-300",disabled:Y==="scale",onClick:()=>r(j=>j+1),children:e.jsx(oe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:468:17",className:"h-4 w-4"})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:471:13",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:472:15",variant:"outline",className:"border-slate-700 text-slate-400",onClick:()=>_(null),children:"取消"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:473:15",className:"bg-blue-600 hover:bg-blue-700",disabled:Y==="scale",onClick:b,children:Y==="scale"?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:474:46",className:"h-4 w-4 animate-spin"}):"确认"})]})]})}),Z?.kind==="delete"&&e.jsx(Xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:483:9",title:"删除 Deployment",onClose:()=>_(null),children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:484:11",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:485:13",className:"flex items-center gap-2 text-red-400",children:[e.jsx(Bt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:486:15",className:"h-5 w-5"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:487:15",className:"font-semibold",children:"此操作不可撤销"})]}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:489:13",className:"text-sm text-slate-400",children:["确认删除 Deployment ",e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:490:31",className:"text-slate-200 font-mono",children:[s,"/",o]}),"? 其管理的所有 Pod 将被一并回收。"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:493:13",className:"flex justify-end gap-2 pt-2",children:[e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:494:15",variant:"outline",className:"border-slate-700 text-slate-400",onClick:()=>_(null),children:"取消"}),e.jsxs(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:495:15",variant:"destructive",disabled:Y==="delete",onClick:U,children:[Y==="delete"?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:496:47",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:496:99",className:"h-4 w-4 mr-1"}),"确认删除"]})]})]})}),Z?.kind==="cicd"&&e.jsx(Xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:506:9",title:"CI/CD Webhook",onClose:()=>_(null),children:e.jsx(dn,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:507:11",clusterCode:t,namespace:s,deploymentName:o})}),Z?.kind==="podLogs"&&e.jsx(pn,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:513:9",clusterCode:t,namespace:s,podName:Z.pod,containers:(O.find(j=>j.name===Z.pod)?.containers||[]).map(j=>j.name).filter(Boolean),onClose:()=>_(null)}),e.jsx(Ss,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:523:7",open:!!u,onOpenChange:j=>{j||S(null)},clusterId:P,namespace:s,podName:u||"",containers:(O.find(j=>j.name===u)?.containers||[]).map(j=>j.name).filter(Boolean)}),e.jsx(Es,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:532:7",open:!!T,onOpenChange:j=>{j||i(null)},clusterCode:t,namespace:s,podName:T||"",containers:(O.find(j=>j.name===T)?.containers||[]).map(j=>j.name).filter(Boolean)})]})}function ln({clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}){const[d,p]=m.useState("basic"),g=[{key:"basic",label:"基本信息",icon:ht,available:!0},{key:"containers",label:"容器信息",icon:tt,available:!0},{key:"storage",label:"存储挂载",icon:Ze,available:!0},{key:"advanced",label:"高级设置",icon:ht,available:!0},{key:"service",label:"服务/应用路由",icon:Ee,available:!0}];return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:565:5",className:"space-y-4",children:[e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:567:7",className:"flex items-center gap-1 border-b border-slate-800 pb-px overflow-x-auto",children:g.map(x=>{const N=d===x.key,D=x.icon;return e.jsxs("button",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:572:13",disabled:!x.available,onClick:()=>x.available&&p(x.key),className:`flex items-center gap-1.5 px-3 py-2 text-xs font-medium border-b-2 transition-colors whitespace-nowrap
|
||
${N?"border-blue-500 text-blue-400":x.available?"border-transparent text-slate-400 hover:text-slate-200":"border-transparent text-slate-600 cursor-not-allowed"}`,children:[e.jsx(D,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:584:15",className:"h-3.5 w-3.5"}),x.label,x.badge&&e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:587:17",className:`text-[9px] px-1 py-0.5 rounded ${N?"bg-blue-500/20 text-blue-300":"bg-slate-800 text-slate-600"}`,children:x.badge})]},x.key)})}),d==="basic"?e.jsx(Xs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:598:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}):d==="containers"?e.jsx(Ks,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:608:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}):d==="storage"?e.jsx(en,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:618:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}):d==="advanced"?e.jsx(on,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:628:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}):d==="service"?e.jsx(cn,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:638:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:l}):null]})}function dn({clusterCode:t,namespace:s,deploymentName:o}){const{toast:a}=we(),n=kt(g=>g.token)||localStorage.getItem("token")||"",l=`${window.location.origin}/api/v1/clusters/${t}/namespaces/${s}/deployments/${o}/update-image`,d=`curl -X POST '${l}' \\
|
||
-H 'Authorization: Bearer ${n?n.substring(0,16)+"...":"YOUR_TOKEN"}' \\
|
||
-H 'Content-Type: application/json' \\
|
||
-d '{"image": "harbor.example.com/app:v1.0", "container": "your-container-name"}'`,p=g=>{navigator.clipboard.writeText(g).then(()=>a({title:"已复制"})).catch(()=>{})};return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:666:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:667:7",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:668:9",className:"text-slate-400 text-sm",children:"Webhook URL"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:669:9",className:"flex items-center gap-2 mt-1",children:[e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:670:11",className:"flex-1 text-xs text-slate-300 bg-slate-800 rounded px-3 py-2 break-all font-mono",children:l}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:671:11",variant:"outline",size:"sm",className:"border-slate-700 text-slate-400 shrink-0",onClick:()=>p(l),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:674:7",children:[e.jsx(A,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:675:9",className:"text-slate-400 text-sm",children:"curl 示例"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:676:9",className:"relative mt-1",children:[e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:677:11",className:"text-xs text-slate-300 bg-slate-800 rounded p-3 overflow-x-auto font-mono whitespace-pre-wrap",children:d}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:678:11",variant:"outline",size:"sm",className:"absolute top-2 right-2 border-slate-700 text-slate-400",onClick:()=>p(d),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:681:7",className:"text-xs text-slate-500 space-y-1",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:682:9",children:"• 使用 Bearer Token 认证(JWT 登录令牌)"}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:14",className:"text-slate-400",children:"image"})," 必填,指定新镜像地址"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:14",className:"text-slate-400",children:"container"})," 可选,不填则更新第一个容器"]})]})]})}function Xe({title:t,children:s,onClose:o}){return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:693:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:o,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:694:7",className:"bg-slate-900 border border-slate-700 rounded-xl p-6 w-[460px] max-w-[90vw] shadow-2xl",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:695:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h2",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:696:11",className:"text-base font-bold text-slate-100",children:t}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:o,children:e.jsx(ns,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:100",className:"h-4 w-4"})})]}),s]})})}function pn({clusterCode:t,namespace:s,podName:o,containers:a,onClose:n}){const{toast:l}=we(),[d,p]=m.useState(""),[g,x]=m.useState(200),[N,D]=m.useState(a[0]||""),[O,v]=m.useState(!1),[f,C]=m.useState(!1),E=async()=>{v(!0);try{const I=await Q.getPodLogs(t,s,o,g,N||void 0);p(I?.data?.logs||I?.logs||I||"无日志")}catch{p("获取日志失败")}finally{v(!1)}};m.useEffect(()=>{E()},[N,g]);const M=async()=>{C(!0);const I=kt.getState().token||"",q="",Y=N?`&container=${encodeURIComponent(N)}`:"",V=`${q}/api/v1/kubernetes/${t}/namespace/${s}/pods/${o}/logs?tail=${g}&stream=true${Y}`;try{const _=(await fetch(V,{headers:{Authorization:`Bearer ${I}`}})).body?.getReader();if(!_)return;const F=new TextDecoder;let ne="";for(;;){const{done:te,value:r}=await _.read();if(te)break;ne+=F.decode(r,{stream:!0}),p(ne)}}catch{l({title:"流式日志连接中断",variant:"destructive"})}finally{C(!1)}};return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:752:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:753:7",className:"bg-slate-900 border border-slate-700 rounded-xl w-[90vw] max-w-4xl max-h-[80vh] flex flex-col",onClick:I=>I.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:754:9",className:"flex items-center justify-between p-3 border-b border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:755:11",className:"flex items-center gap-2",children:[e.jsx(vt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:756:13",className:"h-4 w-4 text-blue-400"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:757:13",className:"text-sm font-semibold text-slate-200",children:o}),N&&e.jsx(ee,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:758:27",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:N})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:760:11",className:"flex items-center gap-2",children:[a.length>0&&e.jsx("select",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:762:15",value:N,onChange:I=>D(I.target.value),className:"bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2 py-1",children:a.map(I=>e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:764:38",value:I,children:I},I))}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:767:13",className:"text-[11px] text-slate-500",children:"最近"}),e.jsx(k,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:768:13",type:"number",value:g,onChange:I=>x(Number(I.target.value)||200),className:"w-16 h-7 bg-slate-800 border-slate-700 text-slate-200 text-xs"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:770:13",className:"text-[11px] text-slate-500",children:"行"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:771:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:E,disabled:O,children:O?e.jsx(pe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:26",className:"h-3 w-3 animate-spin"}):e.jsx(nt,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:73",className:"h-3 w-3"})}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:774:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-emerald-400 text-xs",onClick:M,disabled:f,children:f?"流中...":"实时流"}),e.jsx(h,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:n,children:e.jsx(ns,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:102",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:780:9",className:"flex-1 overflow-auto p-3",children:e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:781:11",className:"bg-slate-950 rounded p-3 text-xs text-slate-300 font-mono whitespace-pre-wrap max-h-[60vh] overflow-auto",children:d||"无日志内容"})})]})})}function Xn(){const t=Ns(),s=ss(),o=t.clusterCode||"",a=t.namespace||"",n=t.name||"",l=t.mode==="edit"||t.mode==="yaml"?t.mode:"view",d=p=>{p!==l&&s(`/kubernetes/${o}/namespace/${a}/workload/${p}/Deployment/${n}`,{replace:!0})};return e.jsx(rn,{"code-path":"src/components/kubernetes/DeploymentDetailPage.tsx:38:5",clusterCode:o,namespace:a,deploymentName:n,mode:l,onBack:()=>s(-1),onModeChange:d})}export{Xn as default};
|