mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-04-09 20:27:25 +00:00
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
// Copyright 2020-2025 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package utils
|
|
|
|
import (
|
|
"sigs.k8s.io/controller-runtime/pkg/builder"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
"sigs.k8s.io/controller-runtime/pkg/event"
|
|
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
|
|
|
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
|
|
)
|
|
|
|
var CapsuleConfigSpecChangedPredicate = predicate.Funcs{
|
|
UpdateFunc: func(e event.UpdateEvent) bool {
|
|
oldObj, ok1 := e.ObjectOld.(*capsulev1beta2.CapsuleConfiguration)
|
|
newObj, ok2 := e.ObjectNew.(*capsulev1beta2.CapsuleConfiguration)
|
|
if !ok1 || !ok2 {
|
|
return false
|
|
}
|
|
|
|
if len(oldObj.Spec.Administrators) != len(newObj.Spec.Administrators) {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
},
|
|
|
|
CreateFunc: func(e event.CreateEvent) bool { return false },
|
|
DeleteFunc: func(e event.DeleteEvent) bool { return false },
|
|
GenericFunc: func(e event.GenericEvent) bool { return false },
|
|
}
|
|
|
|
func NamesMatchingPredicate(names ...string) builder.Predicates {
|
|
return builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
|
for _, name := range names {
|
|
if object.GetName() == name {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}))
|
|
}
|