@@ -35,7 +35,9 @@ import (
35
35
"sigs.k8s.io/controller-runtime/pkg/webhook"
36
36
37
37
kubefloworgv1beta1 "github.com/kubeflow/notebooks/workspaces/controller/api/v1beta1"
38
- "github.com/kubeflow/notebooks/workspaces/controller/internal/controller"
38
+ controllerInternal "github.com/kubeflow/notebooks/workspaces/controller/internal/controller"
39
+ "github.com/kubeflow/notebooks/workspaces/controller/internal/helper"
40
+ webhookInternal "github.com/kubeflow/notebooks/workspaces/controller/internal/webhook"
39
41
//+kubebuilder:scaffold:imports
40
42
)
41
43
@@ -115,21 +117,30 @@ func main() {
115
117
// the manager stops, so would be fine to enable this option. However,
116
118
// if you are doing or is intended to do any operation such as perform cleanups
117
119
// after the manager stops then its usage might be unsafe.
118
- // LeaderElectionReleaseOnCancel: true,
120
+ //
121
+ // TODO: check if we are doing anything which would prevent us from using this option.
122
+ //LeaderElectionReleaseOnCancel: true,
119
123
})
120
124
if err != nil {
121
125
setupLog .Error (err , "unable to start manager" )
122
126
os .Exit (1 )
123
127
}
124
128
125
- if err = (& controller.WorkspaceReconciler {
129
+ // setup field indexers on the manager cache. we use these indexes to efficiently
130
+ // query the cache for things like which Workspaces are using a particular WorkspaceKind
131
+ if err := helper .SetupManagerFieldIndexers (mgr ); err != nil {
132
+ setupLog .Error (err , "unable to setup field indexers" )
133
+ os .Exit (1 )
134
+ }
135
+
136
+ if err = (& controllerInternal.WorkspaceReconciler {
126
137
Client : mgr .GetClient (),
127
138
Scheme : mgr .GetScheme (),
128
139
}).SetupWithManager (mgr ); err != nil {
129
140
setupLog .Error (err , "unable to create controller" , "controller" , "Workspace" )
130
141
os .Exit (1 )
131
142
}
132
- if err = (& controller .WorkspaceKindReconciler {
143
+ if err = (& controllerInternal .WorkspaceKindReconciler {
133
144
Client : mgr .GetClient (),
134
145
Scheme : mgr .GetScheme (),
135
146
}).SetupWithManager (mgr ); err != nil {
@@ -138,6 +149,25 @@ func main() {
138
149
}
139
150
//+kubebuilder:scaffold:builder
140
151
152
+ if os .Getenv ("ENABLE_WEBHOOKS" ) != "false" {
153
+ if err = (& webhookInternal.WorkspaceValidator {
154
+ Client : mgr .GetClient (),
155
+ Scheme : mgr .GetScheme (),
156
+ }).SetupWebhookWithManager (mgr ); err != nil {
157
+ setupLog .Error (err , "unable to create webhook" , "webhook" , "Workspace" )
158
+ os .Exit (1 )
159
+ }
160
+ }
161
+ if os .Getenv ("ENABLE_WEBHOOKS" ) != "false" {
162
+ if err = (& webhookInternal.WorkspaceKindValidator {
163
+ Client : mgr .GetClient (),
164
+ Scheme : mgr .GetScheme (),
165
+ }).SetupWebhookWithManager (mgr ); err != nil {
166
+ setupLog .Error (err , "unable to create webhook" , "webhook" , "WorkspaceKind" )
167
+ os .Exit (1 )
168
+ }
169
+ }
170
+
141
171
if err := mgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
142
172
setupLog .Error (err , "unable to set up health check" )
143
173
os .Exit (1 )
0 commit comments