func()

in controllers/sonar/sonar_controller.go [57:105]


func (r *ReconcileSonar) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
	log := ctrl.LoggerFrom(ctx)
	log.Info("Reconciling Sonar")

	sonar := &sonarApi.Sonar{}
	if err := r.client.Get(ctx, request.NamespacedName, sonar); err != nil {
		if k8sErrors.IsNotFound(err) {
			return reconcile.Result{}, nil
		}
		return reconcile.Result{}, err
	}

	oldStatus := sonar.Status

	sonarApiClient, err := r.apiClientProvider.GetSonarApiClientFromSonar(ctx, sonar)
	if err != nil {
		sonar.Status.Error = err.Error()
		sonar.Status.Connected = false

		if statusErr := r.updateSonarStatus(ctx, sonar, oldStatus); statusErr != nil {
			return reconcile.Result{}, statusErr
		}

		return reconcile.Result{RequeueAfter: defaultRequeueTime}, err
	}

	if err = chain.MakeChain(sonarApiClient, r.client).ServeRequest(ctx, sonar); err != nil {
		sonar.Status.Error = err.Error()

		if statusErr := r.updateSonarStatus(ctx, sonar, oldStatus); statusErr != nil {
			return reconcile.Result{}, statusErr
		}

		return reconcile.Result{RequeueAfter: defaultRequeueTime}, err
	}

	sonar.Status.Connected = true
	sonar.Status.Error = ""

	if err = r.updateSonarStatus(ctx, sonar, oldStatus); err != nil {
		return reconcile.Result{}, err
	}

	log.Info("Reconciling Sonar is finished")

	return reconcile.Result{
		RequeueAfter: successRequeueTime,
	}, nil
}