in controllers/keycloakrealm/keycloakrealm_controller.go [74:123]
func (r *ReconcileKeycloakRealm) Reconcile(ctx context.Context, request reconcile.Request) (result reconcile.Result, resultErr error) {
log := ctrl.LoggerFrom(ctx)
log.Info("Reconciling KeycloakRealm")
instance := &keycloakApi.KeycloakRealm{}
if err := r.client.Get(ctx, request.NamespacedName, instance); err != nil {
if k8sErrors.IsNotFound(err) {
// Request object not found, could have been deleted after reconcile request.
// Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
// Return and don't requeue
return
}
resultErr = err
return
}
if updated, err := r.applyDefaults(ctx, instance); err != nil {
resultErr = fmt.Errorf("unable to apply default values: %w", err)
return
} else if updated {
return
}
if err := r.tryReconcile(ctx, instance); err != nil {
if errors.Is(err, helper.ErrKeycloakIsNotAvailable) {
return ctrl.Result{
RequeueAfter: helper.RequeueOnKeycloakNotAvailablePeriod,
}, nil
}
instance.Status.Available = false
instance.Status.Value = err.Error()
result.RequeueAfter = r.helper.SetFailureCount(instance)
log.Error(err, "an error has occurred while handling keycloak realm", "name", request.Name)
} else {
instance.Status.Available = true
instance.Status.Value = helper.StatusOK
instance.Status.FailureCount = 0
result.RequeueAfter = r.successReconcileTimeout
}
if err := r.client.Status().Update(ctx, instance); err != nil {
resultErr = errors.Wrap(err, "unable to update status")
}
return
}