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))
}