feat(kubernetes): fix annotation validation EE-5021 (#8818)

pull/8851/head
Prabhat Khera 2 years ago committed by GitHub
parent 3e654ff9b2
commit 80a3a5f16e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -339,14 +339,41 @@ export function CreateIngressView() {
}
const duplicatedAnnotations: string[] = [];
const re = /^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$/;
rule.Annotations?.forEach((a, i) => {
if (!a.Key) {
errors[`annotations.key[${i}]`] = 'Annotation key is required';
errors[`annotations.key[${i}]`] = 'Key is required.';
} else if (duplicatedAnnotations.includes(a.Key)) {
errors[`annotations.key[${i}]`] = 'Annotation cannot be duplicated';
errors[`annotations.key[${i}]`] =
'Key is a duplicate of an existing one.';
} else {
const key = a.Key.split('/');
if (key.length > 2) {
errors[`annotations.key[${i}]`] =
'Two segments are allowed, separated by a slash (/): a prefix (optional) and a name.';
} else if (key.length === 2) {
if (key[0].length > 253) {
errors[`annotations.key[${i}]`] =
"Prefix (before the slash) can't exceed 253 characters.";
} else if (key[1].length > 63) {
errors[`annotations.key[${i}]`] =
"Name (after the slash) can't exceed 63 characters.";
} else if (!re.test(key[1])) {
errors[`annotations.key[${i}]`] =
'Start and end with alphanumeric characters only, limiting characters in between to dashes, underscores, and alphanumerics.';
}
} else if (key.length === 1) {
if (key[0].length > 63) {
errors[`annotations.key[${i}]`] =
"Name (the segment after a slash (/), or only segment if no slash) can't exceed 63 characters.";
} else if (!re.test(key[0])) {
errors[`annotations.key[${i}]`] =
'Start and end with alphanumeric characters only, limiting characters in between to dashes, underscores, and alphanumerics.';
}
}
}
if (!a.Value) {
errors[`annotations.value[${i}]`] = 'Annotation value is required';
errors[`annotations.value[${i}]`] = 'Value is required.';
}
duplicatedAnnotations.push(a.Key);
});

Loading…
Cancel
Save