Cache fields for filtering in watchCache.

This commit is contained in:
Wojciech Tyczynski
2016-11-16 10:19:55 +01:00
parent e6c57c6569
commit 36e6cd19e1
78 changed files with 558 additions and 362 deletions

View File

@@ -56,6 +56,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix,
cluster.Strategy,
newListFunc,
cluster.GetAttrs,
storage.NoTriggerPublisher,
)

View File

@@ -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,
}
}