in controllers/keycloakclientscope/keycloakclientscope_controller.go [85:131]
func (r *Reconcile) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
log := ctrl.LoggerFrom(ctx)
log.Info("Reconciling KeycloakClientScope")
scope := &keycloakApi.KeycloakClientScope{}
if err := r.client.Get(ctx, request.NamespacedName, scope); err != nil {
if k8sErrors.IsNotFound(err) {
return reconcile.Result{}, nil
}
return reconcile.Result{}, fmt.Errorf("unable to get keycloak client scope from k8s: %w", err)
}
if updated, err := r.applyDefaults(ctx, scope); err != nil {
return reconcile.Result{}, fmt.Errorf("unable to apply default values: %w", err)
} else if updated {
return reconcile.Result{}, nil
}
oldStatus := scope.Status
scopeID, err := r.tryReconcile(ctx, scope)
if err != nil {
if errors.Is(err, helper.ErrKeycloakIsNotAvailable) {
return helper.RequeueOnKeycloakNotAvailable, nil
}
scope.Status.Value = err.Error()
if statusErr := r.updateKeycloakClientScopeStatus(ctx, scope, oldStatus); statusErr != nil {
return reconcile.Result{}, statusErr
}
return reconcile.Result{}, err
}
scope.Status.Value = helper.StatusOK
scope.Status.ID = scopeID
if statusErr := r.updateKeycloakClientScopeStatus(ctx, scope, oldStatus); statusErr != nil {
return reconcile.Result{}, statusErr
}
log.Info("Reconciling KeycloakClientScope done")
return reconcile.Result{}, nil
}