func()

in controllers/cdstagedeploy/cdstagedeploy_controller.go [87:127]


func (r *ReconcileCDStageDeploy) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
	log := ctrl.LoggerFrom(ctx)
	log.Info("Reconciling CDStageDeploy has been started")

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

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

	if stageDeploy.GetDeletionTimestamp() != nil {
		return ctrl.Result{}, nil
	}

	oldStatus := stageDeploy.Status.Status

	if err := r.chainFactory(r.client, stageDeploy).ServeRequest(ctx, stageDeploy); err != nil {
		stageDeploy.SetFailedStatus(err)

		if statusErr := r.client.Status().Update(ctx, stageDeploy); statusErr != nil {
			log.Error(statusErr, "An error has occurred while updating status field of CDStageDeploy")
		}

		return reconcile.Result{}, fmt.Errorf("failed to process default chainFactory: %w", err)
	}

	if stageDeploy.Status.Status != oldStatus && stageDeploy.Status.Status != codebaseApi.CDStageDeployStatusCompleted {
		if statusErr := r.client.Status().Update(ctx, stageDeploy); statusErr != nil {
			log.Error(statusErr, "An error has occurred while updating status field of CDStageDeploy")
		}
	}

	log.Info("Reconciling has been finished")

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