Skip to content

Commit

Permalink
[DualStack] Support FrontendIPConfig and reconcileLB()
Browse files Browse the repository at this point in the history
* DualStack feature code
* Refactor related functions and methods
* Refactor and add new UTs

Signed-off-by: Zhecheng Li <zhechengli@microsoft.com>
  • Loading branch information
lzhecheng committed May 8, 2023
1 parent 8e63668 commit 934f824
Show file tree
Hide file tree
Showing 11 changed files with 1,668 additions and 508 deletions.
236 changes: 167 additions & 69 deletions pkg/provider/azure_loadbalancer.go

Large diffs are not rendered by default.

45 changes: 9 additions & 36 deletions pkg/provider/azure_loadbalancer_backendpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,8 @@ func isLBBackendPoolsExisting(lbBackendPoolNames map[bool]string, bpName *string
func (bc *backendPoolTypeNodeIPConfig) CleanupVMSetFromBackendPoolByCondition(slb *network.LoadBalancer, service *v1.Service, nodes []*v1.Node, clusterName string, shouldRemoveVMSetFromSLB func(string) bool) (*network.LoadBalancer, error) {
v4Enabled, v6Enabled := getIPFamiliesEnabled(service)

lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolIDs := map[bool]string{
false: bc.getBackendPoolID(pointer.StringDeref(slb.Name, ""), lbBackendPoolNames[false]),
true: bc.getBackendPoolID(pointer.StringDeref(slb.Name, ""), lbBackendPoolNames[true]),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
lbBackendPoolIDs := bc.getBackendPoolIDs(clusterName, pointer.StringDeref(slb.Name, ""))
newBackendPools := make([]network.BackendAddressPool, 0)
if slb.LoadBalancerPropertiesFormat != nil && slb.BackendAddressPools != nil {
newBackendPools = *slb.BackendAddressPools
Expand Down Expand Up @@ -175,14 +169,8 @@ func (bc *backendPoolTypeNodeIPConfig) ReconcileBackendPools(clusterName string,
lbName := *lb.Name

serviceName := getServiceName(service)
lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolIDs := map[bool]string{
false: bc.getBackendPoolID(lbName, lbBackendPoolNames[false]),
true: bc.getBackendPoolID(lbName, lbBackendPoolNames[true]),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
lbBackendPoolIDs := bc.getBackendPoolIDs(clusterName, lbName)
vmSetName := bc.mapLoadBalancerNameToVMSet(lbName, clusterName)
isBackendPoolPreConfigured := bc.isBackendPoolPreConfigured(service)

Expand Down Expand Up @@ -347,10 +335,7 @@ func getBackendIPConfigurationsToBeDeleted(

func (bc *backendPoolTypeNodeIPConfig) GetBackendPrivateIPs(clusterName string, service *v1.Service, lb *network.LoadBalancer) ([]string, []string) {
serviceName := getServiceName(service)
lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
if lb.LoadBalancerPropertiesFormat == nil || lb.LoadBalancerPropertiesFormat.BackendAddressPools == nil {
return nil, nil
}
Expand Down Expand Up @@ -493,10 +478,7 @@ func (bi *backendPoolTypeNodeIP) EnsureHostsInPool(service *v1.Service, nodes []
}

func (bi *backendPoolTypeNodeIP) CleanupVMSetFromBackendPoolByCondition(slb *network.LoadBalancer, service *v1.Service, nodes []*v1.Node, clusterName string, shouldRemoveVMSetFromSLB func(string) bool) (*network.LoadBalancer, error) {
lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
newBackendPools := make([]network.BackendAddressPool, 0)
if slb.LoadBalancerPropertiesFormat != nil && slb.BackendAddressPools != nil {
newBackendPools = *slb.BackendAddressPools
Expand Down Expand Up @@ -564,15 +546,9 @@ func (bi *backendPoolTypeNodeIP) ReconcileBackendPools(clusterName string, servi
foundBackendPools := map[bool]bool{}
lbName := *lb.Name
serviceName := getServiceName(service)
lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
vmSetName := bi.mapLoadBalancerNameToVMSet(lbName, clusterName)
lbBackendPoolIDs := map[bool]string{
false: bi.getBackendPoolID(pointer.StringDeref(lb.Name, ""), lbBackendPoolNames[false]),
true: bi.getBackendPoolID(pointer.StringDeref(lb.Name, ""), lbBackendPoolNames[true]),
}
lbBackendPoolIDs := bi.getBackendPoolIDs(clusterName, pointer.StringDeref(lb.Name, ""))
isBackendPoolPreConfigured := bi.isBackendPoolPreConfigured(service)

mc := metrics.NewMetricContext("services", "migrate_to_ip_based_backend_pool", bi.ResourceGroup, bi.getNetworkResourceSubscriptionID(), serviceName)
Expand Down Expand Up @@ -685,10 +661,7 @@ func (bi *backendPoolTypeNodeIP) ReconcileBackendPools(clusterName string, servi

func (bi *backendPoolTypeNodeIP) GetBackendPrivateIPs(clusterName string, service *v1.Service, lb *network.LoadBalancer) ([]string, []string) {
serviceName := getServiceName(service)
lbBackendPoolNames := map[bool]string{
false: getBackendPoolName(clusterName, false),
true: getBackendPoolName(clusterName, true),
}
lbBackendPoolNames := getBackendPoolNames(clusterName)
if lb.LoadBalancerPropertiesFormat == nil || lb.LoadBalancerPropertiesFormat.BackendAddressPools == nil {
return nil, nil
}
Expand Down

0 comments on commit 934f824

Please sign in to comment.