/
snap
/
lxd
/
current
/
share
/
lxd-ui
/
assets
/
File Upload :
llllll
Current File: //snap/lxd/current/share/lxd-ui/assets/NetworkForm-aRrAlWhU.js
import{d as n,r as F,am as je,b5 as Ne,j as s,p as G,k as pe,b6 as D,b7 as A,b0 as ve,A as he,q as S,K as re,v as W,R,_ as U,Z as I,b8 as g,aJ as we,b9 as _e,V as m,ba as Fe,bb as Ve,bc as me,E as ge,b3 as Ie,bd as Ce,b1 as i,be as Te}from"./index-B3cgCbnJ.js";import{G as xe,B as X,D as z,I as Z,a as f,O as k,C as Pe,Y,N as Re}from"./NetworkFormMenu-BjwriKKk.js";import{k as C,l as v,n as M,Y as Se}from"./FormMenuItem-BwEOqt61.js";import{f as O}from"./FormFooterLayout-ChlQYZN0.js";import{b as ee,c as Oe}from"./useNetworks-DC9cTd9P.js";import{C as Ee}from"./ClusterSpecificSelect-B7ug8YEi.js";import{E as be}from"./ExpandableList-DwC4iUKg.js";import{U as Le}from"./UsedByItem-BtsI6fTe.js";import{e as ye}from"./networks-DBYE4DQa.js";import{A as Ue}from"./AutoExpandingTextArea-BmFqLvbw.js";import{F as De,C as Ae}from"./ClusterSpecificInput-C86z5N6a.js";import{N as Me,Y as $e}from"./YamlNotification-C209eie-.js";import{o as P}from"./instanceOptions-D4bz_1Ev.js";import{g as Be}from"./scroll-BEbDVMxI.js";const He=({project:e,props:a,formik:t})=>{var j,x;const l=n.useNotify(),{data:d=[],error:r,isLoading:h}=ee("default");F.useEffect(()=>{r&&l.failure("Loading networks failed",r)},[r]);const{data:o,error:c,isLoading:_}=je(e);F.useEffect(()=>{c&&l.failure("Loading projects failed",c)},[c]);const V=(((x=(j=o==null?void 0:o.config)==null?void 0:j["restricted.networks.uplinks"])==null?void 0:x.split(","))||d.filter(u=>Ne.includes(u.type)&&u.managed).map(u=>u.name)).map(u=>({label:u,value:u}));return V.unshift({label:V.length===0?"No networks available":"Select option",value:""}),h||_?s.jsx(n.Spinner,{className:"u-loader",text:"Loading..."}):s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"network",required:t.values.isCreating,children:"Uplink"})}),s.jsx("div",{className:"general-field-content",children:t.values.readOnly?s.jsxs(s.Fragment,{children:[t.values.network,s.jsx(n.Button,{onClick:()=>{C(t),O("uplink")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:t.values.editRestriction??"Edit",hasIcon:!0,disabled:!!t.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(n.Select,{help:"Uplink network to use for external network access",options:V,required:!0,...a})},t.values.readOnly?"read":"edit")]})},qe=({props:e,formik:a,isClustered:t})=>{const{project:l}=G(),{data:d=[]}=pe(),r=n.useNotify();if(!l)return s.jsx(s.Fragment,{children:"Missing project"});const h=!t,{data:o=[],error:c,isLoading:_}=ee(l,void 0,h);F.useEffect(()=>{c&&r.failure("Loading networks failed",c)},[c]);const{data:T=[],error:V,isLoading:j}=Oe("default");F.useEffect(()=>{V&&r.failure("Loading cluster networks failed",V)},[V]);const x=o.filter(N=>N.managed===!1).map(N=>({label:N.name,value:N.name}));if(x.unshift({label:x.length===0?"No networks available":"Select option",value:""}),_||j)return s.jsx(n.Spinner,{className:"u-loader",text:"Loading..."});const u=()=>a.values.networkType===D?s.jsxs(s.Fragment,{children:["Parent interface to create ",s.jsx("code",{children:"Macvlan"})," NICs on"]}):a.values.networkType===A?s.jsxs(s.Fragment,{children:["Parent interface to create ",s.jsx("code",{children:"SR-IOV"})," NICs on"]}):"Existing interface to use for network";if(t){const N=Object.values(a.values.parentPerClusterMember??{}),E=[];return d.forEach(w=>E.push({memberName:w.server_name,values:T.filter(p=>p.memberName===w.server_name&&p.managed===!1).map(p=>p.name)})),s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"parent",required:a.values.isCreating,children:"Parent"})}),s.jsx("div",{className:"general-field-content",children:s.jsx(Ee,{id:"parent",options:E,values:a.values.parentPerClusterMember,onChange:w=>void a.setFieldValue("parentPerClusterMember",w),isReadOnly:a.values.readOnly,toggleReadOnly:()=>{C(a),O("parent")},isDefaultSpecific:N.some(w=>w!==N[0]),disableReason:a.values.editRestriction,helpText:u()},JSON.stringify(a.values.parentPerClusterMember))})]})}return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"parent",required:a.values.isCreating,children:"Parent"})}),s.jsx("div",{className:"general-field-content",children:a.values.readOnly?s.jsxs(s.Fragment,{children:[a.values.parent,s.jsx(n.Button,{onClick:()=>{C(a),O("parent")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:a.values.editRestriction??"Edit",hasIcon:!0,disabled:!!a.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(n.Select,{help:u(),options:x,...e})},a.values.readOnly?"read":"edit")]})},Ke=({formik:e,project:a})=>{var l;const t=ve("profile",(l=e.values.bareNetwork)==null?void 0:l.used_by);return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:"Used by profiles"}),s.jsx("div",{className:"general-field-content",children:t.length===0?"-":s.jsx(be,{items:t.map(d=>s.jsx(Le,{item:d,activeProject:a,type:"profile",to:`/ui/project/${encodeURIComponent(d.project)}/profile/${encodeURIComponent(d.name)}`,projectLinkDetailPage:"profiles"},d.name))})})]})},ce=({id:e,address:a,setAddress:t,family:l})=>{const d=a!=="none"&&a!=="auto";return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"ip-address-selector",children:[s.jsx(n.RadioInput,{label:"Auto",checked:a==="auto",onChange:()=>{t("auto")}}),s.jsx(n.RadioInput,{label:"None",checked:a==="none",onChange:()=>{t("none")}})]}),s.jsxs("div",{className:"ip-address-selector ip-address-custom",children:[s.jsx(n.RadioInput,{label:"Custom","aria-label":"custom",checked:d,onChange:()=>{t("")}}),s.jsx(n.Input,{id:e,name:e,type:"text",placeholder:"Enter address",onChange:r=>{t(r.target.value)},value:d&&a?a:"",disabled:!d,help:s.jsxs(s.Fragment,{children:["Use CIDR notation.",s.jsx("br",{}),"You can set the option to ",s.jsx("code",{children:"none"})," to turn off ",l,", or to ",s.jsx("code",{children:"auto"})," to generate a new random unused subnet."]})})]})]})},oe=({row:e})=>{var a,t,l;return s.jsxs("div",{className:"general-field ip-address",children:[s.jsx("div",{className:"general-field-label can-edit",children:(a=e.columns)==null?void 0:a[0].content}),s.jsx("div",{className:"general-field-content",children:(t=e.columns)==null?void 0:t[2].content},(l=e.columns)==null?void 0:l[2].key)]})},Ye=({formik:e,project:a})=>{var o,c,_;const{member:t}=G(),l=n.useNotify(),{data:d,error:r}=he({queryKey:[S.projects,a,S.networks,(o=e.values.bareNetwork)==null?void 0:o.name,S.members,t,S.state],retry:0,queryFn:async()=>{var T;return ye(((T=e.values.bareNetwork)==null?void 0:T.name)??"",a,t)},enabled:!e.values.isCreating});F.useEffect(()=>{r&&l.failure("Loading network state failed",r)},[r]);const h=((c=e.values.bareNetwork)==null?void 0:c.managed)??!0;return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:"RX"}),s.jsxs("div",{className:"general-field-content",children:[re((d==null?void 0:d.counters.bytes_received)??0)," (",(d==null?void 0:d.counters.packets_received)??0," packets)"]})]}),s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:"TX"}),s.jsxs("div",{className:"general-field-content",children:[re((d==null?void 0:d.counters.bytes_sent)??0)," (",(d==null?void 0:d.counters.packets_sent)??0," packets)"]})]}),h&&s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:"Status"}),s.jsx("div",{className:"general-field-content",children:((_=e.values.bareNetwork)==null?void 0:_.status)??"-"})]})]})},Ge=({props:e,formik:a})=>{var t;return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"description",children:"Description"})}),s.jsx("div",{className:W("general-field-content",{"description-readonly":a.values.readOnly}),children:a.values.readOnly?s.jsxs(s.Fragment,{children:[((t=a.values.description)==null?void 0:t.length)??!1?a.values.description:"-",s.jsx(n.Button,{onClick:()=>{C(a),O("description")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:a.values.editRestriction??"Edit",hasIcon:!0,disabled:!!a.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(Ue,{...e})},a.values.readOnly?"read":"edit")]})},Je=({formik:e,project:a})=>{var o;const{member:t}=G(),l=n.useNotify(),d=((o=e.values.bareNetwork)==null?void 0:o.name)??"",{data:r,error:h}=he({queryKey:[S.projects,a,S.networks,d,S.members,t,S.state],retry:0,queryFn:async()=>ye(d,a,t)});return F.useEffect(()=>{h&&l.failure("Loading network state failed",h)},[h]),s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",children:"Addresses"}),((r==null?void 0:r.addresses)??[]).length>0?s.jsx(n.MainTable,{sortable:!0,headers:[{content:"IP",sortKey:"ip"},{content:"Netmask",sortKey:"netmask"},{content:"Scope",sortKey:"scope"},{content:"Family",sortKey:"family"}],rows:r==null?void 0:r.addresses.map(c=>({key:c.address,columns:[{content:c.address,role:"rowheader","aria-label":"Address"},{content:c.netmask,role:"cell","aria-label":"Netmask"},{content:c.scope,role:"cell","aria-label":"Scope"},{content:c.family,role:"cell","aria-label":"family"}],sortData:{ip:c.address,netmask:c.netmask,scope:c.scope,family:c.family}}))}):"None"]})},Qe=({formik:e,project:a})=>{const t=F.useId();return s.jsxs("div",{className:"general-field",children:[e.values.readOnly?s.jsx("div",{className:"general-field-label",children:"ACLs"}):s.jsx(n.Label,{className:"general-field-label",forId:t,children:"ACLs"}),s.jsxs("div",{className:"general-field-content",children:[e.values.readOnly&&s.jsxs(s.Fragment,{children:[e.values.security_acls.length===0?"-":s.jsx(be,{items:e.values.security_acls.map(l=>s.jsx(R,{type:"network-acl",value:l,to:`/ui/project/${encodeURIComponent(a)}/network-acl/${encodeURIComponent(l)}`},l))}),s.jsx(De,{toggleReadOnly:()=>{C(e),setTimeout(()=>{const l=document.getElementById(t);l==null||l.scrollIntoView({block:"nearest",inline:"nearest"}),l==null||l.click()},100)},disableReason:e.values.editRestriction})]}),!e.values.readOnly&&s.jsx(Me,{project:a,selectedAcls:e.values.security_acls,setSelectedAcls:l=>{e.setFieldValue("security_acls",l)},id:t})]},e.values.readOnly?"read":"edit")]})},J=({formik:e})=>{var a;return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"vlan",children:"VLAN Id"})}),s.jsx("div",{className:"general-field-content",children:e.values.readOnly?s.jsxs(s.Fragment,{children:[((a=e.values.vlan)==null?void 0:a.length)??!1?e.values.vlan:"-",s.jsx(n.Button,{onClick:()=>{C(e),O("vlan")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:e.values.editRestriction??"Edit",hasIcon:!0,disabled:!!e.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(n.Input,{...e.getFieldProps("vlan"),id:"vlan",type:"number",placeholder:"Enter VLAN ID",help:"The VLAN ID to attach to"})},e.values.readOnly?"read":"edit")]})},Q=({formik:e})=>{var a;return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"mtu",children:"MTU"})}),s.jsx("div",{className:"general-field-content",children:e.values.readOnly?s.jsxs(s.Fragment,{children:[((a=e.values.mtu)==null?void 0:a.length)??!1?e.values.mtu:"-",s.jsx(n.Button,{onClick:()=>{C(e),O("mtu")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:e.values.editRestriction??"Edit",hasIcon:!0,disabled:!!e.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(n.Input,{...e.getFieldProps("mtu"),id:"mtu",type:"number",placeholder:"Enter MTU",help:"The MTU of the interface"})},e.values.readOnly?"read":"edit")]})},We=({formik:e})=>{var a;return s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label can-edit",children:s.jsx(n.Label,{forId:"gvrp",children:"GARP Registration"})}),s.jsx("div",{className:"general-field-content",children:e.values.readOnly?s.jsxs(s.Fragment,{children:[((a=e.values.gvrp)==null?void 0:a.length)??!1?e.values.gvrp==="true"?"Yes":"No":"-",s.jsx(n.Button,{onClick:()=>{C(e),O("gvrp")},className:"u-no-margin--bottom",type:"button",appearance:"base",title:e.values.editRestriction??"Edit",hasIcon:!0,disabled:!!e.values.editRestriction,children:s.jsx(n.Icon,{name:"edit"})})]}):s.jsx(n.Select,{...e.getFieldProps("gvrp"),id:"gvrp",options:[{label:"Select option",value:""},{label:"Yes",value:"true"},{label:"No",value:"false"}],help:"Register VLAN using GARP VLAN Registration Protocol"})},e.values.readOnly?"read":"edit")]})},Xe=({formik:e})=>s.jsx(n.CustomSelect,{id:"networkType",name:"networkType",help:e.values.networkType===I?s.jsx(we,{docPath:"/howto/network_ovn_setup/#set-up-a-lxd-cluster-on-ovn",children:"Learn how to set up OVN"}):void 0,required:!0,searchable:"never",options:[{label:s.jsxs("div",{className:"label network-type-label",children:[s.jsx("span",{className:"network-type-name",children:"Bridge"}),s.jsx("span",{className:"network-type-explanation u-text--muted",children:"Setup local virtual subnet providing NAT, DHCP and DNS to instances."})]}),text:"Bridge",value:U},{label:s.jsxs("div",{className:"label network-type-label",children:[s.jsx("span",{className:"network-type-name",children:"Macvlan"}),s.jsx("span",{className:"network-type-explanation u-text--muted",children:"Connect instances to an existing network interface without a bridge."})]}),text:"Macvlan",value:D},{label:s.jsxs("div",{className:"label network-type-label",children:[s.jsx("div",{className:"network-type-name",children:"OVN"}),s.jsx("div",{className:"network-type-explanation u-text--muted",children:"Setup cluster-wide virtual subnet providing NAT, DHCP and DNS to instances."})]}),text:"OVN",value:I},{label:s.jsxs("div",{className:"label network-type-label",children:[s.jsx("span",{className:"network-type-name",children:"Physical"}),s.jsx("span",{className:"network-type-explanation u-text--muted",children:"Define OVN uplink or pass-through existing physical interface to one instance."})]}),text:"Physical",value:g},{label:s.jsxs("div",{className:"label network-type-label",children:[s.jsx("span",{className:"network-type-name",children:"SR-IOV"}),s.jsx("span",{className:"network-type-explanation u-text--muted",children:"Connect instances to an existing SR-IOV network interface."})]}),text:"SR-IOV",value:A}],onChange:a=>{a===U&&(e.setFieldValue("networkType",U),e.setFieldValue("network",void 0),e.setFieldValue("parent",void 0),e.setFieldValue("parentPerClusterMember",void 0),e.setFieldValue("dns_nameservers",void 0),e.setFieldValue("gvrp",void 0),e.setFieldValue("ipv4_address","auto"),e.setFieldValue("ipv4_l3only",void 0),e.setFieldValue("ipv4_gateway",void 0),e.setFieldValue("ipv4_routes",void 0),e.setFieldValue("ipv4_routes_anycast",void 0),e.setFieldValue("ipv6_address","auto"),e.setFieldValue("ipv6_l3only",void 0),e.setFieldValue("ipv6_gateway",void 0),e.setFieldValue("ipv6_routes",void 0),e.setFieldValue("ipv6_routes_anycast",void 0),e.setFieldValue("mtu",void 0),e.setFieldValue("ovn_ingress_mode",void 0)),a===D&&(e.setFieldValue("networkType",D),e.setFieldValue("network",void 0),e.setFieldValue("bridge_driver",void 0),e.setFieldValue("bridge_external_interfaces",void 0),e.setFieldValue("bridge_hwaddr",void 0),e.setFieldValue("bridge_mtu",void 0),e.setFieldValue("dns_domain",void 0),e.setFieldValue("dns_mode",void 0),e.setFieldValue("dns_search",void 0),e.setFieldValue("ipv4_address",void 0),e.setFieldValue("ipv4_dhcp",void 0),e.setFieldValue("ipv4_dhcp_expiry",void 0),e.setFieldValue("ipv4_dhcp_ranges",void 0),e.setFieldValue("ipv4_ovn_ranges",void 0),e.setFieldValue("ipv4_l3only",void 0),e.setFieldValue("ipv6_address",void 0),e.setFieldValue("ipv6_dhcp",void 0),e.setFieldValue("ipv6_dhcp_stateful",void 0),e.setFieldValue("ipv6_dhcp_expiry",void 0),e.setFieldValue("ipv6_dhcp_ranges",void 0),e.setFieldValue("ipv6_ovn_ranges",void 0),e.setFieldValue("ipv6_l3only",void 0),e.setFieldValue("ovn_ingress_mode",void 0),e.setFieldValue("security_acls",[])),a===I&&(e.setFieldValue("networkType",I),e.setFieldValue("bridge_driver",void 0),e.setFieldValue("bridge_external_interfaces",void 0),e.setFieldValue("dns_mode",void 0),e.setFieldValue("gvrp",void 0),e.setFieldValue("parent",void 0),e.setFieldValue("parentPerClusterMember",void 0),e.setFieldValue("dns_nameservers",void 0),e.setFieldValue("ipv4_address","auto"),e.setFieldValue("ipv4_dhcp_expiry",void 0),e.setFieldValue("ipv4_dhcp_ranges",void 0),e.setFieldValue("ipv4_ovn_ranges",void 0),e.setFieldValue("ipv4_gateway",void 0),e.setFieldValue("ipv4_routes",void 0),e.setFieldValue("ipv4_routes_anycast",void 0),e.setFieldValue("ipv6_address","auto"),e.setFieldValue("ipv6_dhcp_expiry",void 0),e.setFieldValue("ipv6_dhcp_ranges",void 0),e.setFieldValue("ipv6_ovn_ranges",void 0),e.setFieldValue("ipv6_gateway",void 0),e.setFieldValue("ipv6_routes",void 0),e.setFieldValue("ipv6_routes_anycast",void 0),e.setFieldValue("mtu",void 0),e.setFieldValue("ovn_ingress_mode",void 0)),a===g&&(e.setFieldValue("networkType",g),e.setFieldValue("network",void 0),e.setFieldValue("bridge_driver",void 0),e.setFieldValue("bridge_external_interfaces",void 0),e.setFieldValue("bridge_hwaddr",void 0),e.setFieldValue("bridge_mtu",void 0),e.setFieldValue("dns_domain",void 0),e.setFieldValue("dns_mode",void 0),e.setFieldValue("dns_search",void 0),e.setFieldValue("gvrp",void 0),e.setFieldValue("ipv4_address",void 0),e.setFieldValue("ipv4_dhcp",void 0),e.setFieldValue("ipv4_dhcp_expiry",void 0),e.setFieldValue("ipv4_dhcp_ranges",void 0),e.setFieldValue("ipv4_ovn_ranges",void 0),e.setFieldValue("ipv4_l3only",void 0),e.setFieldValue("ipv6_address",void 0),e.setFieldValue("ipv6_dhcp",void 0),e.setFieldValue("ipv6_dhcp_stateful",void 0),e.setFieldValue("ipv6_dhcp_expiry",void 0),e.setFieldValue("ipv6_dhcp_ranges",void 0),e.setFieldValue("ipv6_ovn_ranges",void 0),e.setFieldValue("ipv6_l3only",void 0),e.setFieldValue("mtu",void 0),e.setFieldValue("security_acls",[])),a===A&&(e.setFieldValue("networkType",A),e.setFieldValue("network",void 0),e.setFieldValue("bridge_driver",void 0),e.setFieldValue("bridge_external_interfaces",void 0),e.setFieldValue("bridge_hwaddr",void 0),e.setFieldValue("bridge_mtu",void 0),e.setFieldValue("dns_domain",void 0),e.setFieldValue("dns_mode",void 0),e.setFieldValue("dns_search",void 0),e.setFieldValue("gvrp",void 0),e.setFieldValue("ipv4_address",void 0),e.setFieldValue("ipv4_dhcp",void 0),e.setFieldValue("ipv4_dhcp_expiry",void 0),e.setFieldValue("ipv4_dhcp_ranges",void 0),e.setFieldValue("ipv4_ovn_ranges",void 0),e.setFieldValue("ipv4_l3only",void 0),e.setFieldValue("ipv6_address",void 0),e.setFieldValue("ipv6_dhcp",void 0),e.setFieldValue("ipv6_dhcp_stateful",void 0),e.setFieldValue("ipv6_dhcp_expiry",void 0),e.setFieldValue("ipv6_dhcp_ranges",void 0),e.setFieldValue("ipv6_ovn_ranges",void 0),e.setFieldValue("ipv6_l3only",void 0),e.setFieldValue("ovn_ingress_mode",void 0),e.setFieldValue("security_acls",[]))},value:e.values.networkType,disabled:e.values.readOnly||!e.values.isCreating}),ze=({formik:e,project:a,isClustered:t})=>{var h;const l=o=>({id:o,name:o,onBlur:e.handleBlur,onChange:c=>{C(e),e.handleChange(c)},value:e.values[o]??"",error:e.touched[o]?e.errors[o]:null,placeholder:`Enter ${o.replaceAll("_"," ")}`}),d=((h=e.values.bareNetwork)==null?void 0:h.managed)??!0,r=_e.includes(e.values.networkType);return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(xe),children:"General"}),s.jsxs("div",{className:"u-sv3",children:[s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:s.jsx(n.Label,{forId:"networkType",children:"Type"})}),s.jsx("div",{className:"general-field-content",children:e.values.isCreating?s.jsx(Xe,{formik:e}):s.jsxs(s.Fragment,{children:[me(e.values.networkType),!d&&s.jsx("span",{className:"u-text--muted",children:", not managed"})]})})]}),e.values.isCreating&&s.jsxs("div",{className:"general-field",children:[s.jsx("div",{className:"general-field-label",children:s.jsx(n.Label,{forId:"name",required:e.values.isCreating,children:"Name"})}),s.jsx("div",{className:"general-field-content",children:s.jsx(n.Input,{...l("name"),type:"text",required:!0})})]}),d&&s.jsx(Ge,{formik:e,props:l("description")}),e.values.networkType===I&&d&&s.jsx(He,{props:l("network"),project:a,formik:e}),r&&d&&s.jsx(qe,{props:l("parent"),formik:e,isClustered:t}),e.values.networkType===g&&d&&s.jsxs(s.Fragment,{children:[s.jsx(Q,{formik:e}),s.jsx(J,{formik:e})]}),e.values.networkType===D&&d&&s.jsxs(s.Fragment,{children:[s.jsx(Q,{formik:e}),s.jsx(J,{formik:e}),s.jsx(We,{formik:e})]}),e.values.networkType===A&&d&&s.jsxs(s.Fragment,{children:[s.jsx(Q,{formik:e}),s.jsx(J,{formik:e})]}),Fe.includes(e.values.networkType)&&d&&s.jsx(Qe,{project:a,formik:e}),!r&&d&&s.jsxs(s.Fragment,{children:[s.jsx(oe,{row:v({formik:e,name:"ipv4_address",label:"IPv4 address",defaultValue:"auto",children:s.jsx(ce,{id:"ipv4_address",family:"IPv4",address:e.values.ipv4_address,setAddress:o=>{e.setFieldValue("ipv4_address",o),o==="none"&&["ipv4_nat","ipv4_dhcp","ipv4_dhcp_expiry","ipv4_dhcp_ranges"].forEach(_=>void e.setFieldValue(_,void 0))}})})}),s.jsx(oe,{row:v({formik:e,name:"ipv6_address",label:"IPv6 address",defaultValue:"auto",children:s.jsx(ce,{id:"ipv6_address",family:"IPv6",address:e.values.ipv6_address,setAddress:o=>{e.setFieldValue("ipv6_address",o),o==="none"&&["ipv6_nat","ipv6_dhcp","ipv6_dhcp_expiry","ipv6_dhcp_ranges","ipv6_dhcp_stateful","ipv6_ovn_ranges"].forEach(_=>void e.setFieldValue(_,void 0))}})})})]}),!e.values.isCreating&&Ve.includes(e.values.networkType)&&s.jsx(Ye,{formik:e,project:a}),!d&&s.jsx(Je,{formik:e,project:a}),!e.values.isCreating&&d&&s.jsx(Ke,{project:a,formik:e})]})]})},ue=({formik:e,helpText:a,disabled:t,placeholder:l})=>{const{data:d=[]}=pe(),r=d.map(h=>h.server_name);return s.jsx(Ae,{values:e.values.bridge_external_interfaces_per_member,id:"bridge_external_interfaces_per_member",isReadOnly:e.values.readOnly,onChange:h=>{e.setFieldValue("bridge_external_interfaces_per_member",h)},toggleReadOnly:()=>{C(e),e.setFieldValue("bridge_external_interfaces",""),O("bridge_external_interfaces_per_member")},memberNames:r,disabled:t,helpText:a,placeholder:l,classname:"",disabledReason:e.values.editRestriction})},Ze=({formik:e,filterRows:a})=>{const t=ge(),l=a([v({formik:e,name:"bridge_mtu",label:"MTU",defaultValue:"",children:s.jsx(n.Input,{type:"text"})}),v({formik:e,name:"bridge_hwaddr",label:"Hardware address",defaultValue:"",children:s.jsx(n.Input,{type:"text"})}),...e.values.networkType===U?[v({formik:e,name:"bridge_driver",label:"Driver",defaultValue:"",children:s.jsx(n.Select,{options:[{label:"Select option",value:"",disabled:!0},{label:"Native",value:"native"},{label:"Openvswitch",value:"openvswitch"}]})}),v({formik:e,name:"bridge_external_interfaces",label:"External interfaces",defaultValue:"",hideOverrideBtn:t&&e.values.bridge_external_interfaces==="set",children:t?s.jsx(ue,{formik:e,placeholder:"Enter interface name"}):s.jsx(n.Input,{type:"text"}),readOnlyRenderer:d=>t&&d!=="-"&&d!==void 0?s.jsx(ue,{formik:e,placeholder:"Enter interface name"},JSON.stringify(e.values.bridge_external_interfaces_per_member??{})):s.jsx(s.Fragment,{children:d})})]:[]]);return l.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(X),children:"Bridge"}),s.jsx(M,{rows:l})]})},fe=({formik:e,filterRows:a})=>{const t=a([...e.values.networkType!==g?[v({formik:e,name:"dns_domain",label:"DNS domain",defaultValue:"",children:s.jsx(n.Input,{type:"text"})})]:[],...e.values.networkType===U?[v({formik:e,name:"dns_mode",label:"DNS mode",defaultValue:"",children:s.jsx(n.Select,{options:[{label:"Select option",value:"",disabled:!0},{label:"None",value:"none"},{label:"Managed",value:"managed"},{label:"Dynamic",value:"dynamic"}]})})]:[],...e.values.networkType===g?[v({formik:e,name:"dns_nameservers",label:"DNS nameservers",defaultValue:"",children:s.jsx(n.Input,{type:"text"})})]:[v({formik:e,name:"dns_search",label:"DNS search",defaultValue:"",children:s.jsx(n.Textarea,{})})]]);return t.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(z),children:"DNS"}),s.jsx(M,{rows:t})]})},ke=({formik:e,filterRows:a})=>{const t=e.values.ipv4_dhcp!=="false",l=a([...e.values.networkType!==g?[v({formik:e,name:"ipv4_nat",label:"IPv4 NAT",defaultValue:"",children:s.jsx(n.Select,{options:P}),disabled:e.values.ipv4_address==="none",disabledReason:"IPv4 address is set to none"})]:[],...e.values.networkType!==g?[v({formik:e,name:"ipv4_dhcp",label:"IPv4 DHCP",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[],...e.values.networkType!==I&&e.values.networkType!==g?[v({formik:e,name:"ipv4_dhcp_expiry",label:"IPv4 DHCP expiry",defaultValue:"",disabled:!t,disabledReason:"IPv4 DHCP is disabled",children:s.jsx(n.Input,{type:"text"})}),v({formik:e,name:"ipv4_dhcp_ranges",label:"IPv4 DHCP ranges",defaultValue:"",disabled:!t,disabledReason:"IPv4 DHCP is disabled",children:s.jsx(n.Textarea,{})})]:[],...e.values.networkType===I?[v({formik:e,name:"ipv4_l3only",label:"IPv4 L3 only",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[],...e.values.networkType!==I?[v({formik:e,name:"ipv4_ovn_ranges",label:"IPv4 OVN ranges",defaultValue:"",children:s.jsx(n.Textarea,{})})]:[],...[U,g].includes(e.values.networkType)?[v({formik:e,name:"ipv4_routes",label:"IPv4 routes",defaultValue:"",children:s.jsx(n.Textarea,{})})]:[],...e.values.networkType===g?[v({formik:e,name:"ipv4_gateway",label:"IPv4 gateway",defaultValue:"",children:s.jsx(n.Textarea,{})}),v({formik:e,name:"ipv4_routes_anycast",label:"IPv4 routes anycast",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[]]);return l.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(Z),children:"IPv4"}),s.jsx(M,{rows:l})]})},es=({formik:e,filterRows:a})=>{const t=e.values.ipv6_dhcp!=="false",l=a([...e.values.networkType!==g?[v({formik:e,name:"ipv6_nat",label:"IPv6 NAT",defaultValue:"",children:s.jsx(n.Select,{options:P}),disabled:e.values.ipv6_address==="none",disabledReason:"IPv6 address is set to none"})]:[],...e.values.networkType!==g?[v({formik:e,name:"ipv6_dhcp",label:"IPv6 DHCP",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[],...e.values.networkType!==I&&e.values.networkType!==g?[v({formik:e,name:"ipv6_dhcp_expiry",label:"IPv6 DHCP expiry",defaultValue:"",disabled:!t,disabledReason:"IPv6 DHCP is disabled",children:s.jsx(n.Input,{type:"text"})}),v({formik:e,name:"ipv6_dhcp_ranges",label:"IPv6 DHCP ranges",defaultValue:"",disabled:!t,disabledReason:"IPv6 DHCP is disabled",children:s.jsx(n.Textarea,{})})]:[],...e.values.networkType!==g?[v({formik:e,name:"ipv6_dhcp_stateful",label:"IPv6 DHCP stateful",defaultValue:"",disabled:!t,disabledReason:"IPv6 DHCP is disabled",children:s.jsx(n.Select,{options:P})})]:[],...e.values.networkType===I?[v({formik:e,name:"ipv6_l3only",label:"IPv6 L3 only",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[],...e.values.networkType!==I?[v({formik:e,name:"ipv6_ovn_ranges",label:"IPv6 OVN ranges",defaultValue:"",children:s.jsx(n.Textarea,{})})]:[],...[U,g].includes(e.values.networkType)?[v({formik:e,name:"ipv6_routes",label:"IPv6 routes",defaultValue:"",children:s.jsx(n.Textarea,{})})]:[],...e.values.networkType===g?[v({formik:e,name:"ipv6_gateway",label:"IPv6 gateway",defaultValue:"",children:s.jsx(n.Textarea,{})}),v({formik:e,name:"ipv6_routes_anycast",label:"IPv6 routes anycast",defaultValue:"",children:s.jsx(n.Select,{options:P})})]:[]]);return l.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(f),children:"IPv6"}),s.jsx(M,{rows:l})]})},ss=({formik:e,filterRows:a})=>{const t=a([v({formik:e,name:"ovn_ingress_mode",label:"OVN ingress mode",defaultValue:"",children:s.jsx(n.Select,{options:[{label:"Select option",value:"",disabled:!0},{label:"l2proxy",value:"l2proxy"},{label:"routed",value:"routed"}]})})]);return t.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(k),children:"OVN"}),s.jsx(M,{rows:t})]})},as=({formik:e,project:a,isServerClustered:t})=>{const{member:l}=G(),d=n.useNotify(),[r,h]=F.useState(!0),[o,c]=F.useState(!0),_=e.values.bareNetwork;if(!_)return;const T=t&&Ie.includes(_.type),{data:V=[],error:j}=ee(a);F.useEffect(()=>{j&&d.failure("Loading networks failed",j)},[j]);const x=V.filter(p=>{var b;return p.config.network===e.values.name||p.config.parent===e.values.name||((b=_.used_by)==null?void 0:b.includes(`/1.0/networks/${encodeURIComponent(p.name)}`))}),u=ve("instance",_.used_by),N=e.values.parent??e.values.network,E=Object.keys(e.values.parentPerClusterMember??{}).map(p=>{var L;const b=(L=e.values.parentPerClusterMember)==null?void 0:L[p];return b?s.jsxs("div",{className:"uplink-item",children:[s.jsx("span",{className:"has-descendents",children:s.jsx(R,{type:"cluster-member",value:p,to:`/ui/project/${encodeURIComponent(a)}/networks?member=${encodeURIComponent(p)}`})}),s.jsx(R,{type:"network",value:b,to:`/ui/project/${encodeURIComponent(a)}/member/${encodeURIComponent(p)}/network/${encodeURIComponent(b)}`})]},p):null}),w=N??E.filter(p=>p!==null).length>0;return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"p-heading--4",id:m(Pe),children:"Connections"}),s.jsxs("div",{className:"u-sv3 network-topology",children:[w&&s.jsx("div",{className:"uplink",children:T?E:N&&s.jsx("div",{className:"uplink-item has-parent",children:s.jsx(R,{type:"network",value:N,to:`/ui/project/default/network/${encodeURIComponent(N)}`})})}),s.jsxs("div",{className:W("current-network",{"has-descendents":u.length>0||x.length>0,"has-parent":w}),children:[l&&s.jsx("span",{className:"has-descendents",children:s.jsx(R,{type:"cluster-member",value:l,to:`/ui/project/${encodeURIComponent(a)}/networks?member=${encodeURIComponent(l)}`})}),s.jsxs("div",{className:"p-chip is-inline is-dense resource-link active-chip",title:_.name,children:[s.jsx(n.Icon,{name:"exposed",light:!0}),s.jsx("span",{className:"p-chip__value",children:_.name})]})]}),s.jsxs("div",{className:"downstream",children:[x.slice(0,r?5:x.length).map(p=>{const b=`/ui/project/default/network/${encodeURIComponent(p.name)}`;return s.jsx("div",{className:W("downstream-item",{"has-descendents":(p.used_by??[]).length>0}),children:s.jsx(R,{type:"network",value:p.name,to:b})},b)}),x.length>5&&r&&s.jsx("div",{className:"downstream-item",children:s.jsx(n.Button,{appearance:"link",onClick:()=>{h(!1)},small:!0,children:"Show all"})}),u.slice(0,o?5:u.length).map(p=>{const b=`/ui/project/${encodeURIComponent(p.project)}/instance/${encodeURIComponent(p.name)}`,L=`/ui/project/${encodeURIComponent(p.project)}`,$=p.project!==a;return s.jsxs("div",{className:"downstream-item",children:[$&&s.jsxs(s.Fragment,{children:[s.jsx(R,{type:"project",value:p.project,to:L})," ","/"," "]}),s.jsx(R,{type:"instance",value:p.name,to:b})]},b)}),u.length>5&&o&&s.jsx("div",{className:"downstream-item",children:s.jsx(n.Button,{appearance:"link",onClick:()=>{c(!1)},small:!0,children:"Show all"})})]})]})]})},xs=e=>{var r;const a=new Set(["used_by","etag","status","locations","managed","name","description","config","type"]),t=Object.fromEntries(Object.entries(e.bareNetwork??{}).filter(h=>!a.has(h[0]))),l=Ce(),d=Object.fromEntries(Object.entries(((r=e.bareNetwork)==null?void 0:r.config)??{}).filter(h=>!l.has(h[0])));return{...t,name:e.name,description:e.description,type:e.networkType,config:{...d,[i("bridge_driver")]:e.bridge_driver,[i("bridge_external_interfaces")]:Object.keys(e.bridge_external_interfaces_per_member??{}).length===0?e.bridge_external_interfaces:void 0,[i("bridge_hwaddr")]:e.bridge_hwaddr,[i("bridge_mtu")]:e.bridge_mtu,[i("dns_domain")]:e.dns_domain,[i("dns_mode")]:e.dns_mode,[i("dns_nameservers")]:e.dns_nameservers,[i("dns_search")]:e.dns_search,[i("gvrp")]:e.gvrp,[i("ipv4_address")]:e.ipv4_address,[i("ipv4_dhcp")]:e.ipv4_dhcp,[i("ipv4_dhcp_expiry")]:e.ipv4_dhcp_expiry,[i("ipv4_dhcp_ranges")]:e.ipv4_dhcp_ranges,[i("ipv4_l3only")]:e.ipv4_l3only,[i("ipv4_nat")]:e.ipv4_nat,[i("ipv4_nat_address")]:e.ipv4_nat_address,[i("ipv4_ovn_ranges")]:e.ipv4_ovn_ranges,[i("ipv4_gateway")]:e.ipv4_gateway,[i("ipv4_routes")]:e.ipv4_routes,[i("ipv4_routes_anycast")]:e.ipv4_routes_anycast,[i("ipv6_address")]:e.ipv6_address,[i("ipv6_dhcp")]:e.ipv6_dhcp,[i("ipv6_dhcp_expiry")]:e.ipv6_dhcp_expiry,[i("ipv6_dhcp_ranges")]:e.ipv6_dhcp_ranges,[i("ipv6_dhcp_stateful")]:e.ipv6_dhcp_stateful,[i("ipv6_l3only")]:e.ipv6_l3only,[i("ipv6_nat")]:e.ipv6_nat,[i("ipv6_nat_address")]:e.ipv6_nat_address,[i("ipv6_ovn_ranges")]:e.ipv6_ovn_ranges,[i("ipv6_gateway")]:e.ipv6_gateway,[i("ipv6_routes")]:e.ipv6_routes,[i("ipv6_routes_anycast")]:e.ipv6_routes_anycast,[i("mtu")]:e.mtu?e.mtu.toString():void 0,[i("network")]:e.network,[i("ovn_ingress_mode")]:e.ovn_ingress_mode,[i("parent")]:e.parent,[i("security_acls")]:e.security_acls.length>0?e.security_acls.join(","):void 0,[i("vlan")]:e.vlan?e.vlan.toString():void 0}}},bs=(e,a)=>!e.isValid||!e.values.name||e.values.networkType===I&&!e.values.network||_e.includes(e.values.networkType)&&!e.values.parent&&Object.values(e.values.parentPerClusterMember??{}).filter(t=>t.length>0).length!==a.length,ys=({formik:e,getYaml:a,project:t,section:l,setSection:d,version:r=0})=>{var $,se,ae,ne,te,le,de,ie;const h=n.useNotify(),o=ge(),[c,_]=F.useState(""),[T,V]=F.useState(!1),j=y=>{if(!c)return y;const B=y.filter(H=>{var q,K;return(K=(q=H.name)==null?void 0:q.toString())==null?void 0:K.toLowerCase().includes(c)});return B.length>0&&V(!1),B},x=(($=e.values.bareNetwork)==null?void 0:$.managed)??!0,u=[xe],N=e.values.ipv4_address!=="none",E=e.values.ipv6_address!=="none",w=e.values.networkType===D,p=e.values.networkType===g,b=e.values.networkType===A;x&&!p&&!w&&!b&&u.push(X),x&&N&&!w&&!b&&u.push(Z),x&&E&&!w&&!b&&u.push(f),x&&!w&&!b&&u.push(z),x&&p&&u.push(k),F.useEffect(()=>{const y=document.getElementById("content-details"),B=()=>{const q=u.map(m),K=Be(q,y);d(K,"scroll")},H=()=>{Te(B,20)};return y==null||y.addEventListener("scroll",H),()=>y==null?void 0:y.removeEventListener("scroll",H)},[u]);const L=((se=e.values.bareNetwork)==null?void 0:se.managed)===!1;return s.jsxs("div",{className:"network-form",children:[s.jsxs(n.ScrollableContainer,{className:"contents",dependencies:[h.notification],belowIds:["form-footer","status-bar"],children:[!e.values.isCreating&&c.length<1&&l!==m(Y)&&s.jsx(as,{formik:e,project:t,isServerClustered:o}),s.jsxs(n.Form,{className:"sections",onSubmit:e.handleSubmit,children:[l!==m(Y)&&s.jsxs(s.Fragment,{children:[s.jsx(n.Input,{type:"submit",hidden:!0,value:"Hidden input"}),c.length<1&&s.jsx(ze,{formik:e,project:t,isClustered:o},`main-${(ae=e.values.bareNetwork)==null?void 0:ae.name}`),u.includes(X)&&s.jsx(Ze,{formik:e,filterRows:j},`bridge-${(ne=e.values.bareNetwork)==null?void 0:ne.name}`),u.includes(Z)&&s.jsx(ke,{formik:e,filterRows:j},`ipv4-${(te=e.values.bareNetwork)==null?void 0:te.name}`),u.includes(f)&&s.jsx(es,{formik:e,filterRows:j},`ipv6-${(le=e.values.bareNetwork)==null?void 0:le.name}`),u.includes(z)&&s.jsx(fe,{formik:e,filterRows:j},`dns-${(de=e.values.bareNetwork)==null?void 0:de.name}`),u.includes(k)&&s.jsx(ss,{formik:e,filterRows:j},`ovn-${(ie=e.values.bareNetwork)==null?void 0:ie.name}`)]}),l===m(Y)&&s.jsx(Se,{yaml:a(),setYaml:y=>{C(e),e.setFieldValue("yaml",y)},readOnly:!!e.values.editRestriction||L,readOnlyMessage:L?"Unmanaged networks are read only":e.values.editRestriction,children:s.jsx($e,{entity:"network",docPath:"/explanation/networks/#managed-networks"})},`yaml-form-${r}`),T&&s.jsx("div",{children:"No configuration found matching this search."})]})]}),l!==m(Y)&&u.length>1&&s.jsxs("div",{className:"aside",children:[s.jsx(n.SearchBox,{onChange:y=>{_(y),V(!0)},value:c,name:"search-setting",type:"text",placeholder:"Search for key"}),s.jsx(Re,{active:l,setActive:y=>{d(y,"click")},formik:e,availableSections:u})]})]})};export{ys as N,bs as i,xs as t};
Copyright ©2k19 -
Hexid
|
Tex7ure