Skip to content

Commit b3e3f71

Browse files
authored
Merge pull request kubernetes-sigs#2195 from zhanggbj/cherry-pick-1897-to-release-1.6
[release-1.6] ✨ Re-introduce the keep alive flag
2 parents 6321792 + a61fd8c commit b3e3f71

File tree

8 files changed

+39
-26
lines changed

8 files changed

+39
-26
lines changed

config/manager/manager.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ spec:
2020
- --leader-elect
2121
- --logtostderr
2222
- --v=4
23+
- --enable-keep-alive
2324
- "--feature-gates=NodeAntiAffinity=${EXP_NODE_ANTI_AFFINITY:=false},NodeLabeling=${EXP_NODE_LABELING:=false}"
2425
image: gcr.io/cluster-api-provider-vsphere/release/manager:latest
2526
imagePullPolicy: IfNotPresent

controllers/vspherecluster_reconciler.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ func (r clusterReconciler) reconcileVCenterConnectivity(ctx *context.ClusterCont
325325
WithServer(ctx.VSphereCluster.Spec.Server).
326326
WithThumbprint(ctx.VSphereCluster.Spec.Thumbprint).
327327
WithFeatures(session.Feature{
328+
EnableKeepAlive: r.EnableKeepAlive,
328329
KeepAliveDuration: r.KeepAliveDuration,
329330
})
330331

controllers/vspheredeploymentzone_controller.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ func (r vsphereDeploymentZoneReconciler) getVCenterSession(ctx *context.VSphereD
231231
WithDatacenter(ctx.VSphereFailureDomain.Spec.Topology.Datacenter).
232232
WithUserInfo(r.ControllerContext.Username, r.ControllerContext.Password).
233233
WithFeatures(session.Feature{
234+
EnableKeepAlive: r.EnableKeepAlive,
234235
KeepAliveDuration: r.KeepAliveDuration,
235236
})
236237

controllers/vspherevm_controller.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,7 @@ func (r vmReconciler) retrieveVcenterSession(ctx goctx.Context, vsphereVM *infra
536536
WithUserInfo(r.ControllerContext.Username, r.ControllerContext.Password).
537537
WithThumbprint(vsphereVM.Spec.Thumbprint).
538538
WithFeatures(session.Feature{
539+
EnableKeepAlive: r.EnableKeepAlive,
539540
KeepAliveDuration: r.KeepAliveDuration,
540541
})
541542
cluster, err := clusterutilv1.GetClusterFromMetadata(r.ControllerContext, r.Client, vsphereVM.ObjectMeta)

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func InitFlags(fs *pflag.FlagSet) {
135135
&managerOpts.EnableKeepAlive,
136136
"enable-keep-alive",
137137
defaultEnableKeepAlive,
138-
"DEPRECATED: feature to enable keep alive handler in vsphere sessions. This functionality is enabled by default now")
138+
"feature to enable keep alive handler in vsphere sessions. This functionality is enabled by default.")
139139
flag.DurationVar(
140140
&managerOpts.KeepAliveDuration,
141141
"keep-alive-duration",

pkg/clustermodule/session.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func newParams(ctx context.ClusterContext) *session.Params {
4444
WithServer(ctx.VSphereCluster.Spec.Server).
4545
WithThumbprint(ctx.VSphereCluster.Spec.Thumbprint).
4646
WithFeatures(session.Feature{
47+
EnableKeepAlive: ctx.EnableKeepAlive,
4748
KeepAliveDuration: ctx.KeepAliveDuration,
4849
})
4950
}

pkg/constants/constants.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ const (
5151
// cluster are in maintenance mode.
5252
MaintenanceAnnotationLabel = "capv." + v1alpha3.GroupName + "/maintenance"
5353

54-
// DefaultEnableKeepAlive is false by default.
55-
DefaultEnableKeepAlive = false
54+
// DefaultEnableKeepAlive is true by default.
55+
DefaultEnableKeepAlive = true
5656

5757
// KeepaliveDuration unit minutes.
5858
DefaultKeepAliveDuration = time.Minute * 5

pkg/session/session.go

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import (
4141
ctrl "sigs.k8s.io/controller-runtime"
4242

4343
infrav1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1"
44+
"sigs.k8s.io/cluster-api-provider-vsphere/pkg/constants"
4445
)
4546

4647
var (
@@ -61,11 +62,14 @@ type Session struct {
6162
}
6263

6364
type Feature struct {
65+
EnableKeepAlive bool
6466
KeepAliveDuration time.Duration
6567
}
6668

6769
func DefaultFeature() Feature {
68-
return Feature{}
70+
return Feature{
71+
EnableKeepAlive: constants.DefaultEnableKeepAlive,
72+
}
6973
}
7074

7175
type Params struct {
@@ -220,15 +224,17 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
220224
SessionManager: session.NewManager(vimClient),
221225
}
222226

223-
vimClient.RoundTripper = session.KeepAliveHandler(vimClient.RoundTripper, feature.KeepAliveDuration, func(tripper soap.RoundTripper) error {
224-
_, err := methods.GetCurrentTime(ctx, tripper)
225-
if err != nil {
226-
logger.Error(err, "failed to keep alive govmomi client")
227-
logger.Info("clearing the session")
228-
sessionCache.Delete(sessionKey)
229-
}
230-
return err
231-
})
227+
if feature.EnableKeepAlive {
228+
vimClient.RoundTripper = session.KeepAliveHandler(vimClient.RoundTripper, feature.KeepAliveDuration, func(tripper soap.RoundTripper) error {
229+
_, err := methods.GetCurrentTime(ctx, tripper)
230+
if err != nil {
231+
logger.Error(err, "failed to keep alive govmomi client")
232+
logger.Info("clearing the session")
233+
sessionCache.Delete(sessionKey)
234+
}
235+
return err
236+
})
237+
}
232238

233239
if err := c.Login(ctx, url.User); err != nil {
234240
return nil, err
@@ -240,19 +246,21 @@ func newClient(ctx context.Context, logger logr.Logger, sessionKey string, url *
240246
// newManager creates a Manager that encompasses the REST Client for the VSphere tagging API.
241247
func newManager(ctx context.Context, logger logr.Logger, sessionKey string, client *vim25.Client, user *url.Userinfo, feature Feature) (*tags.Manager, error) {
242248
rc := rest.NewClient(client)
243-
rc.Transport = keepalive.NewHandlerREST(rc, feature.KeepAliveDuration, func() error {
244-
s, err := rc.Session(ctx)
245-
if err != nil {
246-
return err
247-
}
248-
if s != nil {
249-
return nil
250-
}
251-
252-
logger.Info("rest client session expired, clearing session")
253-
sessionCache.Delete(sessionKey)
254-
return errors.New("rest client session expired")
255-
})
249+
if feature.EnableKeepAlive {
250+
rc.Transport = keepalive.NewHandlerREST(rc, feature.KeepAliveDuration, func() error {
251+
s, err := rc.Session(ctx)
252+
if err != nil {
253+
return err
254+
}
255+
if s != nil {
256+
return nil
257+
}
258+
259+
logger.Info("rest client session expired, clearing session")
260+
sessionCache.Delete(sessionKey)
261+
return errors.New("rest client session expired")
262+
})
263+
}
256264
if err := rc.Login(ctx, user); err != nil {
257265
return nil, err
258266
}

0 commit comments

Comments
 (0)