@@ -112,18 +112,20 @@ func main() {
112112 setupLog .Error (nil , "namespace cannot be empty" )
113113 os .Exit (1 )
114114 }
115+
115116 if cfg .Manager .SecretsNamespace == "" {
116117 setupLog .Error (nil , "secretsNamespace cannot be empty" )
117118 os .Exit (1 )
118119 }
119120
120121 mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
121- Scheme : scheme ,
122- MetricsBindAddress : cfg .Prometheus .Addr ,
123- Port : 9443 ,
124- HealthProbeBindAddress : cfg .Health .Addr ,
125- LeaderElection : true ,
126- LeaderElectionID : "ws-manager-mk2-leader.gitpod.io" ,
122+ Scheme : scheme ,
123+ MetricsBindAddress : cfg .Prometheus .Addr ,
124+ Port : 9443 ,
125+ HealthProbeBindAddress : cfg .Health .Addr ,
126+ LeaderElection : true ,
127+ LeaderElectionID : "ws-manager-mk2-leader.gitpod.io" ,
128+ LeaderElectionReleaseOnCancel : true ,
127129 NewCache : func (config * rest.Config , opts cache.Options ) (cache.Cache , error ) {
128130 opts .Namespaces = []string {cfg .Manager .Namespace , cfg .Manager .SecretsNamespace }
129131 return cache .New (config , opts )
@@ -134,53 +136,50 @@ func main() {
134136 os .Exit (1 )
135137 }
136138
137- go func () {
138- <- mgr .Elected ()
139-
140- maintenanceReconciler , err := controllers .NewMaintenanceReconciler (mgr .GetClient ())
141- if err != nil {
142- setupLog .Error (err , "unable to create maintenance controller" , "controller" , "Maintenance" )
143- os .Exit (1 )
144- }
139+ mgrCtx := ctrl .SetupSignalHandler ()
145140
146- workspaceReconciler , err := controllers .NewWorkspaceReconciler (
147- mgr .GetClient (), mgr .GetScheme (), mgr .GetEventRecorderFor ("workspace" ), & cfg .Manager , metrics .Registry , maintenanceReconciler )
148- if err != nil {
149- setupLog .Error (err , "unable to create controller" , "controller" , "Workspace" )
150- os .Exit (1 )
151- }
141+ maintenanceReconciler , err := controllers .NewMaintenanceReconciler (mgr .GetClient ())
142+ if err != nil {
143+ setupLog .Error (err , "unable to create maintenance controller" , "controller" , "Maintenance" )
144+ os .Exit (1 )
145+ }
152146
153- activity := activity .NewWorkspaceActivity ()
147+ workspaceReconciler , err := controllers .NewWorkspaceReconciler (
148+ mgr .GetClient (), mgr .GetScheme (), mgr .GetEventRecorderFor ("workspace" ), & cfg .Manager , metrics .Registry , maintenanceReconciler )
149+ if err != nil {
150+ setupLog .Error (err , "unable to create controller" , "controller" , "Workspace" )
151+ os .Exit (1 )
152+ }
154153
155- timeoutReconciler , err := controllers .NewTimeoutReconciler (mgr .GetClient (), mgr .GetEventRecorderFor ("workspace" ), cfg .Manager , activity , maintenanceReconciler )
156- if err != nil {
157- setupLog .Error (err , "unable to create timeout controller" , "controller" , "Timeout" )
158- os .Exit (1 )
159- }
154+ activity := activity .NewWorkspaceActivity ()
160155
161- wsmanService , err := setupGRPCService ( cfg , mgr .GetClient () , activity , maintenanceReconciler )
162- if err != nil {
163- setupLog .Error (err , "unable to start manager service " )
164- os .Exit (1 )
165- }
156+ timeoutReconciler , err := controllers . NewTimeoutReconciler ( mgr . GetClient () , mgr .GetEventRecorderFor ( "workspace" ), cfg . Manager , activity , maintenanceReconciler )
157+ if err != nil {
158+ setupLog .Error (err , "unable to create timeout controller" , "controller" , "Timeout " )
159+ os .Exit (1 )
160+ }
166161
167- workspaceReconciler .OnReconcile = wsmanService .OnWorkspaceReconcile
162+ wsmanService , err := setupGRPCService (cfg , mgr .GetClient (), activity , maintenanceReconciler )
163+ if err != nil {
164+ setupLog .Error (err , "unable to start manager service" )
165+ os .Exit (1 )
166+ }
168167
169- if err = workspaceReconciler .SetupWithManager (mgr ); err != nil {
170- setupLog .Error (err , "unable to setup workspace controller with manager" , "controller" , "Workspace" )
171- os .Exit (1 )
172- }
168+ workspaceReconciler .OnReconcile = wsmanService .OnWorkspaceReconcile
169+ if err = workspaceReconciler .SetupWithManager (mgr ); err != nil {
170+ setupLog .Error (err , "unable to setup workspace controller with manager" , "controller" , "Workspace" )
171+ os .Exit (1 )
172+ }
173173
174- if err = timeoutReconciler .SetupWithManager (mgr ); err != nil {
175- setupLog .Error (err , "unable to setup timeout controller with manager" , "controller" , "Timeout" )
176- os .Exit (1 )
177- }
174+ if err = timeoutReconciler .SetupWithManager (mgr ); err != nil {
175+ setupLog .Error (err , "unable to setup timeout controller with manager" , "controller" , "Timeout" )
176+ os .Exit (1 )
177+ }
178178
179- if err = maintenanceReconciler .SetupWithManager (mgr ); err != nil {
180- setupLog .Error (err , "unable to setup maintenance controller with manager" , "controller" , "Maintenance" )
181- os .Exit (1 )
182- }
183- }()
179+ if err = maintenanceReconciler .SetupWithManager (mgrCtx , mgr ); err != nil {
180+ setupLog .Error (err , "unable to setup maintenance controller with manager" , "controller" , "Maintenance" )
181+ os .Exit (1 )
182+ }
184183
185184 // if err = (&workspacev1.Workspace{}).SetupWebhookWithManager(mgr); err != nil {
186185 // setupLog.Error(err, "unable to create webhook", "webhook", "Workspace")
@@ -199,7 +198,7 @@ func main() {
199198 }
200199
201200 setupLog .Info ("starting manager" )
202- if err := mgr .Start (ctrl . SetupSignalHandler () ); err != nil {
201+ if err := mgr .Start (mgrCtx ); err != nil {
203202 setupLog .Error (err , "problem running manager" )
204203 os .Exit (1 )
205204 }
0 commit comments