Skip to content

Commit 103f44d

Browse files
zetaablingxiankong
authored andcommitted
[occm] Check is timeout parameters for Octavia listener supported (kubernetes#1228)
* Check is timeout parameters for listener supported * remove changes to ensureloadbalancer
1 parent f6d910f commit 103f44d

File tree

2 files changed

+40
-27
lines changed

2 files changed

+40
-27
lines changed

pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,14 +1117,17 @@ func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, oldListeners []listener
11171117
if !ok {
11181118
listenerProtocol := listeners.Protocol(port.Protocol)
11191119
listenerCreateOpt := listeners.CreateOpts{
1120-
Protocol: listenerProtocol,
1121-
ProtocolPort: int(port.Port),
1122-
ConnLimit: &svcConf.connLimit,
1123-
LoadbalancerID: lbID,
1124-
TimeoutClientData: &svcConf.timeoutClientData,
1125-
TimeoutMemberConnect: &svcConf.timeoutMemberConnect,
1126-
TimeoutMemberData: &svcConf.timeoutMemberData,
1127-
TimeoutTCPInspect: &svcConf.timeoutTCPInspect,
1120+
Protocol: listenerProtocol,
1121+
ProtocolPort: int(port.Port),
1122+
ConnLimit: &svcConf.connLimit,
1123+
LoadbalancerID: lbID,
1124+
}
1125+
1126+
if openstackutil.IsOctaviaFeatureSupported(lbaas.lb, openstackutil.OctaviaFeatureTimeout) {
1127+
listenerCreateOpt.TimeoutClientData = &svcConf.timeoutClientData
1128+
listenerCreateOpt.TimeoutMemberConnect = &svcConf.timeoutMemberConnect
1129+
listenerCreateOpt.TimeoutMemberData = &svcConf.timeoutMemberData
1130+
listenerCreateOpt.TimeoutTCPInspect = &svcConf.timeoutTCPInspect
11281131
}
11291132

11301133
if svcConf.keepClientIP {
@@ -1166,21 +1169,23 @@ func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, oldListeners []listener
11661169
}
11671170
listenerChanged = true
11681171
}
1169-
if svcConf.timeoutClientData != listener.TimeoutClientData {
1170-
updateOpts.TimeoutClientData = &svcConf.timeoutClientData
1171-
listenerChanged = true
1172-
}
1173-
if svcConf.timeoutMemberConnect != listener.TimeoutMemberConnect {
1174-
updateOpts.TimeoutMemberConnect = &svcConf.timeoutMemberConnect
1175-
listenerChanged = true
1176-
}
1177-
if svcConf.timeoutMemberData != listener.TimeoutMemberData {
1178-
updateOpts.TimeoutMemberData = &svcConf.timeoutMemberData
1179-
listenerChanged = true
1180-
}
1181-
if svcConf.timeoutTCPInspect != listener.TimeoutTCPInspect {
1182-
updateOpts.TimeoutTCPInspect = &svcConf.timeoutTCPInspect
1183-
listenerChanged = true
1172+
if openstackutil.IsOctaviaFeatureSupported(lbaas.lb, openstackutil.OctaviaFeatureTimeout) {
1173+
if svcConf.timeoutClientData != listener.TimeoutClientData {
1174+
updateOpts.TimeoutClientData = &svcConf.timeoutClientData
1175+
listenerChanged = true
1176+
}
1177+
if svcConf.timeoutMemberConnect != listener.TimeoutMemberConnect {
1178+
updateOpts.TimeoutMemberConnect = &svcConf.timeoutMemberConnect
1179+
listenerChanged = true
1180+
}
1181+
if svcConf.timeoutMemberData != listener.TimeoutMemberData {
1182+
updateOpts.TimeoutMemberData = &svcConf.timeoutMemberData
1183+
listenerChanged = true
1184+
}
1185+
if svcConf.timeoutTCPInspect != listener.TimeoutTCPInspect {
1186+
updateOpts.TimeoutTCPInspect = &svcConf.timeoutTCPInspect
1187+
listenerChanged = true
1188+
}
11841189
}
11851190
if openstackutil.IsOctaviaFeatureSupported(lbaas.lb, openstackutil.OctaviaFeatureVIPACL) {
11861191
if !cpoutil.StringListEqual(svcConf.allowedCIDR, listener.AllowedCIDRs) {
@@ -1326,10 +1331,12 @@ func (lbaas *LbaasV2) checkService(service *corev1.Service, nodes []*corev1.Node
13261331
svcConf.keepClientIP = keepClientIP
13271332
svcConf.enableProxyProtocol = useProxyProtocol
13281333

1329-
svcConf.timeoutClientData = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutClientData, 50000)
1330-
svcConf.timeoutMemberConnect = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutMemberConnect, 5000)
1331-
svcConf.timeoutMemberData = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutMemberData, 50000)
1332-
svcConf.timeoutTCPInspect = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutTCPInspect, 0)
1334+
if openstackutil.IsOctaviaFeatureSupported(lbaas.lb, openstackutil.OctaviaFeatureTimeout) {
1335+
svcConf.timeoutClientData = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutClientData, 50000)
1336+
svcConf.timeoutMemberConnect = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutMemberConnect, 5000)
1337+
svcConf.timeoutMemberData = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutMemberData, 50000)
1338+
svcConf.timeoutTCPInspect = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerTimeoutTCPInspect, 0)
1339+
}
13331340

13341341
var listenerAllowedCIDRs []string
13351342
sourceRanges, err := GetLoadBalancerSourceRanges(service)

pkg/util/openstack/loadbalancer.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const (
3838
OctaviaFeatureTags = 0
3939
OctaviaFeatureVIPACL = 1
4040
OctaviaFeatureFlavors = 2
41+
OctaviaFeatureTimeout = 3
4142

4243
loadbalancerActiveInitDelay = 1 * time.Second
4344
loadbalancerActiveFactor = 1.2
@@ -111,6 +112,11 @@ func IsOctaviaFeatureSupported(client *gophercloud.ServiceClient, feature int) b
111112
if currentVer.GreaterThanOrEqual(verFlavors) {
112113
return true
113114
}
115+
case OctaviaFeatureTimeout:
116+
verFlavors, _ := version.NewVersion("v2.1")
117+
if currentVer.GreaterThanOrEqual(verFlavors) {
118+
return true
119+
}
114120
default:
115121
klog.Warningf("Feature %d not recognized", feature)
116122
}

0 commit comments

Comments
 (0)