/
snap
/
lxd
/
current
/
share
/
lxd-ui
/
assets
/
File Upload :
llllll
Current File: //snap/lxd/current/share/lxd-ui/assets/ProjectForm-CXZGsrd5.js
import{j as t,d as a,bV as r,G as A,r as C,bR as T,R as V,e as B,V as g}from"./index-B3cgCbnJ.js";import{F as w,k as m,A as j,l,D as L,G as k}from"./FormMenuItem-BwEOqt61.js";import{A as G}from"./AutoExpandingTextArea-BmFqLvbw.js";import{S as $,o}from"./FormFooterLayout-ChlQYZN0.js";import{S as K}from"./StoragePoolSelector-_Ij9bIB_.js";import{N as Z}from"./NetworkSelector-DygdY6TH.js";import{b as q}from"./useNetworks-DC9cTd9P.js";import{D as S}from"./DiskSizeSelector-CIkNkBL4.js";import{b as J}from"./useClusterGroups-DvMC8idl.js";const I="Project details",F="Resource limits",N="Clusters",P="Instances",E="Device usage",D="Networks",W=({isRestrictionsOpen:e,toggleRestrictionsOpen:s,isRestrictionsDisabled:n,active:u,setActive:p})=>{const d={active:u,setActive:p};return t.jsx("div",{className:"p-side-navigation--accordion form-navigation",children:t.jsx("nav",{"aria-label":"Project form navigation",children:t.jsxs("ul",{className:"p-side-navigation__list",children:[t.jsx(w,{label:I,...d}),t.jsx(w,{label:F,...d}),t.jsxs("li",{className:"p-side-navigation__item",children:[t.jsx(a.Button,{type:"button",className:"p-side-navigation__accordion-button","aria-expanded":e?"true":"false",onClick:s,disabled:n,children:"Restrictions"}),t.jsxs("ul",{className:"p-side-navigation__list","aria-expanded":e?"true":"false",children:[t.jsx(w,{label:N,...d}),t.jsx(w,{label:P,...d}),t.jsx(w,{label:E,...d}),t.jsx(w,{label:D,...d})]})]})]})})})},_e=e=>({name:e.name,description:e.description}),pe=e=>{const s=n=>{if(n!==void 0)return n?"true":"false"};return{[r("restricted")]:s(e.restricted),[r("features_images")]:s(e.features_images),[r("features_profiles")]:s(e.features_profiles),[r("features_networks")]:s(e.features_networks),[r("features_networks_zones")]:s(e.features_networks_zones),[r("features_storage_buckets")]:s(e.features_storage_buckets),[r("features_storage_volumes")]:s(e.features_storage_volumes)}},X=({formik:e,project:s,isEdit:n})=>{const{hasProjectsNetworksZones:u,hasStorageBuckets:p}=A(),{data:d=[]}=q((s==null?void 0:s.name)||"default"),c=d.filter(_=>_.managed),h=()=>e.values.features_images===void 0&&e.values.features_profiles===void 0&&e.values.features_networks===void 0&&e.values.features_networks_zones===void 0&&e.values.features_storage_buckets===void 0&&e.values.features_storage_volumes===void 0?"default":e.values.features_images!==!0||e.values.features_profiles!==!0||e.values.features_networks!==!1||e.values.features_networks_zones!==!1||e.values.features_storage_buckets!==!0||e.values.features_storage_volumes!==!0?"customised":"default",[b,O]=C.useState(h()),v=e.values.name==="default",x=s?!T(s):!1,M=(s==null?void 0:s.config["features.networks"])==="true",R=(s==null?void 0:s.config["features.networks.zones"])==="true",z=b==="customised"&&!e.values.features_profiles,U=b==="customised"&&e.values.features_networks;return t.jsx($,{children:t.jsx(a.Row,{children:t.jsxs(a.Col,{size:12,children:[t.jsx(a.Input,{id:"name",name:"name",type:"text",label:"Project name",placeholder:"Enter name",onBlur:e.handleBlur,onChange:e.handleChange,value:e.values.name,error:e.touched.name?e.errors.name:null,disabled:e.values.name==="default"||n,help:n&&e.values.name!=="default"&&"Click the name in the header to rename the project",required:!0}),t.jsx(G,{id:"description",name:"description",label:"Description",placeholder:"Enter description",onBlur:e.handleBlur,onChange:_=>{m(e),e.handleChange(_)},value:e.values.description,disabled:!!e.values.editRestriction,title:e.values.editRestriction}),t.jsx(K,{value:e.values.default_instance_storage_pool,setValue:_=>void e.setFieldValue("default_instance_storage_pool",_),selectProps:{label:"Default instance storage pool",disabled:e.values.features_profiles===!1&&b==="customised"||n,help:n?t.jsxs(t.Fragment,{children:["Edit the storage pool in the"," ",t.jsx(V,{type:"profile",value:"default",to:`/ui/project/${encodeURIComponent((s==null?void 0:s.name)??"")}/profile/default`})," "," profile"]}):""}}),t.jsx(Z,{value:e.values.default_project_network,setValue:_=>void e.setFieldValue("default_project_network",_),hasNoneOption:!0,label:"Default profile network",disabled:z||U||n,managedNetworks:c,help:n?t.jsxs(t.Fragment,{children:["Configure networks in the"," ",t.jsx(V,{type:"profile",value:"default",to:`/ui/project/${encodeURIComponent((s==null?void 0:s.name)??"")}/profile/default`})," ","profile"]}):""}),t.jsxs("div",{title:e.values.editRestriction??(v?"Custom features are immutable on the default project":""),children:[t.jsx(a.Select,{id:"features",name:"features",label:"Features",onChange:_=>{m(e),O(_.target.value),e.setFieldValue("features_images",!0),e.setFieldValue("features_profiles",!0),e.setFieldValue("features_networks",!1),e.setFieldValue("features_networks_zones",!1),e.setFieldValue("features_storage_buckets",!0),e.setFieldValue("features_storage_volumes",!0)},value:b,options:[{label:"Default LXD",value:"default"},{label:"Customised",value:"customised"}],disabled:!!e.values.editRestriction||v||x&&M||x&&R}),b==="customised"&&t.jsxs(t.Fragment,{children:["Isolate the following features:",!v&&t.jsxs(t.Fragment,{children:[" ",t.jsx(a.Tooltip,{message:"Unselected features will be shared with the default project",children:t.jsx(a.Icon,{name:"information"})})]}),t.jsx(a.CheckboxInput,{id:"features_images",name:"features_images",label:"Images",onChange:()=>{m(e),e.setFieldValue("features_images",!e.values.features_images)},checked:e.values.features_images,disabled:!!e.values.editRestriction||v||x}),t.jsx(a.CheckboxInput,{id:"features_profiles",name:"features_profiles",label:"Profiles",onChange:()=>{m(e);const _=!e.values.features_profiles;e.setFieldValue("features_profiles",_),_||e.setFieldValue("restricted",!1)},checked:e.values.features_profiles,disabled:!!e.values.editRestriction||v||x}),t.jsx(a.CheckboxInput,{id:"features_networks",name:"features_networks",label:"Networks",onChange:()=>{m(e),e.setFieldValue("features_networks",!e.values.features_networks);const _=!e.values.features_networks;e.setFieldValue("features_networks",_),_&&!n&&e.setFieldValue("default_project_network","none")},checked:e.values.features_networks,disabled:!!e.values.editRestriction||v||x}),u&&t.jsx(a.CheckboxInput,{id:"features_networks_zones",name:"features_networks_zones",label:"Network zones",onChange:()=>{m(e),e.setFieldValue("features_networks_zones",!e.values.features_networks_zones)},checked:e.values.features_networks_zones,disabled:!!e.values.editRestriction||v||x&&R}),p&&t.jsx(a.CheckboxInput,{id:"features_storage_buckets",name:"features_storage_buckets",label:"Storage buckets",onChange:()=>{m(e),e.setFieldValue("features_storage_buckets",!e.values.features_storage_buckets)},checked:e.values.features_storage_buckets,disabled:!!e.values.editRestriction||v||x}),t.jsx(a.CheckboxInput,{id:"features_storage_volumes",name:"features_storage_volumes",label:"Storage volumes",onChange:()=>{m(e),e.setFieldValue("features_storage_volumes",!e.values.features_storage_volumes)},checked:e.values.features_storage_volumes,disabled:!!e.values.editRestriction||v||x})]})]}),t.jsx("hr",{}),t.jsx("div",{title:e.values.editRestriction,children:t.jsx(a.CheckboxInput,{id:"custom_restrictions",name:"custom_restrictions",label:t.jsxs(t.Fragment,{children:["Allow custom restrictions on a project level",t.jsx(a.Tooltip,{className:"checkbox-label-tooltip",message:`Custom restrictions are only available to projects with enabled profiles`,children:t.jsx(a.Icon,{name:"information"})})]}),onChange:()=>{m(e),e.setFieldValue("restricted",!e.values.restricted)},checked:e.values.restricted,disabled:!!e.values.editRestriction||e.values.features_profiles===!1&&b==="customised"})})]})})})},be=e=>{var s,n,u,p,d,c,h,b;return{[r("limits_instances")]:(s=e.limits_instances)==null?void 0:s.toString(),[r("limits_containers")]:(n=e.limits_containers)==null?void 0:n.toString(),[r("limits_virtual_machines")]:(u=e.limits_virtual_machines)==null?void 0:u.toString(),[r("limits_disk")]:(p=e.limits_disk)==null?void 0:p.toString(),[r("limits_networks")]:(d=e.limits_networks)==null?void 0:d.toString(),[r("limits_cpu")]:(c=e.limits_cpu)==null?void 0:c.toString(),[r("limits_memory")]:(h=e.limits_memory)==null?void 0:h.toString(),[r("limits_processes")]:(b=e.limits_processes)==null?void 0:b.toString()}},H=({formik:e})=>t.jsx(j,{rows:[l({formik:e,name:"limits_instances",label:"Max number of instances",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter number",min:0,type:"number"})}),l({formik:e,name:"limits_containers",label:"Max number of containers",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter number",min:0,type:"number"})}),l({formik:e,name:"limits_virtual_machines",label:"Max number of VMs",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter number",min:0,type:"number"})}),l({formik:e,name:"limits_disk",label:"Max disk space (used by all instances)",defaultValue:"",children:t.jsx(S,{setMemoryLimit:s=>void e.setFieldValue("limits_disk",s)})}),l({formik:e,name:"limits_networks",label:"Max number of networks",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter number",min:0,type:"number"})}),l({formik:e,name:"limits_cpu",label:"Max sum of CPU",defaultValue:"",children:t.jsx(L,{placeholder:"Enter number",type:"number"})}),l({formik:e,name:"limits_memory",label:"Max sum of memory limits",defaultValue:"",children:t.jsx(S,{setMemoryLimit:s=>void e.setFieldValue("limits_memory",s),helpTotal:t.jsx(k,{})})}),l({formik:e,name:"limits_processes",label:"Max sum of processes",defaultValue:"-",children:t.jsx(a.Input,{placeholder:"Enter number",min:0,type:"number"})})]}),i=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Block",value:"block"}],y=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Isolated",value:"isolated"},{label:"Unprivileged",value:"unprivileged"}],f=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Block",value:"block"},{label:"Managed",value:"managed"}],Q=({formik:e,help:s})=>{var d;const{data:n=[]}=J(),u=((d=e.values.restricted_cluster_groups)==null?void 0:d.split(",").filter(Boolean))??[],p=c=>{e.setFieldValue("restricted_cluster_groups",c.filter(Boolean).join(","))};return t.jsx("div",{className:"restricted-cluster-groups",children:t.jsx(a.MultiSelect,{id:"restricted_cluster_groups",help:s,items:n.map(c=>({label:c.name,value:c.name})),selectedItems:u.map(c=>({value:c,label:c})),onDeselectItem:c=>{p(u.filter(h=>h!==c.value))},onSelectItem:c=>{p(u.concat([c.value]))},onItemsUpdate:c=>{p(c.map(h=>h.value))},variant:"condensed"})})},he=e=>({[r("restricted_cluster_groups")]:e.restricted_cluster_groups,[r("restricted_cluster_target")]:e.restricted_cluster_target}),Y=({formik:e})=>t.jsx(j,{rows:[l({formik:e,name:"restricted_cluster_groups",label:"Cluster groups targeting",defaultValue:"",children:t.jsx(Q,{formik:e}),readOnlyRenderer:s=>{if(s==="-"||typeof s!="string")return s;const n=s.split(",").filter(Boolean);return t.jsx("span",{className:"restricted-cluster-groups",children:n==null?void 0:n.map(u=>t.jsx(V,{type:"cluster-group",value:u,to:"/ui/cluster/groups"},u))})}}),l({formik:e,name:"restricted_cluster_target",label:"Direct cluster targeting",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})})]}),ve=e=>({[r("restricted_virtual_machines_low_level")]:e.restricted_virtual_machines_low_level,[r("restricted_containers_low_level")]:e.restricted_containers_low_level,[r("restricted_containers_nesting")]:e.restricted_containers_nesting,[r("restricted_containers_privilege")]:e.restricted_containers_privilege,[r("restricted_container_interception")]:e.restricted_container_interception,[r("restrict_backups")]:e.restrict_backups,[r("restrict_snapshots")]:e.restrict_snapshots,[r("restricted_idmap_uid")]:e.restricted_idmap_uid,[r("restricted_idmap_gid")]:e.restricted_idmap_gid}),ee=({formik:e})=>t.jsx(j,{rows:[l({formik:e,name:"restricted_virtual_machines_low_level",label:"Low level VM operations",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_containers_low_level",label:"Low level container operations",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_containers_nesting",label:"Container nesting",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_containers_privilege",label:"Container privilege",defaultValue:"",readOnlyRenderer:s=>o(s,y),children:t.jsx(a.Select,{options:y})}),l({formik:e,name:"restricted_container_interception",label:"Container interception",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restrict_backups",label:"Backup creation",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restrict_snapshots",label:"Snapshot creation",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_idmap_uid",label:"Idmap UID",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter UID ranges",type:"text"})}),l({formik:e,name:"restricted_idmap_gid",label:"Idmap GID",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter GID ranges",type:"text"})})]}),me=e=>({[r("restricted_devices_disk")]:e.restricted_devices_disk,[r("restricted_devices_disk_paths")]:e.restricted_devices_disk_paths,[r("restricted_devices_gpu")]:e.restricted_devices_gpu,[r("restricted_devices_infiniband")]:e.restricted_devices_infiniband,[r("restricted_devices_nic")]:e.restricted_devices_nic,[r("restricted_devices_pci")]:e.restricted_devices_pci,[r("restricted_devices_unix_block")]:e.restricted_devices_unix_block,[r("restricted_devices_unix_char")]:e.restricted_devices_unix_char,[r("restricted_devices_unix_hotplug")]:e.restricted_devices_unix_hotplug,[r("restricted_devices_usb")]:e.restricted_devices_usb}),te=({formik:e})=>t.jsx(j,{rows:[l({formik:e,name:"restricted_devices_disk",label:t.jsxs(t.Fragment,{children:["Disk devices",t.jsx("br",{}),"(except the root one)"]}),defaultValue:"",readOnlyRenderer:s=>o(s,f),children:t.jsx(a.Select,{options:f})}),l({formik:e,name:"restricted_devices_disk_paths",label:"Disk devices path",defaultValue:"",children:t.jsx(a.Input,{placeholder:"Enter paths",type:"text"})}),l({formik:e,name:"restricted_devices_gpu",label:"GPU devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_infiniband",label:"Infiniband devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_nic",label:"Network devices",defaultValue:"",readOnlyRenderer:s=>o(s,f),children:t.jsx(a.Select,{options:f})}),l({formik:e,name:"restricted_devices_pci",label:"PCI devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_unix_block",label:"Unix-block devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_unix_char",label:"Unix-char devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_unix_hotplug",label:"Unix-hotplug devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})}),l({formik:e,name:"restricted_devices_usb",label:"USB devices",defaultValue:"",readOnlyRenderer:s=>o(s,i),children:t.jsx(a.Select,{options:i})})]}),xe=e=>({[r("restricted_network_access")]:e.restricted_network_access,[r("restricted_network_subnets")]:e.restricted_network_subnets,[r("restricted_network_uplinks")]:e.restricted_network_uplinks,[r("restricted_network_zones")]:e.restricted_network_zones}),se=({formik:e})=>t.jsx(j,{rows:[l({formik:e,name:"restricted_network_access",label:"Available networks",defaultValue:"",children:t.jsx(a.Textarea,{placeholder:"Enter network names"})}),l({formik:e,name:"restricted_network_subnets",label:"Network subnets",defaultValue:"",children:t.jsx(a.Textarea,{placeholder:"Enter network subnets"})}),l({formik:e,name:"restricted_network_uplinks",label:"Network uplinks",defaultValue:"",children:t.jsx(a.Textarea,{placeholder:"Enter network names"})}),l({formik:e,name:"restricted_network_zones",label:"Network zones",defaultValue:"",children:t.jsx(a.Textarea,{placeholder:"Enter network zones"})})]}),ge=({formik:e,updateSection:s,section:n,project:u,isEdit:p})=>{const[d,c]=C.useState(!0),h=()=>{c(b=>!b)};return t.jsxs(a.Form,{onSubmit:e.handleSubmit,className:"form",children:[t.jsx(W,{active:n,setActive:s,isRestrictionsOpen:d&&e.values.restricted,isRestrictionsDisabled:!e.values.restricted,toggleRestrictionsOpen:h}),t.jsxs("div",{className:"details-form-wrapper",children:[t.jsx(B,{}),t.jsx(a.Row,{className:"form-contents",children:t.jsxs(a.Col,{size:12,children:[n===g(I)&&t.jsx(X,{formik:e,project:u,isEdit:p}),n===g(F)&&t.jsx(H,{formik:e}),n===g(N)&&t.jsx(Y,{formik:e}),n===g(P)&&t.jsx(ee,{formik:e}),n===g(E)&&t.jsx(te,{formik:e}),n===g(D)&&t.jsx(se,{formik:e})]})},n)]})]})};export{I as P,_e as a,ge as b,he as c,me as d,ve as i,xe as n,pe as p,be as r};
Copyright ©2k19 -
Hexid
|
Tex7ure