From 20a3ddd4ed7884b6bcc8865f9dbdb9f4b2f3ac30 Mon Sep 17 00:00:00 2001 From: Philip Laine Date: Thu, 23 Apr 2026 11:47:17 +0200 Subject: [PATCH] Add validation of setup key duration (#199) This adds more validation to the setup key duration to make sure the unit and format is correct. --- api/v1alpha1/setupkey_types.go | 4 +++- examples/refactor/setup-key.yaml | 3 ++- helm/kubernetes-operator/crds/netbird.io_setupkeys.yaml | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/api/v1alpha1/setupkey_types.go b/api/v1alpha1/setupkey_types.go index 22de03e..8546216 100644 --- a/api/v1alpha1/setupkey_types.go +++ b/api/v1alpha1/setupkey_types.go @@ -15,8 +15,10 @@ type SetupKeySpec struct { Ephemeral bool `json:"ephemeral"` // Duration sets how long the setup key is valid for. - // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="duration is immutable" // +optional + // +kubebuilder:validation:Type=string + // +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(m|h))+$" + // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="duration is immutable" Duration *metav1.Duration `json:"duration,omitempty"` // AutoGroups are groups that will be automatically assigned to peers using setup key. diff --git a/examples/refactor/setup-key.yaml b/examples/refactor/setup-key.yaml index 7cd9899..b881bb2 100644 --- a/examples/refactor/setup-key.yaml +++ b/examples/refactor/setup-key.yaml @@ -2,6 +2,7 @@ apiVersion: netbird.io/v1alpha1 kind: SetupKey metadata: name: test - namespace: netbird + namespace: default spec: name: test + ephemeral: true diff --git a/helm/kubernetes-operator/crds/netbird.io_setupkeys.yaml b/helm/kubernetes-operator/crds/netbird.io_setupkeys.yaml index 9ed68d4..36af5d4 100644 --- a/helm/kubernetes-operator/crds/netbird.io_setupkeys.yaml +++ b/helm/kubernetes-operator/crds/netbird.io_setupkeys.yaml @@ -77,6 +77,7 @@ spec: type: array duration: description: Duration sets how long the setup key is valid for. + pattern: ^([0-9]+(\.[0-9]+)?(m|h))+$ type: string x-kubernetes-validations: - message: duration is immutable