in controllers/stage/stage_controller.go [95:158]
func (r *ReconcileStage) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
log := ctrl.LoggerFrom(ctx)
log.Info("Reconciling Stage has been started")
stage := &cdPipeApi.Stage{}
if err := r.client.Get(ctx, request.NamespacedName, stage); err != nil {
if k8sErrors.IsNotFound(err) {
log.Info("Stage has been deleted")
return reconcile.Result{}, nil
}
return reconcile.Result{}, fmt.Errorf("failed to get stage: %w", err)
}
patched, err := r.stageModifier.Apply(ctx, stage)
if err != nil {
return reconcile.Result{}, fmt.Errorf("failed to apply stage changes: %w", err)
}
if patched {
log.Info("Stage default values has been patched")
}
result, err := r.tryToDeleteCDStage(ctx, stage)
if err != nil {
return reconcile.Result{}, err
}
if result != nil {
return *result, nil
}
ch, err := chain.CreateChain(ctx, r.client, stage)
if err != nil {
if statusErr := r.setFailedStatus(ctx, stage, err); statusErr != nil {
log.Error(statusErr, "Failed to set failed status")
}
return reconcile.Result{}, fmt.Errorf("failed to create chain: %w", err)
}
if err = ch.ServeRequest(ctx, stage); err != nil {
var e edpError.CISNotFoundError
if errors.As(err, &e) {
log.Error(err, "cis wasn't found. reconcile again...")
return reconcile.Result{RequeueAfter: const15Requeue}, nil
}
if statusErr := r.setFailedStatus(ctx, stage, err); statusErr != nil {
return reconcile.Result{}, statusErr
}
return reconcile.Result{RequeueAfter: const15Requeue}, fmt.Errorf("failed to handle the chain: %w", err)
}
if err := r.setFinishStatus(ctx, stage); err != nil {
return reconcile.Result{}, err
}
log.Info("Reconciling Stage has been finished")
return reconcile.Result{}, nil
}