Skip to content

Commit 876e8e4

Browse files
committed
Replace watch with builder.ControllerManagedBy
Signed-off-by: Manuel de Brito Fontes <[email protected]>
1 parent 72a58dd commit 876e8e4

File tree

1 file changed

+18
-33
lines changed
  • components/node-labeler/cmd

1 file changed

+18
-33
lines changed

components/node-labeler/cmd/run.go

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,21 @@ import (
1818
"github.com/spf13/cobra"
1919
corev1 "k8s.io/api/core/v1"
2020
"k8s.io/apimachinery/pkg/api/errors"
21+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122
"k8s.io/apimachinery/pkg/runtime"
2223
"k8s.io/apimachinery/pkg/types"
2324
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2425
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2526
_ "k8s.io/client-go/plugin/pkg/client/auth"
2627
"k8s.io/client-go/util/retry"
2728
ctrl "sigs.k8s.io/controller-runtime"
29+
"sigs.k8s.io/controller-runtime/pkg/builder"
2830
"sigs.k8s.io/controller-runtime/pkg/client"
2931
"sigs.k8s.io/controller-runtime/pkg/controller"
30-
"sigs.k8s.io/controller-runtime/pkg/event"
31-
"sigs.k8s.io/controller-runtime/pkg/handler"
3232
"sigs.k8s.io/controller-runtime/pkg/healthz"
3333
"sigs.k8s.io/controller-runtime/pkg/metrics"
3434
"sigs.k8s.io/controller-runtime/pkg/predicate"
3535
"sigs.k8s.io/controller-runtime/pkg/reconcile"
36-
"sigs.k8s.io/controller-runtime/pkg/source"
3736

3837
"github.com/gitpod-io/gitpod/common-go/log"
3938
)
@@ -74,35 +73,29 @@ var runCmd = &cobra.Command{
7473
client,
7574
}
7675

77-
c, err := controller.New("pod-watcher", mgr, controller.Options{
78-
Reconciler: r,
79-
MaxConcurrentReconciles: 20,
76+
filterPredicate, err := predicate.LabelSelectorPredicate(metav1.LabelSelector{
77+
MatchLabels: map[string]string{
78+
"required-by-node-labeler": "true",
79+
},
8080
})
81+
if err != nil {
82+
log.WithError(err).Fatal("unable to create predicate")
83+
}
84+
85+
err = ctrl.NewControllerManagedBy(mgr).
86+
Named("pod-watcher").
87+
For(&corev1.Pod{}, builder.WithPredicates(filterPredicate)).
88+
WithOptions(controller.Options{
89+
MaxConcurrentReconciles: 20,
90+
}).
91+
Complete(r)
8192
if err != nil {
8293
log.WithError(err).Fatal("unable to bind controller watch event handler")
8394
}
8495

8596
metrics.Registry.MustRegister(NodeLabelerCounterVec)
8697
metrics.Registry.MustRegister(NodeLabelerTimeHistVec)
8798

88-
err = c.Watch(&source.Kind{Type: &corev1.Pod{}}, &handler.EnqueueRequestForObject{}, predicate.Funcs{
89-
CreateFunc: func(ce event.CreateEvent) bool {
90-
return processPodEvent(ce.Object)
91-
},
92-
UpdateFunc: func(ue event.UpdateEvent) bool {
93-
return processPodEvent(ue.ObjectNew)
94-
},
95-
DeleteFunc: func(deleteEvent event.DeleteEvent) bool {
96-
return processPodEvent(deleteEvent.Object)
97-
},
98-
GenericFunc: func(genericEvent event.GenericEvent) bool {
99-
return false
100-
},
101-
})
102-
if err != nil {
103-
log.WithError(err).Fatal("unable to create controller")
104-
}
105-
10699
err = mgr.AddHealthzCheck("healthz", healthz.Ping)
107100
if err != nil {
108101
log.WithError(err).Fatal("unable to set up health check")
@@ -132,14 +125,6 @@ var (
132125
scheme = runtime.NewScheme()
133126
)
134127

135-
func processPodEvent(pod client.Object) bool {
136-
if strings.HasPrefix(pod.GetName(), registryFacade) || strings.HasPrefix(pod.GetName(), wsDaemon) {
137-
return true
138-
}
139-
140-
return false
141-
}
142-
143128
type PodReconciler struct {
144129
client.Client
145130
}
@@ -181,7 +166,7 @@ func (r *PodReconciler) Reconcile(ctx context.Context, req reconcile.Request) (r
181166
ipAddress = pod.Status.PodIP
182167
port = strconv.Itoa(wsdaemonPort)
183168
default:
184-
log.WithField("pod", pod.Name).Info("Invalid pod. Skipping...")
169+
// nothing to do
185170
return reconcile.Result{}, nil
186171
}
187172

0 commit comments

Comments
 (0)