Skip to content

Commit 67d2efd

Browse files
committed
feat: support inject newResourceLock for manager.Options
We need to insert some leadership election logic. For example, disaster recovery related.
1 parent 1638a6a commit 67d2efd

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

pkg/manager/options.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
Copyright 2022 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package manager
18+
19+
import (
20+
"k8s.io/client-go/rest"
21+
"k8s.io/client-go/tools/leaderelection/resourcelock"
22+
"sigs.k8s.io/controller-runtime/pkg/leaderelection"
23+
"sigs.k8s.io/controller-runtime/pkg/recorder"
24+
)
25+
26+
// SetNewResourceLock set a new resource lock function
27+
//
28+
// Allow this private field to be set in other packages
29+
// You can insert your own leader election logic
30+
func (opt *Options) SetNewResourceLock(
31+
newResourceLock func(config *rest.Config, recorderProvider recorder.Provider, options leaderelection.Options) (
32+
resourcelock.Interface, error)) {
33+
opt.newResourceLock = newResourceLock
34+
}

0 commit comments

Comments
 (0)