func()

in pkg/controller/jenkins_job/jenkins_job_controller.go [92:139]


func (r *ReconcileJenkinsJob) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
	log := r.log.WithValues(logNamespaceKey, request.Namespace, "Request.Name", request.Name)
	log.Info("reconciling JenkinsJob had started")

	jenkinsJob := &jenkinsApi.JenkinsJob{}
	if err := r.client.Get(ctx, request.NamespacedName, jenkinsJob); err != nil {
		if k8serrors.IsNotFound(err) {
			log.Info("instance not found")

			return reconcile.Result{}, nil
		}

		return reconcile.Result{}, fmt.Errorf("failed to Get JenkinsJob: %w", err)
	}

	if result, err := r.tryToDeleteJob(ctx, jenkinsJob); result != nil || err != nil {
		return *result, err
	}

	if err := r.setOwners(ctx, jenkinsJob); err != nil {
		return reconcile.Result{}, fmt.Errorf("failed to set owner reference: %w", err)
	}

	jobCanBeHandled, err := r.canJenkinsJobBeHandled(jenkinsJob)
	if err != nil {
		return reconcile.Result{}, fmt.Errorf("failed to check whether the jenkins job can be created: %w", err)
	}

	if !jobCanBeHandled {
		log.V(2).Info("jenkins folder for stages is not ready yet")
		return reconcile.Result{RequeueAfter: requeueAfter}, nil
	}

	result, err := r.handleJob(jenkinsJob)
	if err != nil {
		return reconcile.Result{}, fmt.Errorf("failed to handle JenkinsJob: %w", err)
	}

	if result.Requeue {
		r.log.Info("the next job provision will be triggered in few minutes", "minutes", result.RequeueAfter)

		return result, nil
	}

	log.Info("reconciling JenkinsJob has been finished")

	return result, nil
}