Skip to content

Commit 8507a89

Browse files
committed
Simplify controllers/managed Reconciler code
1 parent 70adff8 commit 8507a89

File tree

1 file changed

+46
-21
lines changed

1 file changed

+46
-21
lines changed

controllers/controllers/services/instances/managed/controller.go

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -167,32 +167,57 @@ func (r *Reconciler) ReconcileResource(ctx context.Context, serviceInstance *kor
167167
}
168168

169169
if !serviceInstance.Status.Provisioned {
170-
provisionResponse, err := r.provisionServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
170+
return r.reconcileProvisionedServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
171+
}
172+
173+
return r.reconcileUpdatedServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
174+
}
175+
176+
func (r *Reconciler) reconcileProvisionedServiceInstance(
177+
ctx context.Context,
178+
serviceInstance *korifiv1alpha1.CFServiceInstance,
179+
serviceInstanceAssets osbapi.ServiceInstanceAssets,
180+
osbapiClient osbapi.BrokerClient,
181+
) (ctrl.Result, error) {
182+
log := logr.FromContextOrDiscard(ctx)
183+
provisionResponse, err := r.provisionServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
184+
if err != nil {
185+
log.Error(err, "failed to provision service instance")
186+
return ctrl.Result{}, fmt.Errorf("failed to provision service instance: %w", err)
187+
}
188+
189+
if provisionResponse.IsAsync {
190+
lastOpResponse, err := r.pollLastOperation(ctx, serviceInstance, serviceInstanceAssets, osbapiClient, provisionResponse.Operation)
171191
if err != nil {
172-
log.Error(err, "failed to provision service instance")
173-
return ctrl.Result{}, fmt.Errorf("failed to provision service instance: %w", err)
192+
return ctrl.Result{}, err
174193
}
194+
return r.processProvisionOperation(serviceInstance, lastOpResponse)
195+
}
175196

176-
if provisionResponse.IsAsync {
177-
lastOpResponse, err := r.pollLastOperation(ctx, serviceInstance, serviceInstanceAssets, osbapiClient, provisionResponse.Operation)
178-
if err != nil {
179-
return ctrl.Result{}, err
180-
}
181-
return r.processProvisionOperation(serviceInstance, lastOpResponse)
182-
}
183-
} else {
184-
updateResponse, err := r.updateServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
197+
serviceInstance.Status.Provisioned = true
198+
serviceInstance.Status.MaintenanceInfo = serviceInstanceAssets.ServicePlan.Spec.MaintenanceInfo
199+
serviceInstance.Status.LastOperation.State = "succeeded"
200+
return ctrl.Result{}, nil
201+
}
202+
203+
func (r *Reconciler) reconcileUpdatedServiceInstance(
204+
ctx context.Context,
205+
serviceInstance *korifiv1alpha1.CFServiceInstance,
206+
serviceInstanceAssets osbapi.ServiceInstanceAssets,
207+
osbapiClient osbapi.BrokerClient,
208+
) (ctrl.Result, error) {
209+
log := logr.FromContextOrDiscard(ctx)
210+
updateResponse, err := r.updateServiceInstance(ctx, serviceInstance, serviceInstanceAssets, osbapiClient)
211+
if err != nil {
212+
log.Error(err, "failed to update service instance")
213+
return ctrl.Result{}, fmt.Errorf("failed to update service instance: %w", err)
214+
}
215+
if updateResponse.IsAsync {
216+
lastOpResponse, err := r.pollLastOperation(ctx, serviceInstance, serviceInstanceAssets, osbapiClient, updateResponse.Operation)
185217
if err != nil {
186-
log.Error(err, "failed to update service instance")
187-
return ctrl.Result{}, fmt.Errorf("failed to update service instance: %w", err)
188-
}
189-
if updateResponse.IsAsync {
190-
lastOpResponse, err := r.pollLastOperation(ctx, serviceInstance, serviceInstanceAssets, osbapiClient, updateResponse.Operation)
191-
if err != nil {
192-
return ctrl.Result{}, err
193-
}
194-
return r.processUpdateOperation(serviceInstance, lastOpResponse)
218+
return ctrl.Result{}, err
195219
}
220+
return r.processUpdateOperation(serviceInstance, lastOpResponse)
196221
}
197222

198223
serviceInstance.Status.Provisioned = true

0 commit comments

Comments
 (0)