Your IP : 216.73.216.52


Current Path : /snap/lxd/38768/share/lxd-ui/assets/
Upload File :
Current File : //snap/lxd/38768/share/lxd-ui/assets/NetworkList-PmIINJZF.js

import{bP as D,j as a,J as $,x as j,r as p,bu as M,t as R,d as n,w as K,R as h,c as k,C as B,H as Y,S as q,bL as H,bK as V,bZ as _,L as O,p as Q,b3 as z}from"./index-BsQN_SZU.js";import{H as G}from"./HelpLink-BJF9zWZL.js";import{a as J}from"./network-forwards-CAuMAfcF.js";import{P as d}from"./PageHeader-BkhUaI4-.js";import{s as W,p as Z}from"./searchAndFilter-DtC_P-vv.js";import{a as X}from"./ClusterMemberRichChip-Di9w-E3M.js";import{h as ee,i as ae}from"./useNetworks-1j5RF-bH.js";import{u as te}from"./projects-CczQ3aFg.js";import"./ClusterMemberMemoryUsage-DYUQFY0n.js";import"./Meter-cq8smrSm.js";const se=({network:s,project:i})=>{if(s.managed===!1||!D.includes(s.type))return a.jsx(a.Fragment,{children:"-"});const{data:r=[],isLoading:l}=$({queryKey:[j.projects,i,j.networks,s,j.forwards],queryFn:async()=>J(s.name,i)});return a.jsx(a.Fragment,{children:l?"":r.length})},F="query",x="type",C="managed",w="member",S="state",v=[F,x,C,w,S],re=()=>{const[s,i]=M(),{data:r=[]}=R(),l=[...new Set(r.map(t=>t.server_name))],g=[{id:1,heading:"Type",chips:["OVN","Bridge","Physical"].map(t=>({lead:x,value:t}))},{id:2,heading:"Managed",chips:["Yes","No"].map(t=>({lead:C,value:t}))},{id:3,heading:"State",chips:["Created","Pending","Unknown","Unavailable","Errored"].map(t=>({lead:S,value:t}))},...r.length>0?[{id:4,heading:"Cluster member",chips:["Cluster-wide"].concat(l).map(t=>({lead:w,value:t}))}]:[]],c=t=>{const m=Z(t,s,v);m.toString()!==s.toString()&&i(m)};return a.jsxs(a.Fragment,{children:[a.jsx("h2",{className:"u-off-screen",children:"Search and filter"}),a.jsx(n.SearchAndFilter,{existingSearchData:W(s,v),filterPanelData:g,returnSearchData:c,onExpandChange:()=>{window.dispatchEvent(new CustomEvent("resize",{detail:"search-and-filter"}))},onPanelToggle:()=>{window.dispatchEvent(new CustomEvent("sfp-toggle"))}})]})},ne=p.memo(re),oe=({network:s})=>s.memberName==="Cluster-wide"?a.jsx(K,{type:"cluster-group",value:"Cluster wide",to:`${h}/ui/cluster/members`}):a.jsx(X,{clusterMember:s.memberName}),be=()=>{const s=k(),i=n.useNotify(),{project:r}=B(),l=Y(),{data:g=[]}=R(),c=g.length>0,[t]=M(),{canCreateNetworks:m}=te(),{project:P}=q(),o={queries:t.getAll(F).map(e=>e.toLowerCase()),type:t.getAll(x).map(e=>e.toLowerCase()),managed:t.getAll(C).map(e=>e.toLowerCase()),member:t.getAll(w),state:t.getAll(S)};if(!r)return a.jsx(a.Fragment,{children:"Missing project"});const{data:I=[],error:f,isLoading:E}=ee(r);p.useEffect(()=>{f&&i.failure("Loading networks failed",f)},[f]);const{data:b=[],error:N,isLoading:A}=ae(r);p.useEffect(()=>{N&&i.failure("Loading cluster networks failed",N)},[N]),p.useEffect(()=>{H(b,i)},[b]);const y=I.filter(e=>!c||e.managed).map(e=>({...e,promiseStatus:"fulfilled",memberName:"Cluster-wide"}));b.filter(V).forEach(e=>{e.managed||y.push(e)});const L=y.length>0,T=[{content:"Name",sortKey:"name"},{content:"Type",sortKey:"type",className:"type"},{content:"Managed",sortKey:"managed",className:"managed"},...c?[{content:"Cluster member",sortKey:"member"}]:[],{content:"IPV4",className:"u-align--right"},{content:"IPV6"},{content:"Description",sortKey:"description"},{content:"Forwards",className:"u-align--right forwards"},{content:"Used by",sortKey:"usedBy",className:"u-align--right used-by"},{content:"State",sortKey:"state",className:"state"}],U=y.filter(e=>!(!o.queries.every(u=>e.name.toLowerCase().includes(u)||e.description?.toLowerCase().includes(u))||o.type.length>0&&!o.type.includes(e.type)||o.managed.length>0&&!o.managed.includes(e.managed?"yes":"no")||o.member.length>0&&!o.member.includes(e.memberName)||o.state.length>0&&!o.state.includes(e.status??""))).map(e=>{const u=e.memberName==="Cluster-wide"?`${h}/ui/project/${encodeURIComponent(r)}/network/${encodeURIComponent(e.name)}`:`${h}/ui/project/${encodeURIComponent(r)}/member/${encodeURIComponent(e.memberName)}/network/${encodeURIComponent(e.name)}`;return{key:e.name+e.memberName,columns:[{content:a.jsx(O,{to:u,children:e.name}),role:"rowheader","aria-label":"Name"},{content:_(e.type),role:"cell","aria-label":"Type",className:"type"},{content:e.managed?"Yes":"No",role:"cell","aria-label":"Managed",className:"managed"},...c?[{content:a.jsx(oe,{network:e}),role:"cell","aria-label":"Cluster member"}]:[],{content:e.config["ipv4.address"],className:"u-align--right",role:"cell","aria-label":"IPV4"},{content:e.config["ipv6.address"],role:"cell","aria-label":"IPV6"},{content:a.jsx("div",{className:"table-description",title:e.description,children:e.description}),role:"cell","aria-label":"Description"},{content:a.jsx(se,{network:e,project:r}),role:"cell",className:"u-align--right forwards","aria-label":"Forwards"},{content:e.used_by?.length??"0",role:"cell",className:"u-align--right used-by","aria-label":"Used by"},{content:e.status,role:"cell","aria-label":"State",className:"state"}],sortData:{name:e.name.toLowerCase(),type:e.type,managed:e.managed,description:e.description?.toLowerCase(),state:e.status,usedBy:e.used_by?.length??0,member:e.memberName}}});return E||A?a.jsx(n.Spinner,{className:"u-loader",text:"Loading...",isMainComponent:!0}):a.jsxs(n.CustomLayout,{mainClassName:"network-list",header:a.jsxs(d,{children:[a.jsxs(d.Left,{children:[a.jsx(d.Title,{children:a.jsx(G,{docPath:"/explanation/networks/",title:"Learn more about networking",children:"Networks"})}),a.jsx(d.Search,{children:a.jsx(ne,{},t.get("search"))})]}),a.jsx(d.BaseActions,{children:a.jsxs(n.Button,{appearance:"positive",className:"u-no-margin--bottom",onClick:async()=>s(`${h}/ui/project/${encodeURIComponent(r)}/networks/create`),hasIcon:!l,disabled:!m(P),title:m(P)?"":"You do not have permission to create networks in this project",children:[!l&&a.jsx(n.Icon,{name:"plus",light:!0}),a.jsx("span",{children:"Create network"})]})})]}),children:[a.jsx(Q,{}),a.jsxs(n.Row,{children:[L&&a.jsx(n.MainTable,{headers:T,rows:U,paginate:30,responsive:!0,sortable:!0,className:"network-list-table",emptyStateMsg:"No data to display"}),!E&&!L&&a.jsxs(n.EmptyState,{className:"empty-state",image:a.jsx(n.Icon,{className:"empty-state-icon",name:"exposed"}),title:"No networks found",children:[a.jsx("p",{children:"There are no networks in this project."}),a.jsx("p",{children:a.jsx(z,{docPath:"/explanation/networks/",hasExternalIcon:!0,children:"Learn more about networks"})})]})]})]})};export{be as default};