in controllers/manager/gatewayvmconfiguration_controller.go [739:778]
func (r *GatewayVMConfigurationReconciler) reconcileLbBackendPool(
lbBackendpoolID string,
primaryNic *compute.VirtualMachineScaleSetNetworkConfiguration,
) (needUpdate bool, err error) {
if primaryNic == nil {
return false, fmt.Errorf("vmss(vm) primary network interface not found")
}
needBackendPool := false
for _, ipConfig := range primaryNic.Properties.IPConfigurations {
if strings.HasPrefix(to.Val(ipConfig.Name), consts.ManagedResourcePrefix) {
needBackendPool = true
break
}
}
for _, ipConfig := range primaryNic.Properties.IPConfigurations {
if ipConfig.Properties != nil && to.Val(ipConfig.Properties.Primary) {
backendPools := ipConfig.Properties.LoadBalancerBackendAddressPools
for i, backend := range backendPools {
if strings.EqualFold(lbBackendpoolID, to.Val(backend.ID)) {
if !needBackendPool {
backendPools = append(backendPools[:i], backendPools[i+1:]...)
ipConfig.Properties.LoadBalancerBackendAddressPools = backendPools
return true, nil
} else {
return false, nil
}
}
}
if !needBackendPool {
return false, nil
}
backendPools = append(backendPools, &compute.SubResource{ID: to.Ptr(lbBackendpoolID)})
ipConfig.Properties.LoadBalancerBackendAddressPools = backendPools
return true, nil
}
}
return false, fmt.Errorf("vmss(vm) primary ipConfig not found")
}