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
}