Skip to content

Commit 24033c9

Browse files
committed
Add new way to generate leader election lock
1 parent cd8b87f commit 24033c9

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

staging/src/k8s.io/client-go/tools/leaderelection/resourcelock/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ go_library(
1818
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
1919
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
2020
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
21+
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
2122
"//staging/src/k8s.io/client-go/kubernetes/typed/coordination/v1:go_default_library",
2223
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
24+
"//staging/src/k8s.io/client-go/rest:go_default_library",
2325
],
2426
)
2527

staging/src/k8s.io/client-go/tools/leaderelection/resourcelock/interface.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ package resourcelock
1919
import (
2020
"context"
2121
"fmt"
22+
clientset "k8s.io/client-go/kubernetes"
23+
restclient "k8s.io/client-go/rest"
24+
"time"
2225

2326
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2427
"k8s.io/apimachinery/pkg/runtime"
@@ -140,3 +143,16 @@ func New(lockType string, ns string, name string, coreClient corev1.CoreV1Interf
140143
return nil, fmt.Errorf("Invalid lock-type %s", lockType)
141144
}
142145
}
146+
147+
// NewFromKubeconfig will create a lock of a given type according to the input parameters.
148+
func NewFromKubeconfig(lockType string, ns string, name string, rlc ResourceLockConfig, kubeconfig *restclient.Config, renewDeadline time.Duration) (Interface, error) {
149+
// shallow copy, do not modify the kubeconfig
150+
config := *kubeconfig
151+
timeout := ((renewDeadline / time.Millisecond) / 2) * time.Millisecond
152+
if timeout < time.Second {
153+
timeout = time.Second
154+
}
155+
config.Timeout = timeout
156+
leaderElectionClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "leader-election"))
157+
return New(lockType, ns, name, leaderElectionClient.CoreV1(), leaderElectionClient.CoordinationV1(), rlc)
158+
}

0 commit comments

Comments
 (0)