func()

in shardingsphere-operator/pkg/controllers/chaos_controller.go [74:109]


func (r *ChaosReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
	logger := r.Log.WithValues(ChaosControllerName, req.NamespacedName)

	ssChaos, err := r.getRuntimeChaos(ctx, req.NamespacedName)
	if err != nil {
		return ctrl.Result{}, client.IgnoreNotFound(err)
	}

	logger.Info("start reconcile chaos")
	if ssChaos.ObjectMeta.DeletionTimestamp.IsZero() {
		if !controllerutil.ContainsFinalizer(ssChaos, ChaosFinalizerName) {
			controllerutil.AddFinalizer(ssChaos, ChaosFinalizerName)
			if err := r.Update(ctx, ssChaos); err != nil {
				return ctrl.Result{}, err
			}
		}
	} else if controllerutil.ContainsFinalizer(ssChaos, ChaosFinalizerName) {
		return r.finalize(ctx, ssChaos)
	}

	var errors []error
	if err := r.reconcileChaos(ctx, ssChaos); err != nil {
		errors = append(errors, err)
		logger.Error(err, "reconcile chaos error")
	}

	if err := r.reconcileStatus(ctx, ssChaos); err != nil {
		errors = append(errors, err)
		logger.Error(err, "failed to update status")
	}

	if len(errors) > 0 {
		return ctrl.Result{Requeue: true}, err
	}
	return ctrl.Result{RequeueAfter: defaultRequeueTime}, nil
}