mirror of https://github.com/portainer/portainer
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
![]() |
import { string, object, array, SchemaOf } from 'yup';
|
||
|
|
||
|
import { registriesValidationSchema } from '../components/RegistriesFormSection/registriesValidationSchema';
|
||
|
import { getResourceQuotaValidationSchema } from '../components/ResourceQuotaFormSection/getResourceQuotaValidationSchema';
|
||
|
|
||
|
import { CreateNamespaceFormValues } from './types';
|
||
|
|
||
|
export function getNamespaceValidationSchema(
|
||
|
memoryLimit: number,
|
||
|
namespaceNames: string[]
|
||
|
): SchemaOf<CreateNamespaceFormValues> {
|
||
|
return object({
|
||
|
name: string()
|
||
|
.matches(
|
||
|
/^[a-z0-9](?:[-a-z0-9]{0,251}[a-z0-9])?$/,
|
||
|
"This field must consist of lower case alphanumeric characters or '-', and contain at most 63 characters, and must start and end with an alphanumeric character."
|
||
|
)
|
||
|
.max(63, 'Name must be at most 63 characters.')
|
||
|
// must not have the same name as an existing namespace
|
||
|
.notOneOf(namespaceNames, 'Name must be unique.')
|
||
|
.required('Name is required.'),
|
||
|
resourceQuota: getResourceQuotaValidationSchema(memoryLimit),
|
||
|
// ingress classes table is constrained already, and doesn't need validation
|
||
|
ingressClasses: array(),
|
||
|
registries: registriesValidationSchema,
|
||
|
});
|
||
|
}
|