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