mirror of https://github.com/k3s-io/k3s
Fix potential panic when getting azure load balancer status
The IP address and security group rules may be nil when the resources are updating or deleting. Hence nil pointer deference may be happened then.pull/8/head
parent
ae935d7293
commit
db470d37a4
|
@ -371,8 +371,8 @@ func (az *Cloud) getServiceLoadBalancerStatus(service *v1.Service, lb *network.L
|
|||
}
|
||||
}
|
||||
|
||||
glog.V(2).Infof("getServiceLoadBalancerStatus gets ingress IP %q from frontendIPConfiguration %q for service %q", *lbIP, lbFrontendIPConfigName, serviceName)
|
||||
return &v1.LoadBalancerStatus{Ingress: []v1.LoadBalancerIngress{{IP: *lbIP}}}, nil
|
||||
glog.V(2).Infof("getServiceLoadBalancerStatus gets ingress IP %q from frontendIPConfiguration %q for service %q", to.String(lbIP), lbFrontendIPConfigName, serviceName)
|
||||
return &v1.LoadBalancerStatus{Ingress: []v1.LoadBalancerIngress{{IP: to.String(lbIP)}}}, nil
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1199,13 +1199,13 @@ func findIndex(strs []string, s string) (int, bool) {
|
|||
}
|
||||
|
||||
func allowsConsolidation(rule network.SecurityRule) bool {
|
||||
return strings.HasPrefix(*rule.Name, "shared")
|
||||
return strings.HasPrefix(to.String(rule.Name), "shared")
|
||||
}
|
||||
|
||||
func findConsolidationCandidate(rules []network.SecurityRule, rule network.SecurityRule) (int, bool) {
|
||||
for index, r := range rules {
|
||||
if allowsConsolidation(r) {
|
||||
if strings.EqualFold(*r.Name, *rule.Name) {
|
||||
if strings.EqualFold(to.String(r.Name), to.String(rule.Name)) {
|
||||
return index, true
|
||||
}
|
||||
}
|
||||
|
@ -1365,7 +1365,7 @@ func (az *Cloud) reconcilePublicIP(clusterName string, service *v1.Service, want
|
|||
|
||||
func findProbe(probes []network.Probe, probe network.Probe) bool {
|
||||
for _, existingProbe := range probes {
|
||||
if strings.EqualFold(*existingProbe.Name, *probe.Name) && *existingProbe.Port == *probe.Port {
|
||||
if strings.EqualFold(to.String(existingProbe.Name), to.String(probe.Name)) && to.Int32(existingProbe.Port) == to.Int32(probe.Port) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -1374,7 +1374,7 @@ func findProbe(probes []network.Probe, probe network.Probe) bool {
|
|||
|
||||
func findRule(rules []network.LoadBalancingRule, rule network.LoadBalancingRule) bool {
|
||||
for _, existingRule := range rules {
|
||||
if strings.EqualFold(*existingRule.Name, *rule.Name) &&
|
||||
if strings.EqualFold(to.String(existingRule.Name), to.String(rule.Name)) &&
|
||||
equalLoadBalancingRulePropertiesFormat(existingRule.LoadBalancingRulePropertiesFormat, rule.LoadBalancingRulePropertiesFormat) {
|
||||
return true
|
||||
}
|
||||
|
@ -1405,23 +1405,23 @@ func equalLoadBalancingRulePropertiesFormat(s, t *network.LoadBalancingRulePrope
|
|||
// despite different DestinationAddressPrefixes, in order to give it a chance to consolidate the two rules.
|
||||
func findSecurityRule(rules []network.SecurityRule, rule network.SecurityRule) bool {
|
||||
for _, existingRule := range rules {
|
||||
if !strings.EqualFold(*existingRule.Name, *rule.Name) {
|
||||
if !strings.EqualFold(to.String(existingRule.Name), to.String(rule.Name)) {
|
||||
continue
|
||||
}
|
||||
if existingRule.Protocol != rule.Protocol {
|
||||
continue
|
||||
}
|
||||
if !strings.EqualFold(*existingRule.SourcePortRange, *rule.SourcePortRange) {
|
||||
if !strings.EqualFold(to.String(existingRule.SourcePortRange), to.String(rule.SourcePortRange)) {
|
||||
continue
|
||||
}
|
||||
if !strings.EqualFold(*existingRule.DestinationPortRange, *rule.DestinationPortRange) {
|
||||
if !strings.EqualFold(to.String(existingRule.DestinationPortRange), to.String(rule.DestinationPortRange)) {
|
||||
continue
|
||||
}
|
||||
if !strings.EqualFold(*existingRule.SourceAddressPrefix, *rule.SourceAddressPrefix) {
|
||||
if !strings.EqualFold(to.String(existingRule.SourceAddressPrefix), to.String(rule.SourceAddressPrefix)) {
|
||||
continue
|
||||
}
|
||||
if !allowsConsolidation(existingRule) && !allowsConsolidation(rule) {
|
||||
if !strings.EqualFold(*existingRule.DestinationAddressPrefix, *rule.DestinationAddressPrefix) {
|
||||
if !strings.EqualFold(to.String(existingRule.DestinationAddressPrefix), to.String(rule.DestinationAddressPrefix)) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue