From 9da284185236d845be71c492f38449908559e0ff Mon Sep 17 00:00:00 2001 From: Michal Jura Date: Mon, 23 Oct 2023 10:56:58 +0200 Subject: [PATCH] Check for duplicate names for NodePools --- controller/aks-cluster-config-handler.go | 8 ++++++++ controller/aks-cluster-config-handler_test.go | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/controller/aks-cluster-config-handler.go b/controller/aks-cluster-config-handler.go index 70cbd2d0..88cc9222 100644 --- a/controller/aks-cluster-config-handler.go +++ b/controller/aks-cluster-config-handler.go @@ -391,8 +391,16 @@ func (h *Handler) validateConfig(config *aksv1.AKSClusterConfig) error { return fmt.Errorf(cannotBeNilError, "dnsPrefix", config.Spec.ClusterName) } + nodeP := map[string]bool{} systemMode := false for _, np := range config.Spec.NodePools { + if np.Name == nil { + return fmt.Errorf(cannotBeNilError, "NodePool.Name", config.Spec.ClusterName) + } + if nodeP[*np.Name] { + return fmt.Errorf("NodePool names must be unique within the [%s] cluster to avoid duplication", config.Spec.ClusterName) + } + nodeP[*np.Name] = true if np.Name == nil { return fmt.Errorf(cannotBeNilError, "NodePool.Name", config.Spec.ClusterName) } diff --git a/controller/aks-cluster-config-handler_test.go b/controller/aks-cluster-config-handler_test.go index 89ec0c60..1f3310b3 100644 --- a/controller/aks-cluster-config-handler_test.go +++ b/controller/aks-cluster-config-handler_test.go @@ -233,7 +233,7 @@ var _ = Describe("validateConfig", func() { DNSPrefix: to.StringPtr("test"), NodePools: []aksv1.AKSNodePool{ { - Name: to.StringPtr("test"), + Name: to.StringPtr("test1"), Count: to.Int32Ptr(1), MaxPods: to.Int32Ptr(1), VMSize: "test", @@ -242,6 +242,16 @@ var _ = Describe("validateConfig", func() { Mode: "System", OsType: "test", }, + { + Name: to.StringPtr("test2"), + Count: to.Int32Ptr(1), + MaxPods: to.Int32Ptr(1), + VMSize: "test", + OsDiskSizeGB: to.Int32Ptr(1), + OsDiskType: "test", + Mode: "User", + OsType: "test", + }, }, NetworkPlugin: to.StringPtr(string(containerservice.Azure)), NetworkPolicy: to.StringPtr(string(containerservice.NetworkPolicyAzure)), @@ -352,6 +362,12 @@ var _ = Describe("validateConfig", func() { Expect(handler.validateConfig(aksConfig)).NotTo(Succeed()) }) + It("should fail to validate aks config if node pool name is duplicated", func() { + aksConfig.Spec.NodePools[0].Name = to.StringPtr("test") + aksConfig.Spec.NodePools[1].Name = to.StringPtr("test") + Expect(handler.validateConfig(aksConfig)).NotTo(Succeed()) + }) + It("should fail to validate aks config if node pool count is empty", func() { aksConfig.Spec.NodePools[0].Count = nil Expect(handler.validateConfig(aksConfig)).NotTo(Succeed())