@@ -192,17 +192,14 @@ func main() {
192192 exitOnError (err , cfg .KubeRay .IngressDomain )
193193 }
194194
195- setupLog .Info ("setting up indexers" )
196- exitOnError (setupWorkloadIndexer (ctx , cancel , mgr , cfg ), "unable to setup indexers" )
197-
198195 setupLog .Info ("setting up health endpoints" )
199196 exitOnError (setupProbeEndpoints (mgr , cfg , certsReady ), "unable to set up health check" )
200197
201198 setupLog .Info ("setting up RayCluster controller" )
202199 go waitForRayClusterAPIandSetupController (ctx , mgr , cfg , isOpenShift (ctx , kubeClient .DiscoveryClient ), certsReady )
203200
204- setupLog .Info ("setting up AppWrapper controller " )
205- go waitForWorkloadAPIAndSetupAppWrapperController ( ctx , mgr , cfg , certsReady )
201+ setupLog .Info ("setting up AppWrapper components " )
202+ exitOnError ( setupAppWrapperComponents ( ctx , cancel , mgr , cfg , certsReady ), "unable to setup AppWrapper" )
206203
207204 setupLog .Info ("starting manager" )
208205 exitOnError (mgr .Start (ctx ), "error running manager" )
@@ -237,44 +234,22 @@ func waitForRayClusterAPIandSetupController(ctx context.Context, mgr ctrl.Manage
237234 }
238235}
239236
240- func setupAppWrapperController (mgr ctrl.Manager , cfg * config.CodeFlareOperatorConfiguration , certsReady chan struct {}) error {
241- setupLog .Info ("Waiting for certificate generation to complete" )
242- <- certsReady
243- setupLog .Info ("Certs ready" )
244-
245- setupLog .Info ("Setting up AppWrapper webhook and controller" )
246- if err := awctrl .SetupWebhooks (mgr , cfg .AppWrapper .Config ); err != nil {
247- return err
248- }
249- return awctrl .SetupControllers (mgr , cfg .AppWrapper .Config )
250- }
251-
252- func waitForWorkloadAPIAndSetupAppWrapperController (ctx context.Context , mgr ctrl.Manager , cfg * config.CodeFlareOperatorConfiguration , certsReady chan struct {}) {
237+ func setupAppWrapperComponents (ctx context.Context , cancel context.CancelFunc , mgr ctrl.Manager ,
238+ cfg * config.CodeFlareOperatorConfiguration , certsReady chan struct {}) error {
253239 if cfg .AppWrapper == nil || ! ptr .Deref (cfg .AppWrapper .Enabled , false ) {
254240 setupLog .Info ("AppWrapper controller disabled by config" )
255- }
256-
257- if isAPIAvailable (ctx , mgr , workloadAPI ) {
258- exitOnError (setupAppWrapperController (mgr , cfg , certsReady ), "unable to setup AppWrapper controller" )
259- } else {
260- waitForAPI (ctx , mgr , workloadAPI , func () {
261- exitOnError (setupAppWrapperController (mgr , cfg , certsReady ), "unable to setup AppWrapper controller" )
262- })
263- }
264- }
265-
266- func setupWorkloadIndexer (ctx context.Context , cancel context.CancelFunc , mgr ctrl.Manager , cfg * config.CodeFlareOperatorConfiguration ) error {
267- if cfg .AppWrapper == nil || ! ptr .Deref (cfg .AppWrapper .Enabled , false ) {
268- setupLog .Info ("Workload indexer disabled by config" )
269241 return nil
270242 }
271243
272244 if isAPIAvailable (ctx , mgr , workloadAPI ) {
245+ setupLog .Info ("Workload API available; enabling AppWrappers" )
246+ go setupAppWrapperController (mgr , cfg , certsReady )
273247 return awctrl .SetupIndexers (ctx , mgr , cfg .AppWrapper .Config )
274248 } else {
275249 // If AppWrappers are enabled and the Workload API becomes available later, initiate an orderly
276250 // restart of the codeflare operator to enable the workload indexer to be setup in the the new instance of the operator.
277251 // It is not possible to add an indexer once the mgr has started so, a restart if the only avenue.
252+ setupLog .Info ("Workload API not available; setting up waiter for Workload API availability" )
278253 go waitForAPI (ctx , mgr , workloadAPI , func () {
279254 setupLog .Info ("Workload API now available; triggering controller restart" )
280255 cancel ()
@@ -283,6 +258,16 @@ func setupWorkloadIndexer(ctx context.Context, cancel context.CancelFunc, mgr ct
283258 }
284259}
285260
261+ func setupAppWrapperController (mgr ctrl.Manager , cfg * config.CodeFlareOperatorConfiguration , certsReady chan struct {}) {
262+ setupLog .Info ("Waiting for certificate generation to complete" )
263+ <- certsReady
264+ setupLog .Info ("Certs ready" )
265+
266+ setupLog .Info ("Setting up AppWrapper webhook and controller" )
267+ exitOnError (awctrl .SetupWebhooks (mgr , cfg .AppWrapper .Config ), "unable to setup AppWrapper webhooks" )
268+ exitOnError (awctrl .SetupControllers (mgr , cfg .AppWrapper .Config ), "unable to setup AppWrapper controller" )
269+ }
270+
286271// +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;update
287272// +kubebuilder:rbac:groups="admissionregistration.k8s.io",resources=mutatingwebhookconfigurations,verbs=get;list;watch;update
288273// +kubebuilder:rbac:groups="admissionregistration.k8s.io",resources=validatingwebhookconfigurations,verbs=get;list;watch;update
0 commit comments