Files
open-cluster-management/pkg/common/queue/queuekey.go
2023-06-28 15:59:19 +02:00

71 lines
1.8 KiB
Go

package queue
import (
"github.com/openshift/library-go/pkg/controller/factory"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/cache"
)
func FileterByLabel(key string) factory.EventFilterFunc {
return func(obj interface{}) bool {
accessor, _ := meta.Accessor(obj)
return len(accessor.GetLabels()) > 0 && len(accessor.GetLabels()[key]) > 0
}
}
func FileterByLabelKeyValue(key, value string) factory.EventFilterFunc {
return func(obj interface{}) bool {
accessor, _ := meta.Accessor(obj)
return len(accessor.GetLabels()) > 0 && accessor.GetLabels()[key] == value
}
}
func FilterByNames(names ...string) factory.EventFilterFunc {
return func(obj interface{}) bool {
accessor, _ := meta.Accessor(obj)
for _, name := range names {
if accessor.GetName() == name {
return true
}
}
return false
}
}
func UnionFilter(filters ...factory.EventFilterFunc) factory.EventFilterFunc {
return func(obj interface{}) bool {
for _, filter := range filters {
if !filter(obj) {
return false
}
}
return true
}
}
func QueueKeyByLabel(key string) factory.ObjectQueueKeysFunc {
return func(obj runtime.Object) []string {
accessor, _ := meta.Accessor(obj)
if len(accessor.GetLabels()) == 0 || len(accessor.GetLabels()[key]) == 0 {
return []string{}
}
return []string{accessor.GetLabels()[key]}
}
}
func QueueKeyByMetaName(obj runtime.Object) []string {
accessor, _ := meta.Accessor(obj)
return []string{accessor.GetName()}
}
func QueueKeyByMetaNamespace(obj runtime.Object) []string {
accessor, _ := meta.Accessor(obj)
return []string{accessor.GetNamespace()}
}
func QueueKeyByMetaNamespaceName(obj runtime.Object) []string {
key, _ := cache.MetaNamespaceKeyFunc(obj)
return []string{key}
}