func()

in controllers/jiraissuemetadata/jiraissuemetadata_controller.go [90:148]


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

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

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

	defer r.updateStatus(ctx, i)

	if err := r.setOwnerRef(ctx, i); err != nil {
		setErrorStatus(i, err.Error())
		return reconcile.Result{}, err
	}

	js, err := r.getJiraServer(ctx, i)
	if err != nil {
		setErrorStatus(i, err.Error())
		return reconcile.Result{}, err
	}

	if !js.Status.Available {
		log.Info("Waiting for Jira server become available.", "name", js.Name)
		return reconcile.Result{RequeueAfter: r.setFailureCount(i)}, nil
	}

	jc, err := r.initJiraClient(js)
	if err != nil {
		setErrorStatus(i, err.Error())
		return reconcile.Result{}, err
	}

	ch, err := chain.CreateChain(i.Spec.Payload, jc, r.client)
	if err != nil {
		setErrorStatus(i, err.Error())
		return reconcile.Result{}, fmt.Errorf("failed to configure `CreateChain`: %w", err)
	}

	err = ch.ServeRequest(ctx, i)
	if err != nil {
		setErrorStatus(i, err.Error())
		timeout := r.setFailureCount(i)
		log.Error(err, "failed to set jira issue metadata", "name", i.Name)

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

	duration, err := time.ParseDuration(lookup() + "m")
	if err != nil {
		return reconcile.Result{}, fmt.Errorf("failed to parse time duration: %w", err)
	}

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