Skip to content

Commit f4c29d2

Browse files
committed
update cel test with maxproperties validation
1 parent 7529542 commit f4c29d2

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed

pkg/apis/v1alpha2/crd_validation_cel_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1alpha2_test
1818

1919
import (
20+
"fmt"
2021
"strings"
2122

2223
"github.com/Azure/karpenter-provider-azure/pkg/apis/v1alpha2"
@@ -1103,6 +1104,79 @@ var _ = Describe("CEL/Validation", func() {
11031104
)
11041105
})
11051106

1107+
Context("LocalDNS MaxProperties validation", func() {
1108+
DescribeTable("should validate VnetDNSOverrides property limits",
1109+
func(numZones int, expectedErr string) {
1110+
overrides := make(map[string]*v1alpha2.LocalDNSOverrides)
1111+
overrides["."] = createCompleteLocalDNSOverrides(true)
1112+
overrides["cluster.local"] = createCompleteLocalDNSOverrides(false)
1113+
// Add additional zones beyond the required 2
1114+
for i := 1; i <= numZones-2; i++ {
1115+
overrides[fmt.Sprintf("zone%d.local", i)] = createCompleteLocalDNSOverrides(false)
1116+
}
1117+
1118+
nodeClass := &v1alpha2.AKSNodeClass{
1119+
ObjectMeta: metav1.ObjectMeta{Name: strings.ToLower(randomdata.SillyName())},
1120+
Spec: v1alpha2.AKSNodeClassSpec{
1121+
LocalDNS: &v1alpha2.LocalDNS{
1122+
Mode: lo.ToPtr(v1alpha2.LocalDNSModeRequired),
1123+
VnetDNSOverrides: overrides,
1124+
KubeDNSOverrides: map[string]*v1alpha2.LocalDNSOverrides{
1125+
".": createCompleteLocalDNSOverrides(false),
1126+
"cluster.local": createCompleteLocalDNSOverrides(false),
1127+
},
1128+
},
1129+
},
1130+
}
1131+
err := env.Client.Create(ctx, nodeClass)
1132+
if expectedErr == "" {
1133+
Expect(err).To(Succeed())
1134+
} else {
1135+
Expect(err).To(HaveOccurred())
1136+
Expect(err.Error()).To(ContainSubstring(expectedErr))
1137+
}
1138+
},
1139+
Entry("valid: exactly 10 properties", 10, ""),
1140+
Entry("invalid: 11 properties (exceeds limit)", 11, "must have at most 10 items"),
1141+
Entry("invalid: 12 properties (exceeds limit)", 12, "must have at most 10 items"),
1142+
)
1143+
1144+
DescribeTable("should validate KubeDNSOverrides property limits",
1145+
func(numZones int, expectedErr string) {
1146+
overrides := make(map[string]*v1alpha2.LocalDNSOverrides)
1147+
overrides["."] = createCompleteLocalDNSOverrides(false)
1148+
overrides["cluster.local"] = createCompleteLocalDNSOverrides(false)
1149+
// Add additional zones beyond the required 2
1150+
for i := 1; i <= numZones-2; i++ {
1151+
overrides[fmt.Sprintf("zone%d.local", i)] = createCompleteLocalDNSOverrides(false)
1152+
}
1153+
1154+
nodeClass := &v1alpha2.AKSNodeClass{
1155+
ObjectMeta: metav1.ObjectMeta{Name: strings.ToLower(randomdata.SillyName())},
1156+
Spec: v1alpha2.AKSNodeClassSpec{
1157+
LocalDNS: &v1alpha2.LocalDNS{
1158+
Mode: lo.ToPtr(v1alpha2.LocalDNSModeRequired),
1159+
VnetDNSOverrides: map[string]*v1alpha2.LocalDNSOverrides{
1160+
".": createCompleteLocalDNSOverrides(true),
1161+
"cluster.local": createCompleteLocalDNSOverrides(false),
1162+
},
1163+
KubeDNSOverrides: overrides,
1164+
},
1165+
},
1166+
}
1167+
err := env.Client.Create(ctx, nodeClass)
1168+
if expectedErr == "" {
1169+
Expect(err).To(Succeed())
1170+
} else {
1171+
Expect(err).To(HaveOccurred())
1172+
Expect(err.Error()).To(ContainSubstring(expectedErr))
1173+
}
1174+
},
1175+
Entry("valid: exactly 10 properties", 10, ""),
1176+
Entry("invalid: 11 properties (exceeds limit)", 11, "must have at most 10 items"),
1177+
Entry("invalid: 12 properties (exceeds limit)", 12, "must have at most 10 items"),
1178+
)
1179+
})
11061180
})
11071181

11081182
Context("OSDiskSizeGB", func() {

pkg/apis/v1beta1/crd_validation_cel_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1beta1_test
1818

1919
import (
20+
"fmt"
2021
"strings"
2122

2223
"github.com/Azure/karpenter-provider-azure/pkg/apis/v1beta1"
@@ -1103,6 +1104,80 @@ var _ = Describe("CEL/Validation", func() {
11031104
)
11041105
})
11051106

1107+
Context("LocalDNS MaxProperties validation", func() {
1108+
DescribeTable("should validate VnetDNSOverrides property limits",
1109+
func(numZones int, expectedErr string) {
1110+
overrides := make(map[string]*v1beta1.LocalDNSOverrides)
1111+
overrides["."] = createCompleteLocalDNSOverrides(true)
1112+
overrides["cluster.local"] = createCompleteLocalDNSOverrides(false)
1113+
// Add additional zones beyond the required 2
1114+
for i := 1; i <= numZones-2; i++ {
1115+
overrides[fmt.Sprintf("zone%d.local", i)] = createCompleteLocalDNSOverrides(false)
1116+
}
1117+
1118+
nodeClass := &v1beta1.AKSNodeClass{
1119+
ObjectMeta: metav1.ObjectMeta{Name: strings.ToLower(randomdata.SillyName())},
1120+
Spec: v1beta1.AKSNodeClassSpec{
1121+
LocalDNS: &v1beta1.LocalDNS{
1122+
Mode: lo.ToPtr(v1beta1.LocalDNSModeRequired),
1123+
VnetDNSOverrides: overrides,
1124+
KubeDNSOverrides: map[string]*v1beta1.LocalDNSOverrides{
1125+
".": createCompleteLocalDNSOverrides(false),
1126+
"cluster.local": createCompleteLocalDNSOverrides(false),
1127+
},
1128+
},
1129+
},
1130+
}
1131+
err := env.Client.Create(ctx, nodeClass)
1132+
if expectedErr == "" {
1133+
Expect(err).To(Succeed())
1134+
} else {
1135+
Expect(err).To(HaveOccurred())
1136+
Expect(err.Error()).To(ContainSubstring(expectedErr))
1137+
}
1138+
},
1139+
Entry("valid: exactly 10 properties", 10, ""),
1140+
Entry("invalid: 11 properties (exceeds limit)", 11, "must have at most 10 items"),
1141+
Entry("invalid: 12 properties (exceeds limit)", 12, "must have at most 10 items"),
1142+
)
1143+
1144+
DescribeTable("should validate KubeDNSOverrides property limits",
1145+
func(numZones int, expectedErr string) {
1146+
overrides := make(map[string]*v1beta1.LocalDNSOverrides)
1147+
overrides["."] = createCompleteLocalDNSOverrides(false)
1148+
overrides["cluster.local"] = createCompleteLocalDNSOverrides(false)
1149+
// Add additional zones beyond the required 2
1150+
for i := 1; i <= numZones-2; i++ {
1151+
overrides[fmt.Sprintf("zone%d.local", i)] = createCompleteLocalDNSOverrides(false)
1152+
}
1153+
1154+
nodeClass := &v1beta1.AKSNodeClass{
1155+
ObjectMeta: metav1.ObjectMeta{Name: strings.ToLower(randomdata.SillyName())},
1156+
Spec: v1beta1.AKSNodeClassSpec{
1157+
LocalDNS: &v1beta1.LocalDNS{
1158+
Mode: lo.ToPtr(v1beta1.LocalDNSModeRequired),
1159+
VnetDNSOverrides: map[string]*v1beta1.LocalDNSOverrides{
1160+
".": createCompleteLocalDNSOverrides(true),
1161+
"cluster.local": createCompleteLocalDNSOverrides(false),
1162+
},
1163+
KubeDNSOverrides: overrides,
1164+
},
1165+
},
1166+
}
1167+
err := env.Client.Create(ctx, nodeClass)
1168+
if expectedErr == "" {
1169+
Expect(err).To(Succeed())
1170+
} else {
1171+
Expect(err).To(HaveOccurred())
1172+
Expect(err.Error()).To(ContainSubstring(expectedErr))
1173+
}
1174+
},
1175+
Entry("valid: exactly 10 properties", 10, ""),
1176+
Entry("invalid: 11 properties (exceeds limit)", 11, "must have at most 10 items"),
1177+
Entry("invalid: 12 properties (exceeds limit)", 12, "must have at most 10 items"),
1178+
)
1179+
})
1180+
11061181
})
11071182

11081183
Context("OSDiskSizeGB", func() {

0 commit comments

Comments
 (0)