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
}