Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions pkg/apis/v1alpha2/aksnodeclass.go
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ func (in *AKSNodeClass) GetEncryptionAtHost() bool {

// IsLocalDNSEnabled returns whether LocalDNS should be enabled for this node class.
// Returns true for Required mode, false for Disabled mode, and for Preferred mode,
// returns true only if the Kubernetes version is >= 1.36.
// returns true only if the Kubernetes version is >= 1.35.
func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
if in.Spec.LocalDNS == nil || in.Spec.LocalDNS.Mode == "" {
return false
Expand All @@ -438,7 +438,7 @@ func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
case LocalDNSModeDisabled:
return false
case LocalDNSModePreferred:
// For Preferred mode, check if K8s version >= 1.36
// For Preferred mode, check if K8s version >= 1.35
kubernetesVersion, err := in.GetKubernetesVersion()
if err != nil {
return false // If we can't get version, don't enable
Expand All @@ -450,7 +450,7 @@ func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
return false
}

return parsedVersion.GE(semver.Version{Major: 1, Minor: 36})
return parsedVersion.GE(semver.Version{Major: 1, Minor: 35})
default:
return false
}
Expand Down
61 changes: 61 additions & 0 deletions pkg/apis/v1alpha2/aksnodeclass_localdns_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
Portions Copyright (c) Microsoft Corporation.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1alpha2_test

import (
"github.com/Azure/karpenter-provider-azure/pkg/apis/v1alpha2"
"github.com/awslabs/operatorpkg/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

var _ = Describe("IsLocalDNSEnabled", func() {
var nodeClass *v1alpha2.AKSNodeClass

BeforeEach(func() {
nodeClass = &v1alpha2.AKSNodeClass{}
nodeClass.Status = v1alpha2.AKSNodeClassStatus{
Conditions: []status.Condition{{
Type: v1alpha2.ConditionTypeKubernetesVersionReady,
Status: metav1.ConditionTrue,
ObservedGeneration: nodeClass.Generation,
}},
}
})

DescribeTable("should return correct value based on LocalDNS mode and Kubernetes version",
func(mode v1alpha2.LocalDNSMode, kubernetesVersion string, expected bool) {
if mode != "" {
nodeClass.Spec.LocalDNS = &v1alpha2.LocalDNS{Mode: mode}
}
nodeClass.Status.KubernetesVersion = kubernetesVersion
Expect(nodeClass.IsLocalDNSEnabled()).To(Equal(expected))
},
Entry("LocalDNS is nil", v1alpha2.LocalDNSMode(""), "", false),
Entry("Mode is Required", v1alpha2.LocalDNSModeRequired, "", true),
Entry("Mode is Disabled", v1alpha2.LocalDNSModeDisabled, "", false),
Entry("Mode is Preferred, no k8s version", v1alpha2.LocalDNSModePreferred, "", false),
Entry("Mode is Preferred, k8s 1.34.0", v1alpha2.LocalDNSModePreferred, "1.34.0", false),
Entry("Mode is Preferred, k8s 1.35.0", v1alpha2.LocalDNSModePreferred, "1.35.0", true),
Entry("Mode is Preferred, k8s v1.35.0", v1alpha2.LocalDNSModePreferred, "v1.35.0", true),
Entry("Mode is Preferred, k8s 1.36.0", v1alpha2.LocalDNSModePreferred, "1.36.0", true),
Entry("Mode is Preferred, k8s 1.35.5", v1alpha2.LocalDNSModePreferred, "1.35.5", true),
Entry("Mode is Preferred, k8s 1.34.99", v1alpha2.LocalDNSModePreferred, "1.34.99", false),
)
})
6 changes: 3 additions & 3 deletions pkg/apis/v1beta1/aksnodeclass.go
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ func (in *AKSNodeClass) GetEncryptionAtHost() bool {

// IsLocalDNSEnabled returns whether LocalDNS should be enabled for this node class.
// Returns true for Required mode, false for Disabled mode, and for Preferred mode,
// returns true only if the Kubernetes version is >= 1.36.
// returns true only if the Kubernetes version is >= 1.35.
func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
if in.Spec.LocalDNS == nil || in.Spec.LocalDNS.Mode == "" {
return false
Expand All @@ -438,7 +438,7 @@ func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
case LocalDNSModeDisabled:
return false
case LocalDNSModePreferred:
// For Preferred mode, check if K8s version >= 1.36
// For Preferred mode, check if K8s version >= 1.35
kubernetesVersion, err := in.GetKubernetesVersion()
if err != nil {
return false // If we can't get version, don't enable
Expand All @@ -450,7 +450,7 @@ func (in *AKSNodeClass) IsLocalDNSEnabled() bool {
return false
}

return parsedVersion.GE(semver.Version{Major: 1, Minor: 36})
return parsedVersion.GE(semver.Version{Major: 1, Minor: 35})
default:
return false
}
Expand Down
62 changes: 62 additions & 0 deletions pkg/apis/v1beta1/aksnodeclass_localdns_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
Portions Copyright (c) Microsoft Corporation.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1beta1_test

import (
"github.com/Azure/karpenter-provider-azure/pkg/apis/v1beta1"
"github.com/Azure/karpenter-provider-azure/pkg/test"
"github.com/awslabs/operatorpkg/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

var _ = Describe("IsLocalDNSEnabled", func() {
var nodeClass *v1beta1.AKSNodeClass

BeforeEach(func() {
nodeClass = test.AKSNodeClass()
nodeClass.Status = v1beta1.AKSNodeClassStatus{
Conditions: []status.Condition{{
Type: v1beta1.ConditionTypeKubernetesVersionReady,
Status: metav1.ConditionTrue,
ObservedGeneration: nodeClass.Generation,
}},
}
})

DescribeTable("should return correct value based on LocalDNS mode and Kubernetes version",
func(mode v1beta1.LocalDNSMode, kubernetesVersion string, expected bool) {
if mode != "" {
nodeClass.Spec.LocalDNS = &v1beta1.LocalDNS{Mode: mode}
}
nodeClass.Status.KubernetesVersion = kubernetesVersion
Expect(nodeClass.IsLocalDNSEnabled()).To(Equal(expected))
},
Entry("LocalDNS is nil", v1beta1.LocalDNSMode(""), "", false),
Entry("Mode is Required", v1beta1.LocalDNSModeRequired, "", true),
Entry("Mode is Disabled", v1beta1.LocalDNSModeDisabled, "", false),
Entry("Mode is Preferred, no k8s version", v1beta1.LocalDNSModePreferred, "", false),
Entry("Mode is Preferred, k8s 1.34.0", v1beta1.LocalDNSModePreferred, "1.34.0", false),
Entry("Mode is Preferred, k8s 1.35.0", v1beta1.LocalDNSModePreferred, "1.35.0", true),
Entry("Mode is Preferred, k8s v1.35.0", v1beta1.LocalDNSModePreferred, "v1.35.0", true),
Entry("Mode is Preferred, k8s 1.36.0", v1beta1.LocalDNSModePreferred, "1.36.0", true),
Entry("Mode is Preferred, k8s 1.35.5", v1beta1.LocalDNSModePreferred, "1.35.5", true),
Entry("Mode is Preferred, k8s 1.34.99", v1beta1.LocalDNSModePreferred, "1.34.99", false),
)
})
8 changes: 4 additions & 4 deletions pkg/providers/instancetype/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -685,10 +685,10 @@ var _ = Describe("InstanceType Provider", func() {
},
Entry("when LocalDNS is required - filters to 4+ vCPUs and 244+ MiB",
v1beta1.LocalDNSModeRequired, "", false, true),
Entry("when LocalDNS is preferred with k8s >= 1.36 - filters to 4+ vCPUs and 244+ MiB",
v1beta1.LocalDNSModePreferred, "1.36.0", false, true),
Entry("when LocalDNS is preferred with k8s < 1.36 - includes all SKUs",
v1beta1.LocalDNSModePreferred, "1.35.0", true, true),
Entry("when LocalDNS is preferred with k8s >= 1.35 - filters to 4+ vCPUs and 244+ MiB",
v1beta1.LocalDNSModePreferred, "1.35.0", false, true),
Entry("when LocalDNS is preferred with k8s < 1.35 - includes all SKUs",
v1beta1.LocalDNSModePreferred, "1.34.0", true, true),
Entry("when LocalDNS is disabled - includes all SKUs",
v1beta1.LocalDNSModeDisabled, "", true, true),
Entry("when LocalDNS is not set - includes all SKUs",
Expand Down
20 changes: 10 additions & 10 deletions pkg/providers/labels/labels_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,49 +267,49 @@ func TestLocalDNSLabels(t *testing.T) {
expectedLabel: "disabled",
},
{
name: "LocalDNS mode is Preferred with k8s >= 1.36",
name: "LocalDNS mode is Preferred with k8s >= 1.35",
localDNS: &v1beta1.LocalDNS{
Mode: v1beta1.LocalDNSModePreferred,
},
kubernetesVersion: "1.36.0",
kubernetesVersion: "1.35.0",
expectedLabel: "enabled",
},
{
name: "LocalDNS mode is Preferred with k8s 1.37",
name: "LocalDNS mode is Preferred with k8s 1.36",
localDNS: &v1beta1.LocalDNS{
Mode: v1beta1.LocalDNSModePreferred,
},
kubernetesVersion: "1.37.0",
kubernetesVersion: "1.36.0",
expectedLabel: "enabled",
},
{
name: "LocalDNS mode is Preferred with k8s < 1.36",
name: "LocalDNS mode is Preferred with k8s < 1.35",
localDNS: &v1beta1.LocalDNS{
Mode: v1beta1.LocalDNSModePreferred,
},
kubernetesVersion: "1.35.0",
kubernetesVersion: "1.34.0",
expectedLabel: "disabled",
},
{
name: "LocalDNS mode is Preferred with k8s 1.35.9",
name: "LocalDNS mode is Preferred with k8s 1.34.9",
localDNS: &v1beta1.LocalDNS{
Mode: v1beta1.LocalDNSModePreferred,
},
kubernetesVersion: "1.35.9",
kubernetesVersion: "1.34.9",
expectedLabel: "disabled",
},
{
name: "LocalDNS is nil",
localDNS: nil,
kubernetesVersion: "1.36.0",
kubernetesVersion: "1.35.0",
expectedLabel: "disabled",
},
{
name: "LocalDNS mode is empty",
localDNS: &v1beta1.LocalDNS{
Mode: "",
},
kubernetesVersion: "1.36.0",
kubernetesVersion: "1.35.0",
expectedLabel: "disabled",
},
}
Expand Down