From 6af5f79f92d045c3ea8b268ea7d71456d8eee881 Mon Sep 17 00:00:00 2001 From: LochanRn Date: Wed, 20 Sep 2023 15:33:08 +0530 Subject: [PATCH] support for major minor versioning for aks clusters --- .../azuremanagedcontrolplane_webhook.go | 5 ++- .../azuremanagedcontrolplane_webhook_test.go | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/exp/api/v1beta1/azuremanagedcontrolplane_webhook.go b/exp/api/v1beta1/azuremanagedcontrolplane_webhook.go index fd79f3d86b0..52d39d2fb15 100644 --- a/exp/api/v1beta1/azuremanagedcontrolplane_webhook.go +++ b/exp/api/v1beta1/azuremanagedcontrolplane_webhook.go @@ -37,7 +37,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ) -var kubeSemver = regexp.MustCompile(`^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)([-0-9a-zA-Z_\.+]*)?$`) +const pattern = `^v\d+\.\d+(\.\d+)?$` + +var kubeSemver = regexp.MustCompile(pattern) // SetupWebhookWithManager sets up and registers the webhook with the manager. func (m *AzureManagedControlPlane) SetupWebhookWithManager(mgr ctrl.Manager) error { @@ -409,7 +411,6 @@ func (m *AzureManagedControlPlane) validateVersion(_ client.Client) error { if !kubeSemver.MatchString(m.Spec.Version) { return errors.New("must be a valid semantic version") } - return nil } diff --git a/exp/api/v1beta1/azuremanagedcontrolplane_webhook_test.go b/exp/api/v1beta1/azuremanagedcontrolplane_webhook_test.go index 9f6343d4828..1f9cbd454fa 100644 --- a/exp/api/v1beta1/azuremanagedcontrolplane_webhook_test.go +++ b/exp/api/v1beta1/azuremanagedcontrolplane_webhook_test.go @@ -202,6 +202,36 @@ func TestValidatingWebhook(t *testing.T) { }, expectErr: true, }, + { + name: "InValid Version ..", + amcp: AzureManagedControlPlane{ + Spec: AzureManagedControlPlaneSpec{ + DNSServiceIP: pointer.StringPtr("192.168.0.0"), + Version: "..", + }, + }, + expectErr: true, + }, + { + name: "InValid Version v1.20.", + amcp: AzureManagedControlPlane{ + Spec: AzureManagedControlPlaneSpec{ + DNSServiceIP: pointer.StringPtr("192.168.0.0"), + Version: "v1.20.", + }, + }, + expectErr: true, + }, + { + name: "InValid Version v1.20.a", + amcp: AzureManagedControlPlane{ + Spec: AzureManagedControlPlaneSpec{ + DNSServiceIP: pointer.StringPtr("192.168.0.0"), + Version: "v1.20.a", + }, + }, + expectErr: true, + }, { name: "Valid Version", amcp: AzureManagedControlPlane{ @@ -212,6 +242,16 @@ func TestValidatingWebhook(t *testing.T) { }, expectErr: false, }, + { + name: "Valid Version", + amcp: AzureManagedControlPlane{ + Spec: AzureManagedControlPlaneSpec{ + DNSServiceIP: pointer.StringPtr("192.168.0.0"), + Version: "v1.17", + }, + }, + expectErr: false, + }, { name: "Valid Managed AADProfile", amcp: AzureManagedControlPlane{