Your IP : 216.73.216.189


Current Path : /proc/thread-self/root/snap/lxd/39313/share/lxd-ui/assets/
Upload File :
Current File : //proc/thread-self/root/snap/lxd/39313/share/lxd-ui/assets/NetworkAclDetail-Dt8w0mTi.js

import{u as H,B as O,d as r,t as B,r as $,c as D,a1 as K,O as Y,K as E,J as U,j as e,s as M,y as k,R as b,w as R,f as V,h as G,E as P,k as _,v as S,L as z,a5 as L,I as J,b3 as W}from"./index-BFGypnt-.js";import{R as X}from"./RenameHeader-yxEpJNaX.js";import{d as Z,f as ee,r as te,u as ne}from"./network-acls-DPo6Eh5Y.js";import{G as A,Y as v}from"./NetworkFormMenu-CXUwfE9b.js";import{F as se}from"./FormFooterLayout-CMGxv4XX.js";import{y as ae,d as oe,o as ie}from"./YamlSwitch-BQqYYI1i.js";import{F as re}from"./FormSubmitBtn-NpEQWJ3F.js";import{t as T,N as ce}from"./NetworkAclForm-Co7VPReH.js";import{u as le}from"./useNetworkAcls-DNeSgtR0.js";import"./FormMenuItem-fhYfVpHc.js";import"./formChangeCount-Dw7v2KcL.js";import"./AutoExpandingTextArea-WEdimI5c.js";import"./UsedByRow-oKHc8A5r.js";import"./UsedByItem-DETYWHDN.js";import"./useImages-DavKpFTt.js";import"./images-C6WqBeZG.js";import"./image-registries-YAuyq4CZ.js";import"./ProfileRichChip-XiLIeCE5.js";import"./ProfileResourceLimits-DkY60ueM.js";import"./useProfiles-CErbukD2.js";import"./ProjectRichChip-CtiU36yR.js";import"./ExpandableList-DK5_MQFC.js";const I=()=>{const{isFineGrained:t}=H();return{canDeleteNetworkAcl:o=>O(t,"can_delete",o?.access_entitlements),canEditNetworkAcl:o=>O(t,"can_edit",o?.access_entitlements)}},de=({networkAcl:t,project:s})=>{const a=r.useNotify(),o=r.useToastNotification(),d=B(),[c,h]=$.useState(!1),g=D(),x=K(),y=Y(),{canDeleteNetworkAcl:p}=I(),{hasStorageAndNetworkOperations:N}=E(),f=U(),u=()=>{d.invalidateQueries({predicate:i=>i.queryKey[0]===R.projects&&i.queryKey[1]===s&&i.queryKey[2]===R.networkAcls})},j=()=>{u();const i=`${b}/ui/project/${encodeURIComponent(s)}/network-acl/${encodeURIComponent(t.name)}`;x.pathname.startsWith(i)&&g(`${b}/ui/project/${encodeURIComponent(s)}/network-acls`),o.success(e.jsxs(e.Fragment,{children:["Network ACL"," ",e.jsx(k,{bold:!0,type:"network-acl",value:t.name})," ","deleted."]}))},C=i=>{u(),h(!1),a.failure(`Deletion of network ACL ${t.name} failed`,i)},n=()=>{h(!0),Z(t.name,s).then(i=>{N?(o.info(e.jsxs(e.Fragment,{children:["Deletion of Network ACL"," ",e.jsx(k,{bold:!0,type:"network-acl",value:t.name})," ","has started."]})),f.set(i.metadata.id,()=>{j()},m=>{C(new Error(m))})):j()}).catch(i=>{C(i)})},l=(t.used_by?.length??0)>0,w=()=>p(t)?l?"Can not delete, ACL is currently in use":"":"You do not have permission to delete this ACL";return e.jsxs(r.ConfirmationButton,{onHoverText:w(),confirmationModalProps:{title:"Confirm delete",confirmButtonAppearance:"negative",confirmButtonLabel:"Delete",children:e.jsxs("p",{children:["Are you sure you want to delete the ACL"," ",e.jsx(k,{type:"network-acl",value:t.name,bold:!0}),"?",e.jsx("br",{}),"This action cannot be undone, and can result in data loss."]}),onConfirm:n},className:M("u-no-margin--bottom",{"has-icon":!y}),loading:c,disabled:!p(t)||l||c,shiftClickEnabled:!0,showShiftClickHint:!0,children:[!y&&e.jsx(r.Icon,{name:"delete"}),e.jsx("span",{children:"Delete ACL"})]})},me=({networkAcl:t,project:s})=>{const a=Y(),o=r.useToastNotification(),d=()=>{ee(t.name,s).then(c=>{const h=new Blob([c],{type:"text/plain"}),g=URL.createObjectURL(h),x=new Date().toISOString().replaceAll(":","-").split(".")[0],y=`${t.name}-${x}.log`,p=document.createElement("a");p.href=g,p.download=y,p.click(),window.URL.revokeObjectURL(g),o.success(e.jsxs(e.Fragment,{children:["Logs download for ACL"," ",e.jsx(k,{bold:!0,type:"network-acl",value:t.name})," ","started."]}))}).catch(c=>{o.failure(`Failed to download logs for ACL ${t.name}`,c)})};return e.jsxs(r.Button,{appearance:"",type:"button",onClick:d,hasIcon:!0,children:[!a&&e.jsx(r.Icon,{name:"begin-downloading"}),e.jsx("span",{children:"Download logs"})]})},ue=({name:t,networkAcl:s,project:a})=>{const o=D(),d=r.useNotify(),c=r.useToastNotification(),h=$.useState(null),{canEditNetworkAcl:g}=I(),{hasStorageAndNetworkOperations:x}=E(),y=U(),p=V().shape({name:G().test("deduplicate","An ACL with this name already exists",async n=>s?.name===n||P(n,a,h,"network-acls")).required("ACL name is required")}),N=(n,l)=>{o(l),c.success(e.jsxs(e.Fragment,{children:["Network ACL ",e.jsx("strong",{children:t})," renamed to"," ",e.jsx(S,{type:"network-acl",value:n,to:l}),"."]})),u.setFieldValue("isRenaming",!1)},f=(n,l)=>{d.failure(`Renaming of network ACL ${n} failed`,l)},u=_({initialValues:{name:t,isRenaming:!1},validationSchema:p,onSubmit:n=>{if(t===n.name){u.setFieldValue("isRenaming",!1),u.setSubmitting(!1);return}te(t,n.name,a).then(l=>{const w=`${b}/ui/project/${encodeURIComponent(a)}/network-acl/${encodeURIComponent(n.name)}`;x?(c.info(e.jsxs(e.Fragment,{children:["Renaming of Network ACL ",e.jsx("strong",{children:t})," to"," ",e.jsx(S,{type:"network-acl",value:n.name,to:w})," ","has started."]})),y.set(l.metadata.id,()=>{N(n.name,w)},i=>{f(n.name,new Error(i))})):N(n.name,w)}).catch(l=>{f(n.name,l)}).finally(()=>{u.setSubmitting(!1)})}}),j=(s?.used_by?.length??0)>0,C=()=>{if(!g(s))return"You do not have permission to rename this ACL";if(j)return"Can not rename, ACL is currently in use."};return e.jsx(X,{name:t,parentItems:[e.jsx(z,{to:`${b}/ui/project/${encodeURIComponent(a)}/network-acls`,children:"Network Access Control Lists"},1)],renameDisabledReason:C(),controls:s&&e.jsxs(e.Fragment,{children:[e.jsx(me,{networkAcl:s,project:a}),e.jsx(de,{networkAcl:s,project:a})]}),isLoaded:!!s,formik:u})},pe=({networkAcl:t,project:s})=>{const a=D(),o=r.useNotify(),d=r.useToastNotification(),[c,h]=$.useState(L(A)),{canEditNetworkAcl:g}=I(),{hasStorageAndNetworkOperations:x}=E(),y=U(),p=B(),N={readOnly:!0,isCreating:!1,name:t.name,description:t.description,egress:t.egress,ingress:t.ingress,bareAcl:t,entityType:"network-acl",editRestriction:g(t)?void 0:"You do not have permission to edit this ACL"},f=`${b}/ui/project/${encodeURIComponent(s)}/network-acl/${encodeURIComponent(t.name)}`,u=()=>{p.invalidateQueries({queryKey:[R.projects,s,R.networkAcls,t.name]})},j=()=>{u(),d.success(e.jsxs(e.Fragment,{children:["Network ACL"," ",e.jsx(S,{type:"network-acl",value:t.name,to:f})," ","updated."]}))},C=m=>{u(),o.failure(`Update of network ACL ${t.name} failed`,m)},n=_({initialValues:N,enableReinitialize:!0,onSubmit:m=>{const q=m.yaml?ae(m.yaml):T(n.values,t);ne(q,s).then(F=>{x?(d.info(e.jsxs(e.Fragment,{children:["Update of Network ACL"," ",e.jsx(S,{type:"network-acl",value:t.name,to:f})," ","has started."]})),y.set(F.metadata.id,()=>{j()},Q=>{C(new Error(Q))})):j()}).catch(F=>{C(F)}).finally(()=>{n.setSubmitting(!1)})}}),l=m=>{a(m===A?f:`${f}/#${L(m)}`),h(L(m))},w=()=>{const m=T(n.values,t);return ie(m)},i=n.values.readOnly;return e.jsxs(e.Fragment,{children:[e.jsx(ce,{formik:n,section:c,getYaml:w}),e.jsxs(se,{children:[e.jsx(oe,{formik:n,section:c,setSection:()=>{l(c===L(v)?A:v)}}),i?null:e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{appearance:"base",onClick:()=>{n.setValues(N)},children:"Cancel"}),e.jsx(re,{formik:n,baseUrl:f,disabled:!1,isYaml:c===L(v)})]})]})]})},Oe=()=>{const{name:t,project:s}=J();if(!t)return e.jsx(e.Fragment,{children:"Missing name"});if(!s)return e.jsx(e.Fragment,{children:"Missing project"});const{data:a,error:o,isLoading:d}=le(t,s);return d?e.jsx(r.Spinner,{className:"u-loader",text:"Loading...",isMainComponent:!0}):e.jsxs(r.CustomLayout,{header:e.jsx(ue,{networkAcl:a,project:s,name:t}),contentClassName:"edit-network-acl",children:[!d&&!a&&e.jsx(W,{entityType:"network-acl",entityName:t,errorMessage:o?.message}),!d&&a&&e.jsx(r.Row,{children:e.jsx(pe,{networkAcl:a,project:s})})]})};export{Oe as default};