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/ProjectForm-CDXtLiR1.js

import{K as V,S as k,j as t,d as r,cu as U,a0 as z,c1 as I,v as C,R as F,r as B,p as G,a5 as b}from"./index-BFGypnt-.js";import{F as g,e as x}from"./FormMenuItem-fhYfVpHc.js";import{l as a,g as n}from"./ConfigurationTable-CmO6jSmV.js";import{A as $}from"./AutoExpandingTextArea-WEdimI5c.js";import{S as K}from"./ScrollableForm-D-7nf2YI.js";import{S as Z}from"./StoragePoolSelector-CIzPJc24.js";import{N as q}from"./NetworkSelector-BaEsMhep.js";import{h as H}from"./useNetworks-B1lu5MbM.js";import{P as S}from"./ProfileRichChip-XiLIeCE5.js";import{S as j}from"./ScrollableConfigurationTable-Cdfv_OdM.js";import{D as y}from"./DiskSizeSelector-C_YZZUSe.js";import{u as N}from"./useResources-D4gdq2PK.js";import{o as _}from"./FormFooterLayout-CMGxv4XX.js";import{b as J}from"./useClusterGroups-BlRzika4.js";import{u as W}from"./useImageRegistries-BcqfYS33.js";const P="Project details",E="Resource limits",O="Clusters",D="Instances",M="Device usage",T="Networks",A="Images",Q=({isRestrictionsOpen:e,toggleRestrictionsOpen:s,isRestrictionsDisabled:i,active:c,setActive:u})=>{const{hasImageRegistries:l}=V(),p=k(),d={active:c,setActive:u};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:P,...d}),t.jsx(g,{label:E,...d}),t.jsxs("li",{className:"p-side-navigation__item",children:[t.jsx(r.Button,{type:"button",className:"p-side-navigation__accordion-button","aria-expanded":e?"true":"false",onClick:s,disabled:i,children:"Restrictions"}),t.jsxs("ul",{className:"p-side-navigation__list","aria-expanded":e?"true":"false",children:[p&&t.jsx(g,{label:O,...d}),t.jsx(g,{label:D,...d}),t.jsx(g,{label:M,...d}),t.jsx(g,{label:T,...d}),l&&t.jsx(g,{label:A,...d})]})]})]})})})},ye=e=>({name:e.name,description:e.description}),Re=e=>{const s=i=>{if(i!==void 0)return i?"true":"false"};return{[a("restricted")]:s(e.restricted),[a("features_images")]:s(e.features_images),[a("features_profiles")]:s(e.features_profiles),[a("features_networks")]:s(e.features_networks),[a("features_networks_zones")]:s(e.features_networks_zones),[a("features_storage_buckets")]:s(e.features_storage_buckets),[a("features_storage_volumes")]:s(e.features_storage_volumes)}},X=({formik:e,project:s,isEdit:i})=>{const{hasProjectsNetworksZones:c,hasStorageBuckets:u}=V(),{data:l=[]}=H(s?.name||"default"),p=l.filter(m=>m.managed),d=e.values.name==="default",h=s?!U(s):!1,w=s?.config["features.networks.zones"]==="true",f=!e.values.features_profiles,L=e.values.features_networks;return t.jsx(K,{children:t.jsx(r.Row,{children:t.jsxs(r.Col,{size:12,children:[i?t.jsx(r.OutputField,{id:"name",label:"Project name",value:e.values.name,help:d?"Default project cannot be renamed.":"Click the name in the header to rename the project."}):t.jsx(r.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,required:!0}),t.jsx($,{id:"description",name:"description",label:"Description",placeholder:"Enter description",onBlur:e.handleBlur,onChange:m=>{x(e),e.handleChange(m)},value:e.values.description,disabled:!!e.values.editRestriction,title:e.values.editRestriction}),i?t.jsx(r.OutputField,{id:"default_instance_storage_pool",label:"Default instance storage pool",value:e.values.default_instance_storage_pool,help:t.jsxs(t.Fragment,{children:["Edit the storage pool in the"," ",t.jsx(S,{profileName:"default",projectName:s?.name??""})," "," profile"]})}):t.jsx(Z,{value:e.values.default_instance_storage_pool,setValue:m=>{e.setFieldValue("default_instance_storage_pool",m)},selectProps:{label:"Default instance storage pool",disabled:!e.values.features_profiles}}),i?t.jsx(r.OutputField,{id:"default_instance_network",label:"Default instance network",value:e.values.default_project_network,help:t.jsxs(t.Fragment,{children:["Configure networks in the"," ",t.jsx(S,{profileName:"default",projectName:s?.name??""})," ","profile"]})}):t.jsx(q,{value:e.values.default_project_network,setValue:m=>{e.setFieldValue("default_project_network",m)},hasNoneOption:!0,label:"Default instance network",disabled:f||L,networkList:p}),t.jsxs("div",{title:e.values.editRestriction??(d?"Custom features are immutable on the default project":""),children:["Isolate the following features:",!d&&t.jsxs(t.Fragment,{children:[" ",t.jsx(r.Tooltip,{message:"Unselected features will be shared with the default project",children:t.jsx(r.Icon,{name:"information"})})]}),t.jsx(r.CheckboxInput,{id:"features_images",name:"features_images",label:"Images",onChange:()=>{x(e),e.setFieldValue("features_images",!e.values.features_images)},checked:e.values.features_images,disabled:!!e.values.editRestriction||d||h}),t.jsx(r.CheckboxInput,{id:"features_profiles",name:"features_profiles",label:"Profiles",onChange:()=>{x(e);const m=!e.values.features_profiles;e.setFieldValue("features_profiles",m),m||e.setFieldValue("restricted",!1)},checked:e.values.features_profiles,disabled:!!e.values.editRestriction||d||h}),t.jsx(r.CheckboxInput,{id:"features_networks",name:"features_networks",label:"Networks",onChange:()=>{x(e),e.setFieldValue("features_networks",!e.values.features_networks);const m=!e.values.features_networks;e.setFieldValue("features_networks",m),m&&!i&&e.setFieldValue("default_project_network","none")},checked:e.values.features_networks,disabled:!!e.values.editRestriction||d||h}),c&&t.jsx(r.CheckboxInput,{id:"features_networks_zones",name:"features_networks_zones",label:"Network zones",onChange:()=>{x(e),e.setFieldValue("features_networks_zones",!e.values.features_networks_zones)},checked:e.values.features_networks_zones,disabled:!!e.values.editRestriction||d||h&&w}),u&&t.jsx(r.CheckboxInput,{id:"features_storage_buckets",name:"features_storage_buckets",label:"Storage buckets",onChange:()=>{x(e),e.setFieldValue("features_storage_buckets",!e.values.features_storage_buckets)},checked:e.values.features_storage_buckets,disabled:!!e.values.editRestriction||d||h}),t.jsx(r.CheckboxInput,{id:"features_storage_volumes",name:"features_storage_volumes",label:"Storage volumes",onChange:()=>{x(e),e.setFieldValue("features_storage_volumes",!e.values.features_storage_volumes)},checked:e.values.features_storage_volumes,disabled:!!e.values.editRestriction||d||h})]}),t.jsx("hr",{}),t.jsx("div",{title:e.values.editRestriction,children:t.jsx(r.CheckboxInput,{id:"custom_restrictions",name:"custom_restrictions",label:t.jsxs(t.Fragment,{children:["Allow custom restrictions on a project level",t.jsx(r.Tooltip,{className:"checkbox-label-tooltip",message:`Custom restrictions are only available
to projects with isolated profiles`,children:t.jsx(r.Icon,{name:"information"})})]}),onChange:()=>{x(e),e.setFieldValue("restricted",!e.values.restricted)},checked:e.values.restricted,disabled:!!e.values.editRestriction||e.values.features_profiles===!1})})]})})})},Y=()=>{const e=r.useNotify(),{data:s=[],error:i,isLoading:c}=N();if(c)return t.jsx(r.Spinner,{className:"u-loader",text:"Loading resources..."});if(i)return e.failure("Loading resources failed",i),null;const l=I(s).reduce((p,d)=>p+d.memory.total,0);return t.jsxs(t.Fragment,{children:["Total memory: ",t.jsx("b",{children:z(l)})]})},ee=({help:e,...s})=>{const i=r.useNotify(),{data:c=[],error:u}=N();u&&i.failure("Loading resources failed",u);const l=I(c).reduce((w,f)=>w+f.cpu.total,0),d=l>0?t.jsxs(t.Fragment,{children:["Total number of CPU cores: ",t.jsx("b",{children:l})]}):null,h=t.jsxs(t.Fragment,{children:[e,e&&d&&t.jsx("br",{}),d]});return t.jsx(r.Input,{...s,help:h})},Ve=e=>({[a("limits_instances")]:e.limits_instances?.toString(),[a("limits_containers")]:e.limits_containers?.toString(),[a("limits_virtual_machines")]:e.limits_virtual_machines?.toString(),[a("limits_disk")]:e.limits_disk?.toString(),[a("limits_networks")]:e.limits_networks?.toString(),[a("limits_cpu")]:e.limits_cpu?.toString(),[a("limits_memory")]:e.limits_memory?.toString(),[a("limits_processes")]:e.limits_processes?.toString()}),te=({formik:e})=>t.jsx(j,{rows:[n({formik:e,name:"limits_instances",label:"Max number of instances",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter number",min:0,type:"number"})}),n({formik:e,name:"limits_containers",label:"Max number of containers",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter number",min:0,type:"number"})}),n({formik:e,name:"limits_virtual_machines",label:"Max number of VMs",defaultValue:"",children:t.jsx(r.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(y,{setMemoryLimit:s=>{e.setFieldValue("limits_disk",s)}})}),n({formik:e,name:"limits_networks",label:"Max number of networks",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter number",min:0,type:"number"})}),n({formik:e,name:"limits_cpu",label:"Max sum of CPU",defaultValue:"",children:t.jsx(ee,{placeholder:"Enter number",type:"number"})}),n({formik:e,name:"limits_memory",label:"Max sum of memory limits",defaultValue:"",children:t.jsx(y,{setMemoryLimit:s=>{e.setFieldValue("limits_memory",s)},helpTotal:t.jsx(Y,{})})}),n({formik:e,name:"limits_processes",label:"Max sum of processes",defaultValue:"-",children:t.jsx(r.Input,{placeholder:"Enter number",min:0,type:"number"})})]}),o=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Block",value:"block"}],R=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Isolated",value:"isolated"},{label:"Unprivileged",value:"unprivileged"}],v=[{label:"Select option",value:"",disabled:!0},{label:"Allow",value:"allow"},{label:"Block",value:"block"},{label:"Managed",value:"managed"}],se=({formik:e,help:s})=>{const{data:i=[]}=J(),c=e.values.restricted_cluster_groups?.split(",").filter(Boolean)??[],u=l=>{e.setFieldValue("restricted_cluster_groups",l.filter(Boolean).join(","))};return t.jsx("div",{className:"restricted-cluster-groups",children:t.jsx(r.MultiSelect,{id:"restricted_cluster_groups",help:s,items:i.map(l=>({label:l.name,value:l.name})),selectedItems:c.map(l=>({value:l,label:l})),onDeselectItem:l=>{u(c.filter(p=>p!==l.value))},onSelectItem:l=>{u(c.concat([l.value]))},onItemsUpdate:l=>{u(l.map(p=>p.value))},variant:"condensed"})})},Ie=e=>({[a("restricted_cluster_groups")]:e.restricted_cluster_groups,[a("restricted_cluster_target")]:e.restricted_cluster_target}),re=({formik:e})=>t.jsx(j,{rows:[n({formik:e,name:"restricted_cluster_groups",label:"Cluster groups targeting",defaultValue:"",children:t.jsx(se,{formik:e}),readOnlyRenderer:s=>{if(s==="-"||typeof s!="string")return s;const i=s.split(",").filter(Boolean);return t.jsx("span",{className:"restricted-cluster-groups",children:i?.map(c=>t.jsx(C,{type:"cluster-group",value:c,to:`${F}/ui/cluster/groups`},c))})}}),n({formik:e,name:"restricted_cluster_target",label:"Direct cluster targeting",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})})]}),Ce=e=>({[a("restricted_virtual_machines_low_level")]:e.restricted_virtual_machines_low_level,[a("restricted_containers_low_level")]:e.restricted_containers_low_level,[a("restricted_containers_nesting")]:e.restricted_containers_nesting,[a("restricted_containers_privilege")]:e.restricted_containers_privilege,[a("restricted_container_interception")]:e.restricted_container_interception,[a("restrict_backups")]:e.restrict_backups,[a("restrict_snapshots")]:e.restrict_snapshots,[a("restricted_idmap_uid")]:e.restricted_idmap_uid,[a("restricted_idmap_gid")]:e.restricted_idmap_gid}),ae=({formik:e})=>t.jsx(j,{rows:[n({formik:e,name:"restricted_virtual_machines_low_level",label:"Low level VM operations",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_containers_low_level",label:"Low level container operations",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_containers_nesting",label:"Container nesting",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_containers_privilege",label:"Container privilege",defaultValue:"",readOnlyRenderer:s=>_(s,R),children:t.jsx(r.Select,{options:R})}),n({formik:e,name:"restricted_container_interception",label:"Container interception",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restrict_backups",label:"Backup creation",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restrict_snapshots",label:"Snapshot creation",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_idmap_uid",label:"Idmap UID",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter UID ranges",type:"text"})}),n({formik:e,name:"restricted_idmap_gid",label:"Idmap GID",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter GID ranges",type:"text"})})]}),Fe=e=>({[a("restricted_devices_disk")]:e.restricted_devices_disk,[a("restricted_devices_disk_paths")]:e.restricted_devices_disk_paths,[a("restricted_devices_gpu")]:e.restricted_devices_gpu,[a("restricted_devices_infiniband")]:e.restricted_devices_infiniband,[a("restricted_devices_nic")]:e.restricted_devices_nic,[a("restricted_devices_pci")]:e.restricted_devices_pci,[a("restricted_devices_unix_block")]:e.restricted_devices_unix_block,[a("restricted_devices_unix_char")]:e.restricted_devices_unix_char,[a("restricted_devices_unix_hotplug")]:e.restricted_devices_unix_hotplug,[a("restricted_devices_usb")]:e.restricted_devices_usb}),le=({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=>_(s,v),children:t.jsx(r.Select,{options:v})}),n({formik:e,name:"restricted_devices_disk_paths",label:"Disk devices path",defaultValue:"",children:t.jsx(r.Input,{placeholder:"Enter paths",type:"text"})}),n({formik:e,name:"restricted_devices_gpu",label:"GPU devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_infiniband",label:"Infiniband devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_nic",label:"Network devices",defaultValue:"",readOnlyRenderer:s=>_(s,v),children:t.jsx(r.Select,{options:v})}),n({formik:e,name:"restricted_devices_pci",label:"PCI devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_unix_block",label:"Unix-block devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_unix_char",label:"Unix-char devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_unix_hotplug",label:"Unix-hotplug devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})}),n({formik:e,name:"restricted_devices_usb",label:"USB devices",defaultValue:"",readOnlyRenderer:s=>_(s,o),children:t.jsx(r.Select,{options:o})})]}),Ne=e=>({[a("restricted_network_access")]:e.restricted_network_access,[a("restricted_network_subnets")]:e.restricted_network_subnets,[a("restricted_network_uplinks")]:e.restricted_network_uplinks,[a("restricted_network_zones")]:e.restricted_network_zones}),ne=({formik:e})=>t.jsx(j,{rows:[n({formik:e,name:"restricted_network_access",label:"Available networks",defaultValue:"",children:t.jsx(r.Textarea,{placeholder:"Enter network names"})}),n({formik:e,name:"restricted_network_subnets",label:"Network subnets",defaultValue:"",children:t.jsx(r.Textarea,{placeholder:"Enter network subnets"})}),n({formik:e,name:"restricted_network_uplinks",label:"Network uplinks",defaultValue:"",children:t.jsx(r.Textarea,{placeholder:"Enter network names"})}),n({formik:e,name:"restricted_network_zones",label:"Network zones",defaultValue:"",children:t.jsx(r.Textarea,{placeholder:"Enter network zones"})})]}),ie=({formik:e,help:s})=>{const{data:i=[]}=W(),c=e.values.restricted_registries?.split(",").filter(Boolean)??[],u=l=>{e.setFieldValue("restricted_registries",l.filter(Boolean).join(","))};return t.jsx("div",{className:"restricted-image-registries",children:t.jsx(r.MultiSelect,{id:"restricted_registries",placeholder:"Select registries",help:s,items:i.map(l=>({label:l.name,value:l.name})),selectedItems:c.map(l=>({value:l,label:l})),onDeselectItem:l=>{u(c.filter(p=>p!==l.value))},onSelectItem:l=>{u(c.concat([l.value]))},onItemsUpdate:l=>{u(l.map(p=>p.value))},variant:"condensed"})})},Pe=e=>({[a("restricted_registries")]:e.restricted_registries}),oe=({formik:e})=>t.jsx(j,{rows:[n({formik:e,name:"restricted_registries",label:"Available image registries",defaultValue:"",children:t.jsx(ie,{formik:e}),readOnlyRenderer:s=>{if(s==="block"||typeof s!="string")return s;const i=s.split(",").filter(Boolean);return t.jsx("span",{className:"restricted-image-registries",children:i?.map(c=>t.jsx(C,{type:"image-registry",value:c,to:`${F}/ui/image-registry/${c}`},c))})}})]}),Ee=({formik:e,updateSection:s,section:i,project:c,isEdit:u})=>{const[l,p]=B.useState(!0),d=()=>{p(h=>!h)};return t.jsxs(r.Form,{onSubmit:e.handleSubmit,className:"form",children:[t.jsx(Q,{active:i,setActive:s,isRestrictionsOpen:l&&e.values.restricted,isRestrictionsDisabled:!e.values.restricted,toggleRestrictionsOpen:d}),t.jsxs("div",{className:"details-form-wrapper",children:[t.jsx(G,{}),t.jsx(r.Row,{className:"form-contents",children:t.jsxs(r.Col,{size:12,children:[i===b(P)&&t.jsx(X,{formik:e,project:c,isEdit:u}),i===b(E)&&t.jsx(te,{formik:e}),i===b(O)&&t.jsx(re,{formik:e}),i===b(D)&&t.jsx(ae,{formik:e}),i===b(M)&&t.jsx(le,{formik:e}),i===b(T)&&t.jsx(ne,{formik:e}),i===b(A)&&t.jsx(oe,{formik:e})]})},i)]})]})};export{P,Ce as a,ye as b,Ie as c,Fe as d,Ee as e,Pe as i,Ne as n,Re as p,Ve as r};