From 77db0c454bbf37fb2e1b032c34b4e104b469469d Mon Sep 17 00:00:00 2001 From: matteobarone Date: Thu, 1 Jul 2021 11:47:44 +0200 Subject: [PATCH] regex to validate names following k8s validation rule Signed-off-by: matteobarone --- .changeset/flat-donkeys-rhyme.md | 5 +++++ .../validation/KubernetesValidatorFunctions.test.ts | 12 ++++++++---- .../src/validation/KubernetesValidatorFunctions.ts | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 .changeset/flat-donkeys-rhyme.md diff --git a/.changeset/flat-donkeys-rhyme.md b/.changeset/flat-donkeys-rhyme.md new file mode 100644 index 0000000000..c98f4aedc5 --- /dev/null +++ b/.changeset/flat-donkeys-rhyme.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': minor +--- + +Changed the regex to validate names following the Kubernetes validation rule, this allow to be more permissive validating the name of the object in Backstage. diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts index f9b2b6b957..c194774906 100644 --- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts @@ -76,9 +76,10 @@ describe('KubernetesValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', true], ['a.b', true], + ['a..b', true], ])(`isValidObjectName %p ? %p`, (value, matches) => { expect(KubernetesValidatorFunctions.isValidObjectName(value)).toBe(matches); }); @@ -114,9 +115,10 @@ describe('KubernetesValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', true], ['a.b', true], + ['a..b', true], ['a/a', true], ['a-b.c/a', true], ['a--b.c/a', false], @@ -150,9 +152,10 @@ describe('KubernetesValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', true], ['a.b', true], + ['a..b', true], ])(`isValidLabelValue %p ? %p`, (value, matches) => { expect(KubernetesValidatorFunctions.isValidLabelValue(value)).toBe(matches); }); @@ -169,9 +172,10 @@ describe('KubernetesValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', true], ['a.b', true], + ['a..b', true], ['a/a', true], ['a-b.c/a', true], ['a--b.c/a', false], diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts index 049678e3a9..86d27e7b13 100644 --- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts @@ -48,7 +48,7 @@ export class KubernetesValidatorFunctions { typeof value === 'string' && value.length >= 1 && value.length <= 63 && - /^[a-z0-9A-Z]+([-_.][a-z0-9A-Z]+)*$/.test(value) + /^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$/.test(value) ); }