open-cluster-management.io/governance-policy-propagator@v0.13.0/controllers/policyset/placementBindingPredicate.go (about) 1 // Copyright (c) 2022 Red Hat, Inc. 2 // Copyright Contributors to the Open Cluster Management project 3 4 package controllers 5 6 import ( 7 "sigs.k8s.io/controller-runtime/pkg/event" 8 "sigs.k8s.io/controller-runtime/pkg/predicate" 9 10 policiesv1 "open-cluster-management.io/governance-policy-propagator/api/v1" 11 "open-cluster-management.io/governance-policy-propagator/controllers/common" 12 ) 13 14 // we only want to watch for pb contains policyset as a subject 15 var pbPredicateFuncs = predicate.Funcs{ 16 UpdateFunc: func(e event.UpdateEvent) bool { 17 //nolint:forcetypeassert 18 pbObjNew := e.ObjectNew.(*policiesv1.PlacementBinding) 19 //nolint:forcetypeassert 20 pbObjOld := e.ObjectOld.(*policiesv1.PlacementBinding) 21 22 return common.IsPbForPolicySet(pbObjNew) || common.IsPbForPolicySet(pbObjOld) 23 }, 24 CreateFunc: func(e event.CreateEvent) bool { 25 //nolint:forcetypeassert 26 pbObj := e.Object.(*policiesv1.PlacementBinding) 27 28 return common.IsPbForPolicySet(pbObj) 29 }, 30 DeleteFunc: func(e event.DeleteEvent) bool { 31 //nolint:forcetypeassert 32 pbObj := e.Object.(*policiesv1.PlacementBinding) 33 34 return common.IsPbForPolicySet(pbObj) 35 }, 36 }