Skip to content

Commit 3adae6c

Browse files
authored
Merge pull request kubernetes#75490 from yastij/azure-lb-idle-timeout
skip idleTimeout erros when deleting azure LB
2 parents b000cd4 + f457179 commit 3adae6c

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

pkg/cloudprovider/providers/azure/azure_loadbalancer.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service,
604604
lbBackendPoolID := az.getBackendPoolID(lbName, lbBackendPoolName)
605605

606606
lbIdleTimeout, err := getIdleTimeout(service)
607-
if err != nil {
607+
if wantLb && err != nil {
608608
return nil, err
609609
}
610610

@@ -789,7 +789,7 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service,
789789
if az.serviceOwnsRule(service, *existingRule.Name) {
790790
keepRule := false
791791
klog.V(10).Infof("reconcileLoadBalancer for service (%s)(%t): lb rule(%s) - considering evicting", serviceName, wantLb, *existingRule.Name)
792-
if findRule(expectedRules, existingRule) {
792+
if findRule(expectedRules, existingRule, wantLb) {
793793
klog.V(10).Infof("reconcileLoadBalancer for service (%s)(%t): lb rule(%s) - keeping", serviceName, wantLb, *existingRule.Name)
794794
keepRule = true
795795
}
@@ -803,7 +803,7 @@ func (az *Cloud) reconcileLoadBalancer(clusterName string, service *v1.Service,
803803
// update rules: add needed
804804
for _, expectedRule := range expectedRules {
805805
foundRule := false
806-
if findRule(updatedRules, expectedRule) {
806+
if findRule(updatedRules, expectedRule, wantLb) {
807807
klog.V(10).Infof("reconcileLoadBalancer for service (%s)(%t): lb rule(%s) - already exists", serviceName, wantLb, *expectedRule.Name)
808808
foundRule = true
809809
}
@@ -1474,10 +1474,10 @@ func findProbe(probes []network.Probe, probe network.Probe) bool {
14741474
return false
14751475
}
14761476

1477-
func findRule(rules []network.LoadBalancingRule, rule network.LoadBalancingRule) bool {
1477+
func findRule(rules []network.LoadBalancingRule, rule network.LoadBalancingRule, wantLB bool) bool {
14781478
for _, existingRule := range rules {
14791479
if strings.EqualFold(to.String(existingRule.Name), to.String(rule.Name)) &&
1480-
equalLoadBalancingRulePropertiesFormat(existingRule.LoadBalancingRulePropertiesFormat, rule.LoadBalancingRulePropertiesFormat) {
1480+
equalLoadBalancingRulePropertiesFormat(existingRule.LoadBalancingRulePropertiesFormat, rule.LoadBalancingRulePropertiesFormat, wantLB) {
14811481
return true
14821482
}
14831483
}
@@ -1486,19 +1486,23 @@ func findRule(rules []network.LoadBalancingRule, rule network.LoadBalancingRule)
14861486

14871487
// equalLoadBalancingRulePropertiesFormat checks whether the provided LoadBalancingRulePropertiesFormat are equal.
14881488
// Note: only fields used in reconcileLoadBalancer are considered.
1489-
func equalLoadBalancingRulePropertiesFormat(s, t *network.LoadBalancingRulePropertiesFormat) bool {
1489+
func equalLoadBalancingRulePropertiesFormat(s *network.LoadBalancingRulePropertiesFormat, t *network.LoadBalancingRulePropertiesFormat, wantLB bool) bool {
14901490
if s == nil || t == nil {
14911491
return false
14921492
}
14931493

1494-
return reflect.DeepEqual(s.Protocol, t.Protocol) &&
1494+
properties := reflect.DeepEqual(s.Protocol, t.Protocol) &&
14951495
reflect.DeepEqual(s.FrontendIPConfiguration, t.FrontendIPConfiguration) &&
14961496
reflect.DeepEqual(s.BackendAddressPool, t.BackendAddressPool) &&
14971497
reflect.DeepEqual(s.LoadDistribution, t.LoadDistribution) &&
14981498
reflect.DeepEqual(s.FrontendPort, t.FrontendPort) &&
14991499
reflect.DeepEqual(s.BackendPort, t.BackendPort) &&
1500-
reflect.DeepEqual(s.EnableFloatingIP, t.EnableFloatingIP) &&
1501-
reflect.DeepEqual(s.IdleTimeoutInMinutes, t.IdleTimeoutInMinutes)
1500+
reflect.DeepEqual(s.EnableFloatingIP, t.EnableFloatingIP)
1501+
1502+
if wantLB {
1503+
return properties && reflect.DeepEqual(s.IdleTimeoutInMinutes, t.IdleTimeoutInMinutes)
1504+
}
1505+
return properties
15021506
}
15031507

15041508
// This compares rule's Name, Protocol, SourcePortRange, DestinationPortRange, SourceAddressPrefix, Access, and Direction.

pkg/cloudprovider/providers/azure/azure_loadbalancer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func TestFindRule(t *testing.T) {
210210
}
211211

212212
for i, test := range tests {
213-
findResult := findRule(test.existingRule, test.curRule)
213+
findResult := findRule(test.existingRule, test.curRule, true)
214214
assert.Equal(t, test.expected, findResult, fmt.Sprintf("TestCase[%d]: %s", i, test.msg))
215215
}
216216
}

0 commit comments

Comments
 (0)