mirror of
https://github.com/portainer/portainer.git
synced 2025-07-21 14:29:40 +02:00
feat(k8sconfigure): migrate configure to react [EE-5524] (#10218)
This commit is contained in:
parent
0f1e77a6d5
commit
515b02813b
59 changed files with 1819 additions and 833 deletions
|
@ -0,0 +1,62 @@
|
|||
import { object, string, boolean, array, number, SchemaOf } from 'yup';
|
||||
|
||||
import { IngressControllerClassMap } from '../../ingressClass/types';
|
||||
|
||||
import { ConfigureFormValues } from './types';
|
||||
|
||||
// Define Yup schema for AccessMode
|
||||
const accessModeSchema = object().shape({
|
||||
Description: string().required(),
|
||||
Name: string().required(),
|
||||
selected: boolean().required(),
|
||||
});
|
||||
|
||||
// Define Yup schema for StorageClassFormValues
|
||||
const storageClassFormValuesSchema = array()
|
||||
.of(
|
||||
object().shape({
|
||||
Name: string().required(),
|
||||
AccessModes: array().of(accessModeSchema).required(),
|
||||
Provisioner: string().required(),
|
||||
AllowVolumeExpansion: boolean().required(),
|
||||
selected: boolean().required(),
|
||||
})
|
||||
)
|
||||
.test(
|
||||
// invalid if any storage class is not selected or if it's selected and at least one access mode is selected
|
||||
'accessModes',
|
||||
'Shared access policy configuration required.',
|
||||
(storageClasses) => {
|
||||
const isValid = storageClasses?.every(
|
||||
(value) =>
|
||||
!value.selected ||
|
||||
value.AccessModes?.some((accessMode) => accessMode.selected)
|
||||
);
|
||||
return isValid || false;
|
||||
}
|
||||
);
|
||||
|
||||
// Define Yup schema for IngressControllerClassMap
|
||||
const ingressControllerClassMapSchema: SchemaOf<IngressControllerClassMap> =
|
||||
object().shape({
|
||||
Name: string().required(),
|
||||
ClassName: string().required(),
|
||||
Type: string().required(),
|
||||
Availability: boolean().required(),
|
||||
New: boolean().required(),
|
||||
Used: boolean().required(),
|
||||
});
|
||||
|
||||
// Define Yup schema for ConfigureFormValues
|
||||
export const configureValidationSchema: SchemaOf<ConfigureFormValues> = object({
|
||||
useLoadBalancer: boolean().required(),
|
||||
useServerMetrics: boolean().required(),
|
||||
enableResourceOverCommit: boolean().required(),
|
||||
resourceOverCommitPercentage: number().required(),
|
||||
restrictDefaultNamespace: boolean().required(),
|
||||
restrictStandardUserIngressW: boolean().required(),
|
||||
ingressAvailabilityPerNamespace: boolean().required(),
|
||||
allowNoneIngressClass: boolean().required(),
|
||||
storageClasses: storageClassFormValuesSchema.required(),
|
||||
ingressClasses: array().of(ingressControllerClassMapSchema).required(),
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue