mirror of
https://github.com/kubernetes/client-go.git
synced 2025-07-17 16:52:22 +00:00
Add new way to generate leader election lock
Kubernetes-commit: 24033c908d8363ea6628b1d1c0b2a48c96a338da
This commit is contained in:
parent
67b0d2026a
commit
5b14150b09
@ -19,6 +19,9 @@ package resourcelock
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
restclient "k8s.io/client-go/rest"
|
||||||
|
"time"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -140,3 +143,16 @@ func New(lockType string, ns string, name string, coreClient corev1.CoreV1Interf
|
|||||||
return nil, fmt.Errorf("Invalid lock-type %s", lockType)
|
return nil, fmt.Errorf("Invalid lock-type %s", lockType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewFromKubeconfig will create a lock of a given type according to the input parameters.
|
||||||
|
func NewFromKubeconfig(lockType string, ns string, name string, rlc ResourceLockConfig, kubeconfig *restclient.Config, renewDeadline time.Duration) (Interface, error) {
|
||||||
|
// shallow copy, do not modify the kubeconfig
|
||||||
|
config := *kubeconfig
|
||||||
|
timeout := ((renewDeadline / time.Millisecond) / 2) * time.Millisecond
|
||||||
|
if timeout < time.Second {
|
||||||
|
timeout = time.Second
|
||||||
|
}
|
||||||
|
config.Timeout = timeout
|
||||||
|
leaderElectionClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "leader-election"))
|
||||||
|
return New(lockType, ns, name, leaderElectionClient.CoreV1(), leaderElectionClient.CoordinationV1(), rlc)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user