@@ -48,9 +48,6 @@ import (
4848 sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1"
4949 "github.com/k8snetworkplumbingwg/sriov-network-operator/controllers"
5050 "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/featuregate"
51- "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/leaderelection"
52-
53- "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/consts"
5451 snolog "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/log"
5552 "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/platforms"
5653 "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/utils"
@@ -75,69 +72,43 @@ func init() {
7572
7673func main () {
7774 var metricsAddr string
78- var enableLeaderElection bool
7975 var probeAddr string
8076
8177 flag .StringVar (& metricsAddr , "metrics-bind-address" , ":8080" , "The address the metric endpoint binds to." )
8278 flag .StringVar (& probeAddr , "health-probe-bind-address" , ":8081" , "The address the probe endpoint binds to." )
83- flag .BoolVar (& enableLeaderElection , "leader-elect" , false ,
84- "Enable leader election for controller manager. " +
85- "Enabling this will ensure there is only one active controller manager." )
79+
8680 snolog .BindFlags (flag .CommandLine )
8781 flag .Parse ()
8882 snolog .InitLog ()
8983
9084 restConfig := ctrl .GetConfigOrDie ()
9185
92- kubeClient , err := client .New (restConfig , client.Options {Scheme : scheme })
93- if err != nil {
94- setupLog .Error (err , "couldn't create client" )
95- os .Exit (1 )
96- }
97-
9886 if vars .ResourcePrefix == "" {
9987 setupLog .Error (nil , "RESOURCE_PREFIX environment variable can't be empty" )
10088 os .Exit (1 )
10189 }
10290
103- le := leaderelection .GetLeaderElectionConfig (kubeClient , enableLeaderElection )
104-
105- leaderElectionMgr , err := ctrl .NewManager (restConfig , ctrl.Options {
106- Scheme : scheme ,
107- HealthProbeBindAddress : probeAddr ,
108- Metrics : server.Options {BindAddress : "0" },
109- LeaderElection : enableLeaderElection ,
110- LeaseDuration : & le .LeaseDuration ,
111- LeaderElectionReleaseOnCancel : true ,
112- RenewDeadline : & le .RenewDeadline ,
113- RetryPeriod : & le .RetryPeriod ,
114- LeaderElectionID : consts .LeaderElectionID ,
91+ mgr , err := ctrl .NewManager (restConfig , ctrl.Options {
92+ Scheme : scheme ,
93+ HealthProbeBindAddress : probeAddr ,
94+ Metrics : server.Options {BindAddress : metricsAddr },
95+ WebhookServer : webhook .NewServer (webhook.Options {Port : 9443 }),
96+ Cache : cache.Options {DefaultNamespaces : map [string ]cache.Config {vars .Namespace : {}}},
11597 })
11698 if err != nil {
117- setupLog .Error (err , "unable to start leader election manager" )
99+ setupLog .Error (err , "unable to start manager" )
118100 os .Exit (1 )
119101 }
120102
121- if err := leaderElectionMgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
103+ if err := mgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
122104 setupLog .Error (err , "unable to set up health check" )
123105 os .Exit (1 )
124106 }
125- if err := leaderElectionMgr .AddReadyzCheck ("readyz" , healthz .Ping ); err != nil {
107+ if err := mgr .AddReadyzCheck ("readyz" , healthz .Ping ); err != nil {
126108 setupLog .Error (err , "unable to set up ready check" )
127109 os .Exit (1 )
128110 }
129111
130- mgr , err := ctrl .NewManager (restConfig , ctrl.Options {
131- Scheme : scheme ,
132- Metrics : server.Options {BindAddress : metricsAddr },
133- WebhookServer : webhook .NewServer (webhook.Options {Port : 9443 }),
134- Cache : cache.Options {DefaultNamespaces : map [string ]cache.Config {vars .Namespace : {}}},
135- })
136- if err != nil {
137- setupLog .Error (err , "unable to start manager" )
138- os .Exit (1 )
139- }
140-
141112 mgrGlobal , err := ctrl .NewManager (restConfig , ctrl.Options {
142113 Scheme : scheme ,
143114 Metrics : server.Options {BindAddress : "0" },
@@ -267,22 +238,6 @@ func main() {
267238 }
268239 // +kubebuilder:scaffold:builder
269240
270- leaderElectionErr := make (chan error )
271- leaderElectionContext , cancelLeaderElection := context .WithCancel (context .Background ())
272- go func () {
273- setupLog .Info ("starting leader election manager" )
274- leaderElectionErr <- leaderElectionMgr .Start (leaderElectionContext )
275- }()
276-
277- select {
278- case <- leaderElectionMgr .Elected ():
279- case err := <- leaderElectionErr :
280- setupLog .Error (err , "Leader Election Manager error" )
281- os .Exit (1 )
282- }
283-
284- setupLog .Info ("acquired lease" )
285-
286241 stopSignalCh := ctrl .SetupSignalHandler ()
287242
288243 globalManagerErr := make (chan error )
@@ -303,50 +258,26 @@ func main() {
303258 // Wait for a stop signal
304259 case <- stopSignalCh .Done ():
305260 setupLog .Info ("Stop signal received" )
306-
307261 globalManagerCancel ()
308262 namespacedManagerCancel ()
309263 <- globalManagerErr
310264 <- namespacedManagerErr
311-
312265 utils .Shutdown ()
313266
314- cancelLeaderElection ()
315- <- leaderElectionErr
316-
317- case err := <- leaderElectionErr :
318- setupLog .Error (err , "Leader Election Manager error" )
319- globalManagerCancel ()
320- namespacedManagerCancel ()
321- <- globalManagerErr
322- <- namespacedManagerErr
323-
324- os .Exit (1 )
325-
326267 case err := <- globalManagerErr :
327268 setupLog .Error (err , "Global Manager error" )
328-
329269 namespacedManagerCancel ()
330270 <- namespacedManagerErr
331-
332271 utils .Shutdown ()
333272
334- cancelLeaderElection ()
335- <- leaderElectionErr
336-
337273 os .Exit (1 )
338274
339275 case err := <- namespacedManagerErr :
340276 setupLog .Error (err , "Namsepaced Manager error" )
341-
342277 globalManagerCancel ()
343278 <- globalManagerErr
344-
345279 utils .Shutdown ()
346280
347- cancelLeaderElection ()
348- <- leaderElectionErr
349-
350281 os .Exit (1 )
351282 }
352283}
0 commit comments