in controllers/controller.go [78:108]
func (r *EtcdadmClusterReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, done <-chan struct{}) error {
c, err := ctrl.NewControllerManagedBy(mgr).
For(&etcdv1.EtcdadmCluster{}).
Owns(&clusterv1.Machine{}).
WithEventFilter(predicates.ResourceNotPaused(r.Log)).
WithOptions(controller.Options{MaxConcurrentReconciles: r.MaxConcurrentReconciles}).
Build(r)
if err != nil {
return errors.Wrap(err, "failed setting up with a controller manager")
}
err = c.Watch(
source.Kind(mgr.GetCache(), &clusterv1.Cluster{}),
handler.EnqueueRequestsFromMapFunc(r.ClusterToEtcdadmCluster),
predicates.ClusterUnpausedAndInfrastructureReady(r.Log),
)
if err != nil {
return errors.Wrap(err, "failed adding Watch for Clusters to controller manager")
}
r.controller = c
r.recorder = mgr.GetEventRecorderFor("etcdadm-cluster-controller")
r.uncachedClient = mgr.GetAPIReader()
if r.isPortOpen == nil {
r.SetIsPortOpen(isPortOpen)
}
r.GetEtcdClient = r.generateEtcdClient
go r.startHealthCheckLoop(ctx, done)
return nil
}