Skip to content

Commit 1b88ddd

Browse files
committed
Make changes as mentioned in the proposal for configuring additional listeners
1 parent 1d6ad8c commit 1b88ddd

8 files changed

+112
-115
lines changed

api/v1beta2/ibmvpccluster_types.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,10 @@ type AdditionalListenerSpec struct {
128128
// +optional
129129
Protocol *VPCLoadBalancerListenerProtocol `json:"protocol,omitempty"`
130130

131-
Selector metav1.LabelSelector `json:"selector"`
131+
// Selector is used to select the machines with same label to assign the listener
132+
// +kubebuilder:validation:Optional
133+
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Selector is immutable"
134+
Selector metav1.LabelSelector `json:"selector,omitempty"`
132135
}
133136

134137
// VPCLoadBalancerBackendPoolSpec defines the desired configuration of a VPC Load Balancer Backend Pool.

cloud/scope/powervs_machine.go

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import (
5858
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
5959
"sigs.k8s.io/cluster-api/util"
6060

61-
"sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
6261
infrav1beta2 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
6362
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/authenticator"
6463
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/cos"
@@ -1001,14 +1000,11 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember(ctx context.Contex
10011000

10021001
// TODO:SHILPA- handle multiple lbs as well
10031002
// Update each LoadBalancer pool
1004-
loadBalancerListeners := map[string]v1beta2.AdditionalListenerSpec{}
1003+
loadBalancerListeners := map[string]infrav1beta2.AdditionalListenerSpec{}
10051004
for _, additionalListener := range lb.AdditionalListeners {
1006-
// if additionalListener.Selector.MatchLabels == nil {
1007-
// continue
1008-
// }
10091005
// TODO:SHILPA- protocol is added irrespective of whats provided in the additionalListener protocol, need to handle this
10101006
if additionalListener.Protocol == nil {
1011-
additionalListener.Protocol = &v1beta2.VPCLoadBalancerListenerProtocolTCP
1007+
additionalListener.Protocol = &infrav1beta2.VPCLoadBalancerListenerProtocolTCP
10121008
}
10131009
loadBalancerListeners[fmt.Sprintf("%d-%s", additionalListener.Port, *additionalListener.Protocol)] = additionalListener
10141010
}
@@ -1020,14 +1016,12 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember(ctx context.Contex
10201016
if err != nil {
10211017
return nil, fmt.Errorf("failed to list %s load balancer listener: %v", *listener.ID, err)
10221018
}
1023-
fmt.Println(*loadBalancerListener.Port, *loadBalancerListener.Protocol)
10241019
if additionalListener, ok := loadBalancerListeners[fmt.Sprintf("%d-%s", *loadBalancerListener.Port, *loadBalancerListener.Protocol)]; ok {
10251020
if loadBalancerListener.DefaultPool != nil {
10261021
loadBalancerListeners[*loadBalancerListener.DefaultPool.Name] = additionalListener
10271022
}
10281023
}
10291024
}
1030-
fmt.Println(loadBalancerListeners)
10311025
for _, pool := range loadBalancer.Pools {
10321026
log.V(3).Info("Updating LoadBalancer pool member", "pool", *pool.Name, "loadBalancerName", *loadBalancer.Name, "IP", internalIP)
10331027
listOptions := &vpcv1.ListLoadBalancerPoolMembersOptions{}
@@ -1041,9 +1035,10 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember(ctx context.Contex
10411035
var alreadyRegistered, skipListener bool
10421036

10431037
if loadBalancerListener, ok := loadBalancerListeners[*pool.Name]; ok {
1038+
targetPort = loadBalancerListener.Port
10441039
selector, err := metav1.LabelSelectorAsSelector(&loadBalancerListener.Selector)
10451040
if err != nil {
1046-
m.V(5).Info("Skipping listener addition, failed to get label selector from spec selector")
1041+
log.V(5).Info("Skipping listener addition, failed to get label selector from spec selector")
10471042
continue
10481043
}
10491044

@@ -1056,33 +1051,15 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember(ctx context.Contex
10561051
}
10571052
}
10581053
if skipListener {
1059-
m.V(3).Info("Skip adding listener, machine label doesn't match with the listener label selector", "pool", *pool.Name, "targetip", internalIP, "machine", m.IBMPowerVSMachine.Name, "clusterName", m.IBMPowerVSCluster.Name)
1054+
log.V(3).Info("Skip adding listener, machine label doesn't match with the listener label selector", "pool", *pool.Name, "targetip", internalIP, "machine", m.IBMPowerVSMachine.Name, "clusterName", m.IBMPowerVSCluster.Name)
10601055
continue
10611056
}
10621057

1063-
if len(listLoadBalancerPoolMembers.Members) == 0 {
1064-
// For adding the first member to the pool we depend on the pool name to get the target port
1065-
// pool name will have port number appended at the end
1066-
lbNameSplit := strings.Split(*pool.Name, "-")
1067-
if len(lbNameSplit) == 0 {
1068-
// user might have created additional pool
1069-
log.V(3).Info("Not updating pool as it might be created externally", "poolName", *pool.Name)
1070-
continue
1071-
}
1072-
targetPort, err = strconv.ParseInt(lbNameSplit[len(lbNameSplit)-1], 10, 64)
1073-
if err != nil {
1074-
// user might have created additional pool
1075-
log.Error(err, "unable to fetch target port from pool name", "poolName", *pool.Name)
1076-
continue
1077-
}
1078-
} else {
1079-
for _, member := range listLoadBalancerPoolMembers.Members {
1080-
if target, ok := member.Target.(*vpcv1.LoadBalancerPoolMemberTarget); ok {
1081-
targetPort = *member.Port
1082-
if *target.Address == internalIP {
1083-
alreadyRegistered = true
1084-
log.V(3).Info("Target IP already configured for pool", "IP", internalIP, "poolName", *pool.Name)
1085-
}
1058+
for _, member := range listLoadBalancerPoolMembers.Members {
1059+
if target, ok := member.Target.(*vpcv1.LoadBalancerPoolMemberTarget); ok {
1060+
if *target.Address == internalIP {
1061+
alreadyRegistered = true
1062+
log.V(3).Info("Target IP already configured for pool", "IP", internalIP, "poolName", *pool.Name)
10861063
}
10871064
}
10881065
}

0 commit comments

Comments
 (0)