v2/internal/util/predicates/object_predicate.go (27 lines of code) (raw):
/*
Copyright (c) Microsoft Corporation.
Licensed under the MIT license.
*/
package predicates
import (
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/predicate"
)
// makeObjectPredicate creates a predicate that executes the specified function for update, create, delete, and generic.
// The first parameter of the function "old" is nil in all cases except for update.
func makeObjectPredicate(f func(objectOld client.Object, objectNew client.Object) bool) objectPredicate {
return objectPredicate{
f: f,
}
}
type objectPredicate struct {
f func(objectOld client.Object, objectNew client.Object) bool
}
var _ predicate.Predicate = objectPredicate{}
func (p objectPredicate) Create(e event.CreateEvent) bool {
return p.f(nil, e.Object)
}
func (p objectPredicate) Delete(e event.DeleteEvent) bool {
return p.f(nil, e.Object)
}
func (p objectPredicate) Update(e event.UpdateEvent) bool {
return p.f(e.ObjectOld, e.ObjectNew)
}
func (p objectPredicate) Generic(e event.GenericEvent) bool {
return p.f(nil, e.Object)
}