kubernetes-operator/pkg/controller/predicates/has_label.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
}