45 lines
749 B
Go
45 lines
749 B
Go
package predicates
|
|
|
|
import (
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
"sigs.k8s.io/controller-runtime/pkg/event"
|
|
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
|
)
|
|
|
|
var _ predicate.Predicate = HasLabel{}
|
|
|
|
type HasLabel struct {
|
|
predicate.Funcs
|
|
Name string
|
|
}
|
|
|
|
func (p HasLabel) Create(event.CreateEvent) bool {
|
|
return false
|
|
}
|
|
|
|
func (p HasLabel) Generic(event.GenericEvent) bool {
|
|
return false
|
|
}
|
|
|
|
func (p HasLabel) Delete(e event.DeleteEvent) bool {
|
|
return p.test(e.Object)
|
|
}
|
|
|
|
func (p HasLabel) Update(e event.UpdateEvent) bool {
|
|
return p.test(e.ObjectNew)
|
|
}
|
|
|
|
func (p HasLabel) test(obj client.Object) bool {
|
|
if obj == nil {
|
|
return false
|
|
}
|
|
|
|
if obj.GetLabels() == nil {
|
|
return false
|
|
}
|
|
|
|
_, ok := obj.GetLabels()[p.Name]
|
|
|
|
return ok
|
|
}
|