mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-13 11:25:19 +00:00
Cache fields for filtering in watchCache.
This commit is contained in:
@@ -56,6 +56,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
|
||||
prefix,
|
||||
cluster.Strategy,
|
||||
newListFunc,
|
||||
cluster.GetAttrs,
|
||||
storage.NoTriggerPublisher,
|
||||
)
|
||||
|
||||
|
||||
@@ -45,17 +45,20 @@ func ClusterToSelectableFields(cluster *federation.Cluster) fields.Set {
|
||||
return generic.ObjectMetaFieldsSet(&cluster.ObjectMeta, false)
|
||||
}
|
||||
|
||||
// GetAttrs returns labels and fields of a given object for filtering purposes.
|
||||
func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
|
||||
cluster, ok := obj.(*federation.Cluster)
|
||||
if !ok {
|
||||
return nil, nil, fmt.Errorf("given object is not a cluster.")
|
||||
}
|
||||
return labels.Set(cluster.ObjectMeta.Labels), ClusterToSelectableFields(cluster), nil
|
||||
}
|
||||
|
||||
func MatchCluster(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate {
|
||||
return apistorage.SelectionPredicate{
|
||||
Label: label,
|
||||
Field: field,
|
||||
GetAttrs: func(obj runtime.Object) (labels.Set, fields.Set, error) {
|
||||
cluster, ok := obj.(*federation.Cluster)
|
||||
if !ok {
|
||||
return nil, nil, fmt.Errorf("given object is not a cluster.")
|
||||
}
|
||||
return labels.Set(cluster.ObjectMeta.Labels), ClusterToSelectableFields(cluster), nil
|
||||
},
|
||||
Label: label,
|
||||
Field: field,
|
||||
GetAttrs: GetAttrs,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user