func()

in controllers/nexus/nexus_controller.go [49:99]


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

	nexus := &nexusApi.Nexus{}
	if err := r.client.Get(ctx, req.NamespacedName, nexus); err != nil {
		if k8sErrors.IsNotFound(err) {
			return reconcile.Result{}, nil
		}

		return reconcile.Result{}, fmt.Errorf("failed to get Nexus instance from k8s: %w", err)
	}

	oldStatus := nexus.Status

	nexusApiClient, err := r.apiClientProvider.GetNexusApiClientFromNexus(ctx, nexus)
	if err != nil {
		nexus.Status.Error = err.Error()
		nexus.Status.Connected = false

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

		return reconcile.Result{RequeueAfter: defaultRequeueTime}, fmt.Errorf("failed to get nexus api client: %w", err)
	}

	if err = chain.NewCheckConnection(nexusApiClient.Security.User).ServeRequest(ctx, nexus); err != nil {
		nexus.Status.Error = err.Error()
		nexus.Status.Connected = false

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

		return reconcile.Result{RequeueAfter: defaultRequeueTime}, fmt.Errorf("failed to serve request: %w", err)
	}

	nexus.Status.Connected = true
	nexus.Status.Error = ""

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

	log.Info("Reconciling Nexus is finished")

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