Skip to content

Commit e83a5da

Browse files
authored
Merge pull request #5378 from nawazkh/private-lb-bug
Perform nil check on old lb in azurecluster_validation.go
2 parents 8b8ba05 + 3c00cc1 commit e83a5da

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

api/v1beta1/azurecluster_validation.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ func validateAPIServerLB(lb *LoadBalancerSpec, old *LoadBalancerSpec, cidrs []st
458458
allErrs = append(allErrs, err)
459459
}
460460

461-
if len(old.FrontendIPs) != 0 && old.FrontendIPs[0].PrivateIPAddress != lb.FrontendIPs[0].PrivateIPAddress {
461+
if old != nil && len(old.FrontendIPs) != 0 && old.FrontendIPs[0].PrivateIPAddress != lb.FrontendIPs[0].PrivateIPAddress {
462462
allErrs = append(allErrs, field.Forbidden(fldPath.Child("name"), "API Server load balancer private IP should not be modified after AzureCluster creation."))
463463
}
464464
}

api/v1beta1/azurecluster_validation_test.go

+19-19
Original file line numberDiff line numberDiff line change
@@ -893,15 +893,15 @@ func TestValidateAPIServerLB(t *testing.T) {
893893
testcases := []struct {
894894
name string
895895
featureGate featuregate.Feature
896-
lb LoadBalancerSpec
897-
old LoadBalancerSpec
896+
lb *LoadBalancerSpec
897+
old *LoadBalancerSpec
898898
cpCIDRS []string
899899
wantErr bool
900900
expectedErr field.Error
901901
}{
902902
{
903903
name: "invalid SKU",
904-
lb: LoadBalancerSpec{
904+
lb: &LoadBalancerSpec{
905905
Name: "my-awesome-lb",
906906
FrontendIPs: []FrontendIP{
907907
{
@@ -923,7 +923,7 @@ func TestValidateAPIServerLB(t *testing.T) {
923923
},
924924
{
925925
name: "invalid Type",
926-
lb: LoadBalancerSpec{
926+
lb: &LoadBalancerSpec{
927927
LoadBalancerClassSpec: LoadBalancerClassSpec{
928928
Type: "Foo",
929929
},
@@ -938,7 +938,7 @@ func TestValidateAPIServerLB(t *testing.T) {
938938
},
939939
{
940940
name: "invalid Name",
941-
lb: LoadBalancerSpec{
941+
lb: &LoadBalancerSpec{
942942
Name: "***",
943943
},
944944
wantErr: true,
@@ -951,7 +951,7 @@ func TestValidateAPIServerLB(t *testing.T) {
951951
},
952952
{
953953
name: "too many IP configs",
954-
lb: LoadBalancerSpec{
954+
lb: &LoadBalancerSpec{
955955
LoadBalancerClassSpec: LoadBalancerClassSpec{
956956
Type: Public,
957957
},
@@ -982,7 +982,7 @@ func TestValidateAPIServerLB(t *testing.T) {
982982
{
983983
name: "too many IP configs with feature flag APIServerILB enabled",
984984
featureGate: feature.APIServerILB,
985-
lb: LoadBalancerSpec{
985+
lb: &LoadBalancerSpec{
986986
LoadBalancerClassSpec: LoadBalancerClassSpec{
987987
Type: Public,
988988
},
@@ -1012,7 +1012,7 @@ func TestValidateAPIServerLB(t *testing.T) {
10121012
},
10131013
{
10141014
name: "public LB with private IP",
1015-
lb: LoadBalancerSpec{
1015+
lb: &LoadBalancerSpec{
10161016
FrontendIPs: []FrontendIP{
10171017
{
10181018
Name: "ip-1",
@@ -1035,7 +1035,7 @@ func TestValidateAPIServerLB(t *testing.T) {
10351035
{
10361036
name: "public LB with private IP with feature flag APIServerILB enabled",
10371037
featureGate: feature.APIServerILB,
1038-
lb: LoadBalancerSpec{
1038+
lb: &LoadBalancerSpec{
10391039
Name: "my-awesome-lb",
10401040
FrontendIPs: []FrontendIP{
10411041
{
@@ -1062,7 +1062,7 @@ func TestValidateAPIServerLB(t *testing.T) {
10621062
},
10631063
{
10641064
name: "internal LB with public IP",
1065-
lb: LoadBalancerSpec{
1065+
lb: &LoadBalancerSpec{
10661066
FrontendIPs: []FrontendIP{
10671067
{
10681068
Name: "ip-1",
@@ -1085,7 +1085,7 @@ func TestValidateAPIServerLB(t *testing.T) {
10851085
{
10861086
name: "internal LB with public IP with feature flag APIServerILB enabled",
10871087
featureGate: feature.APIServerILB,
1088-
lb: LoadBalancerSpec{
1088+
lb: &LoadBalancerSpec{
10891089
FrontendIPs: []FrontendIP{
10901090
{
10911091
Name: "ip-1",
@@ -1107,7 +1107,7 @@ func TestValidateAPIServerLB(t *testing.T) {
11071107
},
11081108
{
11091109
name: "internal LB with invalid private IP",
1110-
lb: LoadBalancerSpec{
1110+
lb: &LoadBalancerSpec{
11111111
FrontendIPs: []FrontendIP{
11121112
{
11131113
Name: "ip-1",
@@ -1131,7 +1131,7 @@ func TestValidateAPIServerLB(t *testing.T) {
11311131
{
11321132
name: "internal LB with invalid private IP with feature flag APIServerILB enabled",
11331133
featureGate: feature.APIServerILB,
1134-
lb: LoadBalancerSpec{
1134+
lb: &LoadBalancerSpec{
11351135
FrontendIPs: []FrontendIP{
11361136
{
11371137
Name: "ip-1",
@@ -1154,7 +1154,7 @@ func TestValidateAPIServerLB(t *testing.T) {
11541154
},
11551155
{
11561156
name: "internal LB with out of range private IP",
1157-
lb: LoadBalancerSpec{
1157+
lb: &LoadBalancerSpec{
11581158
FrontendIPs: []FrontendIP{
11591159
{
11601160
Name: "ip-1",
@@ -1179,7 +1179,7 @@ func TestValidateAPIServerLB(t *testing.T) {
11791179
{
11801180
name: "internal LB with out of range private IP with feature flag APIServerILB enabled",
11811181
featureGate: feature.APIServerILB,
1182-
lb: LoadBalancerSpec{
1182+
lb: &LoadBalancerSpec{
11831183
FrontendIPs: []FrontendIP{
11841184
{
11851185
Name: "ip-1",
@@ -1203,7 +1203,7 @@ func TestValidateAPIServerLB(t *testing.T) {
12031203
},
12041204
{
12051205
name: "internal LB with in range private IP",
1206-
lb: LoadBalancerSpec{
1206+
lb: &LoadBalancerSpec{
12071207
FrontendIPs: []FrontendIP{
12081208
{
12091209
Name: "ip-1",
@@ -1224,7 +1224,7 @@ func TestValidateAPIServerLB(t *testing.T) {
12241224
{
12251225
name: "public LB with in-range private IP with feature flag APIServerILB enabled",
12261226
featureGate: feature.APIServerILB,
1227-
lb: LoadBalancerSpec{
1227+
lb: &LoadBalancerSpec{
12281228
FrontendIPs: []FrontendIP{
12291229
{
12301230
Name: "ip-1",
@@ -1252,7 +1252,7 @@ func TestValidateAPIServerLB(t *testing.T) {
12521252
{
12531253
name: "public LB with out of range private IP with feature flag APIServerILB enabled",
12541254
featureGate: feature.APIServerILB,
1255-
lb: LoadBalancerSpec{
1255+
lb: &LoadBalancerSpec{
12561256
FrontendIPs: []FrontendIP{
12571257
{
12581258
Name: "ip-1",
@@ -1282,7 +1282,7 @@ func TestValidateAPIServerLB(t *testing.T) {
12821282
if test.featureGate == feature.APIServerILB {
12831283
defer featuregatetesting.SetFeatureGateDuringTest(t, feature.Gates, test.featureGate, true)()
12841284
}
1285-
err := validateAPIServerLB(&test.lb, &test.old, test.cpCIDRS, field.NewPath("apiServerLB"))
1285+
err := validateAPIServerLB(test.lb, test.old, test.cpCIDRS, field.NewPath("apiServerLB"))
12861286
if test.wantErr {
12871287
g.Expect(err).To(ContainElement(MatchError(test.expectedErr.Error())))
12881288
} else {

0 commit comments

Comments
 (0)