@@ -18,6 +18,8 @@ import (
1818	ctrl "sigs.k8s.io/controller-runtime" 
1919	"sigs.k8s.io/controller-runtime/pkg/client" 
2020	"sigs.k8s.io/controller-runtime/pkg/controller" 
21+ 	"sigs.k8s.io/controller-runtime/pkg/event" 
22+ 	"sigs.k8s.io/controller-runtime/pkg/predicate" 
2123
2224	"github.com/vmware-tanzu/nsx-operator/pkg/controllers/common" 
2325	"github.com/vmware-tanzu/nsx-operator/pkg/logger" 
@@ -64,10 +66,6 @@ func (r *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
6466		log .Error (err , "unable to fetch Pod" , "Pod" , req .NamespacedName )
6567		return  common .ResultRequeue , err 
6668	}
67- 	if  pod .Spec .HostNetwork  {
68- 		log .Info ("skipping handling hostnetwork pod" , "pod" , req .NamespacedName )
69- 		return  common .ResultNormal , nil 
70- 	}
7169	if  len (pod .Spec .NodeName ) ==  0  {
7270		log .Info ("pod is not scheduled on node yet, skipping" , "pod" , req .NamespacedName )
7371		return  common .ResultNormal , nil 
@@ -135,6 +133,7 @@ func (r *PodReconciler) GetNodeByName(nodeName string) (*model.HostTransportNode
135133func  (r  * PodReconciler ) SetupWithManager (mgr  ctrl.Manager ) error  {
136134	return  ctrl .NewControllerManagedBy (mgr ).
137135		For (& v1.Pod {}).
136+ 		WithEventFilter (PredicateFuncsPod ).
138137		WithOptions (
139138			controller.Options {
140139				MaxConcurrentReconciles : common .NumReconcile (),
@@ -267,3 +266,34 @@ func (r *PodReconciler) deleteSubnetPortByPodName(ctx context.Context, ns string
267266	log .Info ("successfully deleted nsxSubnetPort for Pod" , "namespace" , ns , "name" , name )
268267	return  nil 
269268}
269+ 
270+ // PredicateFuncsPod filters out events where pod.Spec.HostNetwork is true 
271+ var  PredicateFuncsPod  =  predicate.Funcs {
272+ 	UpdateFunc : func (e  event.UpdateEvent ) bool  {
273+ 		oldPod , okOld  :=  e .ObjectOld .(* v1.Pod )
274+ 		newPod , okNew  :=  e .ObjectNew .(* v1.Pod )
275+ 		if  ! okOld  ||  ! okNew  {
276+ 			return  true 
277+ 		}
278+ 
279+ 		if  oldPod .Spec .HostNetwork  &&  newPod .Spec .HostNetwork  {
280+ 			return  false 
281+ 		}
282+ 		return  true 
283+ 	},
284+ 	CreateFunc : func (e  event.CreateEvent ) bool  {
285+ 		pod , ok  :=  e .Object .(* v1.Pod )
286+ 		if  ! ok  {
287+ 			return  true 
288+ 		}
289+ 
290+ 		if  pod .Spec .HostNetwork  {
291+ 			return  false 
292+ 		}
293+ 		return  true 
294+ 	},
295+ 	DeleteFunc : func (e  event.DeleteEvent ) bool  { return  true  },
296+ 	GenericFunc : func (e  event.GenericEvent ) bool  {
297+ 		return  true 
298+ 	},
299+ }
0 commit comments