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  }