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/ClusterMemberActions-8mtBmWkr.js

import{d as s,r as y,v as F,E as L,B as k,y as _,j as e,s as w,z as B,F as G,x as p,D as P,k as R,G as T,p as q,H as K,I as Q}from"./index-BsQN_SZU.js";import{a as b}from"./ClusterMemberRichChip-Di9w-E3M.js";import{u as I,p as A}from"./usePanelParams-CNAJZsSX.js";import{G as V}from"./GroupSelection-BCidmw-m.js";import{b as D}from"./useClusterGroups-BmTnhLw-.js";const H=({member:t,hasLabel:o=!1,className:u,onClose:d})=>{const l=s.useNotify(),a=s.useToastNotification(),[m,h]=y.useState(!1),[n,f]=y.useState(""),g=F(),v=L(),c=k().getType(t.server_name),{canEditServerConfiguration:x}=_(),j=()=>{g.invalidateQueries({queryKey:[p.cluster],predicate:r=>r.queryKey[0]===p.cluster||r.queryKey[0]===p.operations})},S=()=>{a.success(e.jsxs(e.Fragment,{children:["Member ",e.jsx(b,{clusterMember:t.server_name})," ","evacuation completed."]}))},M=r=>{a.failure("Member evacuation failed",new Error(r),e.jsx(b,{clusterMember:t.server_name}))},E=()=>{h(!0),G(t,"evacuate",n).then(r=>{a.info(e.jsxs(e.Fragment,{children:["Member ",e.jsx(b,{clusterMember:t.server_name})," ","evacuation started."]})),v.set(r.metadata.id,S,M,j),d?.()}).catch(r=>{l.failure("Member evacuation failed",r)}).finally(()=>{h(!1),j()})},C=x(),N=m||t.status!=="Online"||!!c||!C;return e.jsxs(s.ConfirmationButton,{appearance:o?"":"base",loading:m||c==="Evacuating",disabled:N,confirmationModalProps:{title:"Confirm evacuation",children:e.jsxs(e.Fragment,{children:[e.jsx(s.Select,{label:"Evacuation action",options:[{label:"Auto",value:""},{label:"Stop all instances",value:"stop"},{label:"Migrate instances to other members",value:"migrate"},{label:"Live migrate instances to other members",value:"live-migrate"}],help:"Chose what to do with instances on this member.",onChange:r=>{f(r.target.value)},value:n}),e.jsxs("p",{children:["This will evacuate cluster member"," ",e.jsx(B,{type:"cluster-member",value:t.server_name,bold:!0}),"."]})]}),confirmButtonLabel:C?"Evacuate cluster member":"You do not have permission to evacuate cluster members",onConfirm:E},shiftClickEnabled:!0,title:"Evacuate cluster member",className:w(u,"has-icon u-no-margin--bottom"),children:[e.jsx(s.Icon,{name:"stop"}),o&&e.jsx("span",{children:"Evacuate"})]})},O=({member:t,hasLabel:o=!1,className:u,onClose:d})=>{const l=s.useNotify(),a=s.useToastNotification(),[m,h]=y.useState(!1),[n,f]=y.useState(""),g=F(),v=L(),c=k().getType(t.server_name),{canEditServerConfiguration:x}=_(),j=()=>{g.invalidateQueries({queryKey:[p.cluster],predicate:r=>r.queryKey[0]===p.cluster||r.queryKey[0]===p.operations})},S=()=>{a.success(e.jsxs(e.Fragment,{children:["Member ",e.jsx(b,{clusterMember:t.server_name})," ","restore completed."]}))},M=r=>{a.failure("Member restore failed",new Error(r),e.jsx(b,{clusterMember:t.server_name}))},E=()=>{h(!0),G(t,"restore",n).then(r=>{a.info(e.jsxs(e.Fragment,{children:["Member ",e.jsx(b,{clusterMember:t.server_name})," ","restore started."]})),v.set(r.metadata.id,S,M,j),d?.()}).catch(r=>{l.failure("Member restore failed",r)}).finally(()=>{h(!1),j()})},C=x(),N=m||t.status!=="Evacuated"||!!c||!C;return e.jsxs(s.ConfirmationButton,{appearance:o?"":"base",loading:m||c==="Restoring",disabled:N,confirmationModalProps:{title:"Confirm restore",children:e.jsxs(e.Fragment,{children:[e.jsx(s.CheckboxInput,{label:"Restore instances",onChange:()=>{f(n===""?"skip":"")},checked:n===""}),e.jsx("p",{className:"p-form-help-text",children:"Chose whether to restore instances that were stopped or migrated"}),e.jsxs("p",{children:["This will restore cluster member"," ",e.jsx(B,{type:"cluster-member",value:t.server_name,bold:!0}),"."]})]}),confirmButtonLabel:C?"Restore cluster member":"You do not have permission to restore cluster members",onConfirm:E,confirmButtonAppearance:"positive"},shiftClickEnabled:!0,title:"Restore cluster member",className:w(u,"has-icon u-no-margin--bottom"),children:[e.jsx(s.Icon,{name:"play"}),o&&e.jsx("span",{children:"Restore"})]})},Y=({onClose:t})=>{const o=I(),u=s.useNotify(),d=s.useToastNotification(),l=F(),{data:a}=P(o.member??""),{data:m=[]}=D(),h=()=>{o.clear(),u.clear(),t?.()},n=R({initialValues:{name:a?.server_name??"",description:a?.description??"",failureDomain:a?.failure_domain??"",groups:a?.groups??[]},enableReinitialize:!0,onSubmit:i=>{const c={server_name:i.name,description:i.description,failure_domain:i.failureDomain,groups:i.groups,roles:a?.roles};T(c).then(()=>{d.success(e.jsxs(e.Fragment,{children:["Cluster member"," ",e.jsx(b,{clusterMember:i.name})," saved."]})),h()}).catch(x=>{u.failure("Cluster member update failed",x)}).finally(()=>{n.setSubmitting(!1),l.invalidateQueries({queryKey:[p.cluster,p.members]}),l.invalidateQueries({queryKey:[p.cluster,p.members,i.name]})})}}),f=n.values.groups.filter(i=>!a?.groups?.includes(i)||!1),g=a?.groups?.filter(i=>!n.values.groups.includes(i))??[],v=new Set([...f,...g]);return e.jsxs(s.SidePanel,{children:[e.jsx(s.SidePanel.Header,{children:e.jsxs(s.SidePanel.HeaderTitle,{children:["Edit cluster member ",o.member]})}),e.jsx(q,{className:"u-no-padding"}),e.jsx(s.SidePanel.Content,{className:"u-no-padding",children:e.jsx(s.ScrollableContainer,{dependencies:[u.notification],belowIds:["panel-footer"],children:e.jsxs(s.Form,{onSubmit:n.handleSubmit,children:[e.jsx(s.Input,{type:"submit",hidden:!0,value:"Hidden input"}),e.jsx(s.Input,{...n.getFieldProps("description"),type:"text",label:"Description",placeholder:"Enter description"}),e.jsx(s.Input,{...n.getFieldProps("failureDomain"),type:"text",label:"Failure domain",placeholder:"Enter failure domain"}),e.jsx("p",{className:"u-sv-1",children:"Cluster groups"}),e.jsx(V,{groups:m,modifiedGroups:v,parentItemName:"member",parentItems:[{name:n.values.name}],selectedGroups:new Set(n.values.groups),setSelectedGroups:(i,c)=>{c?n.setFieldValue("groups",[]):n.setFieldValue("groups",i)},preselectedGroups:new Set(a?.groups??[]),indeterminateGroups:new Set,toggleGroup:i=>{const c=new Set([...n.values.groups]);c.has(i)?c.delete(i):c.add(i),n.setFieldValue("groups",[...c])},scrollDependencies:[u.notification]})]})})}),e.jsxs(s.SidePanel.Footer,{className:"u-align--right",children:[e.jsx(s.Button,{appearance:"base",onClick:h,className:"u-no-margin--bottom",children:"Cancel"}),e.jsx(s.ActionButton,{appearance:"positive",loading:n.isSubmitting,onClick:()=>{n.submitForm()},className:"u-no-margin--bottom",disabled:!n.isValid||n.isSubmitting||!n.values.name,children:"Save changes"})]})]})},z=({member:t,hasLabel:o=!1,className:u,onClose:d})=>{const l=I(),{canEditServerConfiguration:a}=_(),m=a();return e.jsxs(e.Fragment,{children:[e.jsxs(s.Button,{appearance:o?"":"base",className:w(u,"u-no-margin--bottom"),disabled:!m,onClick:()=>{l.openEditMember(t)},title:m?"Edit cluster member":"You do not have permission to edit cluster members",hasIcon:!0,children:[e.jsx(s.Icon,{name:"edit"}),o&&e.jsx("span",{children:"Edit"})]}),l.panel===A.editClusterMember&&l.member===t&&e.jsx(Y,{onClose:d})]})},$=({member:t,isDetailPage:o=!1})=>{const u=K(Q);if(!t)return null;const d=o?u?"p-contextual-menu__link":"p-segmented-control__button":"",l=[];return l.push(e.jsx(O,{member:t,hasLabel:o,className:d},"restore")),l.push(e.jsx(H,{member:t,hasLabel:o,className:d},"evacuate")),l.push(e.jsx(z,{member:t.server_name,hasLabel:o,className:d},"edit")),o?u?e.jsx(s.ContextualMenu,{closeOnOutsideClick:!1,toggleLabel:"Actions",position:"left",hasToggleIcon:!0,title:"actions",children:a=>e.jsx("span",{children:[...l].map(m=>y.cloneElement(m,{onClose:a}))})}):e.jsx("div",{className:"p-segmented-control",children:e.jsxs("div",{className:"p-segmented-control__list",children:[...l]})}):e.jsx(s.List,{inline:!0,className:"actions-list",items:l})};export{$ as C};