Skip to content

Commit 7fbcc75

Browse files
committed
Make changes as mentioned in the proposal for configuring additional listeners
1 parent 3f66194 commit 7fbcc75

8 files changed

+110
-113
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: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import (
5858
"sigs.k8s.io/cluster-api/util"
5959
"sigs.k8s.io/cluster-api/util/patch"
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"
@@ -1025,14 +1024,11 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember() (*vpcv1.LoadBala
10251024

10261025
// TODO:SHILPA- handle multiple lbs as well
10271026
// Update each LoadBalancer pool
1028-
loadBalancerListeners := map[string]v1beta2.AdditionalListenerSpec{}
1027+
loadBalancerListeners := map[string]infrav1beta2.AdditionalListenerSpec{}
10291028
for _, additionalListener := range lb.AdditionalListeners {
1030-
// if additionalListener.Selector.MatchLabels == nil {
1031-
// continue
1032-
// }
10331029
// TODO:SHILPA- protocol is added irrespective of whats provided in the additionalListener protocol, need to handle this
10341030
if additionalListener.Protocol == nil {
1035-
additionalListener.Protocol = &v1beta2.VPCLoadBalancerListenerProtocolTCP
1031+
additionalListener.Protocol = &infrav1beta2.VPCLoadBalancerListenerProtocolTCP
10361032
}
10371033
loadBalancerListeners[fmt.Sprintf("%d-%s", additionalListener.Port, *additionalListener.Protocol)] = additionalListener
10381034
}
@@ -1044,14 +1040,12 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember() (*vpcv1.LoadBala
10441040
if err != nil {
10451041
return nil, fmt.Errorf("failed to list %s load balancer listener: %v", *listener.ID, err)
10461042
}
1047-
fmt.Println(*loadBalancerListener.Port, *loadBalancerListener.Protocol)
10481043
if additionalListener, ok := loadBalancerListeners[fmt.Sprintf("%d-%s", *loadBalancerListener.Port, *loadBalancerListener.Protocol)]; ok {
10491044
if loadBalancerListener.DefaultPool != nil {
10501045
loadBalancerListeners[*loadBalancerListener.DefaultPool.Name] = additionalListener
10511046
}
10521047
}
10531048
}
1054-
fmt.Println(loadBalancerListeners)
10551049
for _, pool := range loadBalancer.Pools {
10561050
m.V(3).Info("Updating LoadBalancer pool member", "pool", *pool.Name, "loadbalancer", *loadBalancer.Name, "ip", internalIP)
10571051
listOptions := &vpcv1.ListLoadBalancerPoolMembersOptions{}
@@ -1065,6 +1059,7 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember() (*vpcv1.LoadBala
10651059
var alreadyRegistered, skipListener bool
10661060

10671061
if loadBalancerListener, ok := loadBalancerListeners[*pool.Name]; ok {
1062+
targetPort = loadBalancerListener.Port
10681063
selector, err := metav1.LabelSelectorAsSelector(&loadBalancerListener.Selector)
10691064
if err != nil {
10701065
m.V(5).Info("Skipping listener addition, failed to get label selector from spec selector")
@@ -1084,29 +1079,11 @@ func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember() (*vpcv1.LoadBala
10841079
continue
10851080
}
10861081

1087-
if len(listLoadBalancerPoolMembers.Members) == 0 {
1088-
// For adding the first member to the pool we depend on the pool name to get the target port
1089-
// pool name will have port number appended at the end
1090-
lbNameSplit := strings.Split(*pool.Name, "-")
1091-
if len(lbNameSplit) == 0 {
1092-
// user might have created additional pool
1093-
m.V(3).Info("Not updating pool as it might be created externally", "pool", *pool.Name)
1094-
continue
1095-
}
1096-
targetPort, err = strconv.ParseInt(lbNameSplit[len(lbNameSplit)-1], 10, 64)
1097-
if err != nil {
1098-
// user might have created additional pool
1099-
m.Error(err, "Unable to fetch target port from pool name", "pool", *pool.Name)
1100-
continue
1101-
}
1102-
} else {
1103-
for _, member := range listLoadBalancerPoolMembers.Members {
1104-
if target, ok := member.Target.(*vpcv1.LoadBalancerPoolMemberTarget); ok {
1105-
targetPort = *member.Port
1106-
if *target.Address == internalIP {
1107-
alreadyRegistered = true
1108-
m.V(3).Info("Target IP already configured for pool", "IP", internalIP, "pool", *pool.Name)
1109-
}
1082+
for _, member := range listLoadBalancerPoolMembers.Members {
1083+
if target, ok := member.Target.(*vpcv1.LoadBalancerPoolMemberTarget); ok {
1084+
if *target.Address == internalIP {
1085+
alreadyRegistered = true
1086+
m.V(3).Info("Target IP already configured for pool", "IP", internalIP, "pool", *pool.Name)
11101087
}
11111088
}
11121089
}

0 commit comments

Comments
 (0)