@@ -24,9 +24,11 @@ import (
24
24
"k8s.io/apimachinery/pkg/api/meta"
25
25
"k8s.io/apimachinery/pkg/runtime"
26
26
"k8s.io/client-go/rest"
27
+ "k8s.io/client-go/tools/leaderelection/resourcelock"
27
28
"sigs.k8s.io/controller-runtime/pkg/cache"
28
29
"sigs.k8s.io/controller-runtime/pkg/cache/informertest"
29
30
"sigs.k8s.io/controller-runtime/pkg/client"
31
+ "sigs.k8s.io/controller-runtime/pkg/leaderelection"
30
32
fakeleaderelection "sigs.k8s.io/controller-runtime/pkg/leaderelection/fake"
31
33
"sigs.k8s.io/controller-runtime/pkg/reconcile"
32
34
"sigs.k8s.io/controller-runtime/pkg/recorder"
@@ -97,18 +99,27 @@ var _ = Describe("manger.Manager", func() {
97
99
close (done )
98
100
})
99
101
Context ("with leader election enabled" , func () {
100
- It ("should return an error if ID not set" , func () {
101
- m , err := New (cfg , Options {LeaderElection : true , LeaderElectionNamespace : "default" })
102
- Expect (m ).To (BeNil ())
103
- Expect (err ).To (HaveOccurred ())
104
- Expect (err .Error ()).To (ContainSubstring ("if leader election is enabled, both LeaderElectionID and LeaderElectionNamespace must be set" ))
102
+ It ("should default ID to controller-runtime if ID is not set" , func () {
103
+ var rl resourcelock.Interface
104
+ m , err := New (cfg , Options {
105
+ LeaderElection : true ,
106
+ LeaderElectionNamespace : "default" ,
107
+ newResourceLock : func (config * rest.Config , recorderProvider recorder.Provider , options leaderelection.Options ) (resourcelock.Interface , error ) {
108
+ var err error
109
+ rl , err = leaderelection .NewResourceLock (config , recorderProvider , options )
110
+ return rl , err
111
+ },
112
+ })
113
+ Expect (m ).ToNot (BeNil ())
114
+ Expect (err ).ToNot (HaveOccurred ())
115
+ Expect (rl .Describe ()).To (Equal ("default/controller-runtime" ))
105
116
})
106
117
107
- It ("should return an error if namespace not set" , func () {
118
+ It ("should return an error if namespace not set and not running in cluster " , func () {
108
119
m , err := New (cfg , Options {LeaderElection : true , LeaderElectionID : "controller-runtime" })
109
120
Expect (m ).To (BeNil ())
110
121
Expect (err ).To (HaveOccurred ())
111
- Expect (err .Error ()).To (ContainSubstring ("if leader election is enabled, both LeaderElectionID and LeaderElectionNamespace must be set " ))
122
+ Expect (err .Error ()).To (ContainSubstring ("unable to find leader election namespace: not running in-cluster, please specify LeaderElectionNamespace " ))
112
123
})
113
124
})
114
125
})
0 commit comments