func()

in pkg/controller/doriscluster_controller.go [306:348]


func (r *DorisClusterReconciler) watchConfigMapBuilder(builder *ctrl.Builder) *ctrl.Builder {
	mapFn := handler.EnqueueRequestsFromMapFunc(
		func(ctx context.Context, a client.Object) []reconcile.Request {
			cmnn := types.NamespacedName{Namespace: a.GetNamespace(), Name: a.GetName()}
			if dcrNamespacedNameStr, ok := r.WatchConfigMaps[cmnn.String()]; ok {
				// nna[0] is namespace, nna[1] is dcrName,
				nna := strings.Split(dcrNamespacedNameStr, "/")
				// not run only for code standard
				if len(nna) != 2 {
					return nil
				}

				return []reconcile.Request{{NamespacedName: types.NamespacedName{
					Namespace: nna[0],
					Name:      nna[1],
				}}}
			}
			return nil
		})

	p := predicate.Funcs{
		CreateFunc: func(u event.CreateEvent) bool {

			cmnn := types.NamespacedName{Namespace: u.Object.GetNamespace(), Name: u.Object.GetName()}
			_, ok := r.WatchConfigMaps[cmnn.String()]
			return ok
		},

		UpdateFunc: func(u event.UpdateEvent) bool {

			cmnn := types.NamespacedName{Namespace: u.ObjectNew.GetNamespace(), Name: u.ObjectNew.GetName()}

			if _, ok := r.WatchConfigMaps[cmnn.String()]; !ok {
				return false
			}

			return true
		},
	}

	return builder.Watches(&corev1.ConfigMap{},
		mapFn, controller_builder.WithPredicates(p))
}