Skip to content

Commit cf2d7bb

Browse files
committed
Use manager Elected channel
1 parent 9aec12f commit cf2d7bb

File tree

1 file changed

+44
-36
lines changed

1 file changed

+44
-36
lines changed

components/ws-manager-mk2/main.go

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"google.golang.org/grpc/credentials"
1919
"google.golang.org/grpc/credentials/insecure"
2020
_ "k8s.io/client-go/plugin/pkg/client/auth"
21+
"k8s.io/client-go/rest"
2122

2223
"github.com/bombsimon/logrusr/v2"
2324
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
@@ -123,52 +124,59 @@ func main() {
123124
HealthProbeBindAddress: cfg.Health.Addr,
124125
LeaderElection: true,
125126
LeaderElectionID: "ws-manager-mk2-leader.gitpod.io",
126-
NewCache: cache.MultiNamespacedCacheBuilder([]string{cfg.Manager.Namespace, cfg.Manager.SecretsNamespace}),
127+
NewCache: func(config *rest.Config, opts cache.Options) (cache.Cache, error) {
128+
opts.Namespaces = []string{cfg.Manager.Namespace, cfg.Manager.SecretsNamespace}
129+
return cache.New(config, opts)
130+
},
127131
})
128132
if err != nil {
129133
setupLog.Error(err, "unable to start manager")
130134
os.Exit(1)
131135
}
132136

133-
maintenanceReconciler, err := controllers.NewMaintenanceReconciler(mgr.GetClient())
134-
if err != nil {
135-
setupLog.Error(err, "unable to create maintenance controller", "controller", "Maintenance")
136-
os.Exit(1)
137-
}
137+
go func() {
138+
<-mgr.Elected()
138139

139-
workspaceReconciler, err := controllers.NewWorkspaceReconciler(
140-
mgr.GetClient(), mgr.GetScheme(), mgr.GetEventRecorderFor("workspace"), &cfg.Manager, metrics.Registry, maintenanceReconciler)
141-
if err != nil {
142-
setupLog.Error(err, "unable to create controller", "controller", "Workspace")
143-
os.Exit(1)
144-
}
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+
}
145145

146-
activity := activity.NewWorkspaceActivity()
147-
timeoutReconciler, err := controllers.NewTimeoutReconciler(mgr.GetClient(), mgr.GetEventRecorderFor("workspace"), cfg.Manager, activity, maintenanceReconciler)
148-
if err != nil {
149-
setupLog.Error(err, "unable to create timeout controller", "controller", "Timeout")
150-
os.Exit(1)
151-
}
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+
}
152152

153-
wsmanService, err := setupGRPCService(cfg, mgr.GetClient(), activity, maintenanceReconciler)
154-
if err != nil {
155-
setupLog.Error(err, "unable to start manager service")
156-
os.Exit(1)
157-
}
153+
activity := activity.NewWorkspaceActivity()
154+
timeoutReconciler, err := controllers.NewTimeoutReconciler(mgr.GetClient(), mgr.GetEventRecorderFor("workspace"), cfg.Manager, activity, maintenanceReconciler)
155+
if err != nil {
156+
setupLog.Error(err, "unable to create timeout controller", "controller", "Timeout")
157+
os.Exit(1)
158+
}
158159

159-
workspaceReconciler.OnReconcile = wsmanService.OnWorkspaceReconcile
160-
if err = workspaceReconciler.SetupWithManager(mgr); err != nil {
161-
setupLog.Error(err, "unable to setup workspace controller with manager", "controller", "Workspace")
162-
os.Exit(1)
163-
}
164-
if err = timeoutReconciler.SetupWithManager(mgr); err != nil {
165-
setupLog.Error(err, "unable to setup timeout controller with manager", "controller", "Timeout")
166-
os.Exit(1)
167-
}
168-
if err = maintenanceReconciler.SetupWithManager(mgr); err != nil {
169-
setupLog.Error(err, "unable to setup maintenance controller with manager", "controller", "Maintenance")
170-
os.Exit(1)
171-
}
160+
wsmanService, err := setupGRPCService(cfg, mgr.GetClient(), activity, maintenanceReconciler)
161+
if err != nil {
162+
setupLog.Error(err, "unable to start manager service")
163+
os.Exit(1)
164+
}
165+
166+
workspaceReconciler.OnReconcile = wsmanService.OnWorkspaceReconcile
167+
if err = workspaceReconciler.SetupWithManager(mgr); err != nil {
168+
setupLog.Error(err, "unable to setup workspace controller with manager", "controller", "Workspace")
169+
os.Exit(1)
170+
}
171+
if err = timeoutReconciler.SetupWithManager(mgr); err != nil {
172+
setupLog.Error(err, "unable to setup timeout controller with manager", "controller", "Timeout")
173+
os.Exit(1)
174+
}
175+
if err = maintenanceReconciler.SetupWithManager(mgr); err != nil {
176+
setupLog.Error(err, "unable to setup maintenance controller with manager", "controller", "Maintenance")
177+
os.Exit(1)
178+
}
179+
}()
172180

173181
// if err = (&workspacev1.Workspace{}).SetupWebhookWithManager(mgr); err != nil {
174182
// setupLog.Error(err, "unable to create webhook", "webhook", "Workspace")

0 commit comments

Comments
 (0)