Skip to content

Commit 73d2661

Browse files
authored
Ingress: Fix listener timeout updates (kubernetes#2518)
PR kubernetes#2468 used an incorrect condition when updating the listener timeout values and only updates them when listener's allowedCIDRs are updated. This commit fixes this by making sure timeout values are checked too.
1 parent 119a3ea commit 73d2661

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

pkg/ingress/controller/openstack/octavia.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -365,19 +365,28 @@ func (os *OpenStack) EnsureListener(name string, lbID string, secretRefs []strin
365365

366366
log.WithFields(log.Fields{"lbID": lbID, "listenerName": name}).Info("listener created")
367367
} else {
368+
updateOpts := listeners.UpdateOpts{}
368369
if len(listenerAllowedCIDRs) > 0 && !reflect.DeepEqual(listener.AllowedCIDRs, listenerAllowedCIDRs) {
369-
_, err := listeners.Update(os.Octavia, listener.ID, listeners.UpdateOpts{
370-
AllowedCIDRs: &listenerAllowedCIDRs,
371-
TimeoutClientData: timeoutClientData,
372-
TimeoutMemberData: timeoutMemberData,
373-
TimeoutMemberConnect: timeoutMemberConnect,
374-
TimeoutTCPInspect: timeoutTCPInspect,
375-
}).Extract()
370+
updateOpts.AllowedCIDRs = &listenerAllowedCIDRs
371+
}
372+
373+
if timeoutClientData == nil && listener.TimeoutClientData != 0 || timeoutClientData != nil && *timeoutClientData != listener.TimeoutClientData ||
374+
timeoutMemberData == nil && listener.TimeoutMemberData != 0 || timeoutMemberData != nil && *timeoutMemberData != listener.TimeoutMemberData ||
375+
timeoutMemberConnect == nil && listener.TimeoutMemberConnect != 0 || timeoutMemberData != nil && *timeoutMemberConnect != listener.TimeoutMemberConnect ||
376+
timeoutTCPInspect == nil && listener.TimeoutTCPInspect != 0 || timeoutTCPInspect != nil && *timeoutTCPInspect != listener.TimeoutTCPInspect {
377+
updateOpts.TimeoutClientData = timeoutClientData
378+
updateOpts.TimeoutMemberData = timeoutMemberData
379+
updateOpts.TimeoutMemberConnect = timeoutMemberConnect
380+
updateOpts.TimeoutTCPInspect = timeoutTCPInspect
381+
}
382+
383+
if updateOpts != (listeners.UpdateOpts{}) {
384+
_, err := listeners.Update(os.Octavia, listener.ID, updateOpts).Extract()
376385
if err != nil {
377-
return nil, fmt.Errorf("failed to update listener allowed CIDRs: %v", err)
386+
return nil, fmt.Errorf("failed to update listener options: %v", err)
378387
}
379388

380-
log.WithFields(log.Fields{"listenerID": listener.ID}).Debug("listener allowed CIDRs updated")
389+
log.WithFields(log.Fields{"listenerID": listener.ID}).Debug("listener options updated")
381390
}
382391
}
383392

0 commit comments

Comments
 (0)