func()

in controllers/gitserver/gitserver_controller.go [57:111]


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

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

		return reconcile.Result{}, fmt.Errorf("failed to fetch resource %q: %w", request.NamespacedName, err)
	}

	oldStatus := instance.Status
	gitServer := model.ConvertToGitServer(instance)

	if err := r.checkConnectionToGitServer(ctx, gitServer); err != nil {
		instance.Status.SetFailed(err.Error())
		instance.Status.Connected = false

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

		log.Error(err, "GitServer connection is not established")

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

	instance.Status.Connected = true

	if err := NewCreateEventListener(r.client).ServeRequest(ctx, instance); err != nil {
		log.Error(err, "Failed to create EventListener")

		instance.Status.SetFailed(err.Error())

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

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

	instance.Status.SetSuccess()

	if err := r.updateGitServerStatus(ctx, instance, oldStatus); err != nil {
		return reconcile.Result{}, err
	}

	log.Info("Reconciling GitServer has been finished")

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