@@ -31,6 +31,7 @@ import (
3131 "github.com/opendatahub-io/opendatahub-operator/v2/components/datasciencepipelines"
3232 "github.com/opendatahub-io/opendatahub-operator/v2/components/kserve"
3333 "github.com/opendatahub-io/opendatahub-operator/v2/components/modelmeshserving"
34+ "github.com/opendatahub-io/opendatahub-operator/v2/components/ray"
3435 "github.com/opendatahub-io/opendatahub-operator/v2/components/workbenches"
3536 appsv1 "k8s.io/api/apps/v1"
3637 netv1 "k8s.io/api/networking/v1"
@@ -114,56 +115,62 @@ func (r *DataScienceClusterReconciler) Reconcile(ctx context.Context, req ctrl.R
114115 }
115116 }
116117
117- // // Ensure all omitted components show up as explicitly disabled
118- // instance, err = r.updateComponents(instance)
119- // if err != nil {
120- // _ = r.reportError(err, instance, "error updating list of components in the CR")
121- // return ctrl.Result{}, err
122- // }
118+ // Ensure all omitted components show up as explicitly disabled
119+ instance , err = r .updateComponents (instance )
120+ if err != nil {
121+ _ = r .reportError (err , instance , "error updating list of components in the CR" )
122+ return ctrl.Result {}, err
123+ }
123124
124125 // Initialize error list, instead of returning errors after every component is deployed
125126 componentErrorList := make (map [string ]error )
126127
127128 // reconcile dashboard component
128129 if instance , err = r .reconcileSubComponent (instance , dashboard .ComponentName , instance .Spec .Components .Dashboard .Enabled ,
129- & (instance .Spec .Components .Dashboard ), ctx ); err != nil {
130+ & (instance .Spec .Components .Dashboard )); err != nil {
130131 // no need to log any errors as this is done in the reconcileSubComponent method
131132 componentErrorList [dashboard .ComponentName ] = err
132133 }
133134
134135 // reconcile DataSciencePipelines component
135136 if instance , err = r .reconcileSubComponent (instance , datasciencepipelines .ComponentName , instance .Spec .Components .DataSciencePipelines .Enabled ,
136- & (instance .Spec .Components .DataSciencePipelines ), ctx ); err != nil {
137+ & (instance .Spec .Components .DataSciencePipelines )); err != nil {
137138 // no need to log any errors as this is done in the reconcileSubComponent method
138139 componentErrorList [datasciencepipelines .ComponentName ] = err
139140 }
140141
141142 // reconcile Workbench component
142143 if instance , err = r .reconcileSubComponent (instance , workbenches .ComponentName , instance .Spec .Components .Workbenches .Enabled ,
143- & (instance .Spec .Components .Workbenches ), ctx ); err != nil {
144+ & (instance .Spec .Components .Workbenches )); err != nil {
144145 // no need to log any errors as this is done in the reconcileSubComponent method
145146 componentErrorList [workbenches .ComponentName ] = err
146147 }
147148
148149 // reconcile Kserve component
149- if instance , err = r .reconcileSubComponent (instance , kserve .ComponentName , instance .Spec .Components .Kserve .Enabled , & (instance .Spec .Components .Kserve ), ctx ); err != nil {
150+ if instance , err = r .reconcileSubComponent (instance , kserve .ComponentName , instance .Spec .Components .Kserve .Enabled , & (instance .Spec .Components .Kserve )); err != nil {
150151 // no need to log any errors as this is done in the reconcileSubComponent method
151152 componentErrorList [kserve .ComponentName ] = err
152153 }
153154
154155 // reconcile ModelMesh component
155156 if instance , err = r .reconcileSubComponent (instance , modelmeshserving .ComponentName , instance .Spec .Components .ModelMeshServing .Enabled ,
156- & (instance .Spec .Components .ModelMeshServing ), ctx ); err != nil {
157+ & (instance .Spec .Components .ModelMeshServing )); err != nil {
157158 // no need to log any errors as this is done in the reconcileSubComponent method
158159 componentErrorList [modelmeshserving .ComponentName ] = err
159160 }
160161
161162 // reconcile CodeFlare component
162- if instance , err = r .reconcileSubComponent (instance , codeflare .ComponentName , instance .Spec .Components .CodeFlare .Enabled , & (instance .Spec .Components .CodeFlare ), ctx ); err != nil {
163+ if instance , err = r .reconcileSubComponent (instance , codeflare .ComponentName , instance .Spec .Components .CodeFlare .Enabled , & (instance .Spec .Components .CodeFlare )); err != nil {
163164 // no need to log any errors as this is done in the reconcileSubComponent method
164165 componentErrorList [codeflare .ComponentName ] = err
165166 }
166167
168+ // reconcile Ray component
169+ if instance , err = r .reconcileSubComponent (instance , ray .ComponentName , instance .Spec .Components .Ray .Enabled , & (instance .Spec .Components .Ray )); err != nil {
170+ // no need to log any errors as this is done in the reconcileSubComponent method
171+ componentErrorList [ray .ComponentName ] = err
172+ }
173+
167174 // Process errors for components
168175 if componentErrorList != nil && len (componentErrorList ) != 0 {
169176 r .Log .Info ("DataScienceCluster Deployment Incomplete." )
@@ -177,12 +184,6 @@ func (r *DataScienceClusterReconciler) Reconcile(ctx context.Context, req ctrl.R
177184 return ctrl.Result {RequeueAfter : time .Second * 10 }, fmt .Errorf (fmt .Sprint (componentErrorList ))
178185 }
179186
180- // reconcile Ray component
181- // if instance, val, err = r.reconcileSubComponent(instance, ray.ComponentName, instance.Spec.Components.Ray.Enabled, &(instance.Spec.Components.Ray), ctx); err != nil {
182- // // no need to log any errors as this is done in the reconcileSubComponent method
183- // return val, err
184- // }
185-
186187 // finalize reconciliation
187188 instance , err = r .updateStatus (instance , func (saved * dsc.DataScienceCluster ) {
188189 status .SetCompleteCondition (& saved .Status .Conditions , status .ReconcileCompleted , "DataScienceCluster resource reconciled successfully" )
@@ -201,7 +202,7 @@ func (r *DataScienceClusterReconciler) Reconcile(ctx context.Context, req ctrl.R
201202}
202203
203204func (r * DataScienceClusterReconciler ) reconcileSubComponent (instance * dsc.DataScienceCluster , componentName string , enabled bool ,
204- component components.ComponentInterface , ctx context. Context ) (* dsc.DataScienceCluster , error ) {
205+ component components.ComponentInterface ) (* dsc.DataScienceCluster , error ) {
205206
206207 // First set contidions to reflect a component is about to be reconciled
207208 instance , err := r .updateStatus (instance , func (saved * dsc.DataScienceCluster ) {
@@ -306,20 +307,20 @@ func (r *DataScienceClusterReconciler) updateStatus(original *dsc.DataScienceClu
306307 return saved , err
307308}
308309
309- // func (r *DataScienceClusterReconciler) updateComponents(original *dsc.DataScienceCluster) (*dsc.DataScienceCluster, error) {
310- // saved := &dsc.DataScienceCluster{}
311- // err := retry.RetryOnConflict(retry.DefaultRetry, func() error {
312-
313- // err := r.Client.Get(context.TODO(), client.ObjectKeyFromObject(original), saved)
314- // if err != nil {
315- // return err
316- // }
317-
318- // // Try to update
319- // err = r.Client.Update(context.TODO(), saved)
320- // // Return err itself here (not wrapped inside another error)
321- // // so that RetryOnConflict can identify it correctly.
322- // return err
323- // })
324- // return saved, err
325- // }
310+ func (r * DataScienceClusterReconciler ) updateComponents (original * dsc.DataScienceCluster ) (* dsc.DataScienceCluster , error ) {
311+ saved := & dsc.DataScienceCluster {}
312+ err := retry .RetryOnConflict (retry .DefaultRetry , func () error {
313+
314+ err := r .Client .Get (context .TODO (), client .ObjectKeyFromObject (original ), saved )
315+ if err != nil {
316+ return err
317+ }
318+
319+ // Try to update
320+ err = r .Client .Update (context .TODO (), saved )
321+ // Return err itself here (not wrapped inside another error)
322+ // so that RetryOnConflict can identify it correctly.
323+ return err
324+ })
325+ return saved , err
326+ }
0 commit comments