open-cluster-management.io/governance-policy-propagator@v0.13.0/controllers/automation/policyPredicate.go (about)

     1  // Copyright Contributors to the Open Cluster Management project
     2  
     3  package automation
     4  
     5  import (
     6  	"github.com/google/go-cmp/cmp"
     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  )
    12  
    13  // we only want to watch for pb contains policy as subjects
    14  var policyPredicateFuncs = predicate.Funcs{
    15  	UpdateFunc: func(e event.UpdateEvent) bool {
    16  		//nolint:forcetypeassert
    17  		plcObjNew := e.ObjectNew.(*policiesv1.Policy)
    18  		if _, ok := plcObjNew.Labels["policy.open-cluster-management.io/root-policy"]; ok {
    19  			return false
    20  		}
    21  
    22  		//nolint:forcetypeassert
    23  		plcObjOld := e.ObjectOld.(*policiesv1.Policy)
    24  
    25  		return !cmp.Equal(plcObjNew.Status.Status, plcObjOld.Status.Status)
    26  	},
    27  	CreateFunc: func(e event.CreateEvent) bool {
    28  		return false
    29  	},
    30  	DeleteFunc: func(e event.DeleteEvent) bool {
    31  		return false
    32  	},
    33  }