Skip to content

Commit

Permalink
Merge pull request #80521 from wojtek-t/trigger_for_configmaps
Browse files Browse the repository at this point in the history
Unify secret and configmap triggers in cacher
  • Loading branch information
k8s-ci-robot committed Jul 30, 2019
2 parents a1a8641 + 467f5e9 commit f1e994a
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 5 deletions.
4 changes: 4 additions & 0 deletions pkg/registry/core/configmap/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,13 @@ go_library(
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/apis/core/validation:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/generic:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/storage:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/storage/names:go_default_library",
],
)
Expand Down
1 change: 1 addition & 0 deletions pkg/registry/core/configmap/storage/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ go_library(
"//staging/src/k8s.io/apiserver/pkg/registry/generic:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/storage:go_default_library",
],
)

Expand Down
7 changes: 6 additions & 1 deletion pkg/registry/core/configmap/storage/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/registry/rest"
"k8s.io/apiserver/pkg/storage"
api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
Expand All @@ -46,7 +47,11 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST {

TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
}
options := &generic.StoreOptions{RESTOptions: optsGetter}
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: configmap.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": configmap.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
panic(err) // TODO: Propagate error up
}
Expand Down
34 changes: 34 additions & 0 deletions pkg/registry/core/configmap/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,15 @@ package configmap

import (
"context"
"fmt"

"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
pkgstorage "k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core"
Expand Down Expand Up @@ -80,3 +85,32 @@ func (strategy) ValidateUpdate(ctx context.Context, newObj, oldObj runtime.Objec

return validation.ValidateConfigMapUpdate(newCfg, oldCfg)
}

// GetAttrs returns labels and fields of a given object for filtering purposes.
func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
configMap, ok := obj.(*api.ConfigMap)
if !ok {
return nil, nil, fmt.Errorf("not a configmap")
}
return labels.Set(configMap.Labels), SelectableFields(configMap), nil
}

// Matcher returns a generic matcher for a given label and field selector.
func Matcher(label labels.Selector, field fields.Selector) pkgstorage.SelectionPredicate {
return pkgstorage.SelectionPredicate{
Label: label,
Field: field,
GetAttrs: GetAttrs,
IndexFields: []string{"metadata.name"},
}
}

// NameTriggerFunc returns value metadata.namespace of given object.
func NameTriggerFunc(obj runtime.Object) string {
return obj.(*api.ConfigMap).ObjectMeta.Name
}

// SelectableFields returns a field set that can be used for filter selection
func SelectableFields(obj *api.ConfigMap) fields.Set {
return generic.ObjectMetaFieldsSet(&obj.ObjectMeta, true)
}
2 changes: 1 addition & 1 deletion pkg/registry/core/node/storage/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: node.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": node.NodeNameTriggerFunc},
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": node.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
return nil, err
Expand Down
3 changes: 2 additions & 1 deletion pkg/registry/core/node/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,8 @@ func MatchNode(label labels.Selector, field fields.Selector) pkgstorage.Selectio
}
}

func NodeNameTriggerFunc(obj runtime.Object) string {
// NameTriggerFunc returns value metadata.namespace of given object.
func NameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Node).ObjectMeta.Name
}

Expand Down
1 change: 1 addition & 0 deletions pkg/registry/core/pod/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ func MatchPod(label labels.Selector, field fields.Selector) storage.SelectionPre
}
}

// NodeNameTriggerFunc returns value spec.nodename of given object.
func NodeNameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Pod).Spec.NodeName
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/registry/core/secret/storage/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: secret.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": secret.SecretNameTriggerFunc},
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": secret.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
panic(err) // TODO: Propagate error up
Expand Down
3 changes: 2 additions & 1 deletion pkg/registry/core/secret/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ func Matcher(label labels.Selector, field fields.Selector) pkgstorage.SelectionP
}
}

func SecretNameTriggerFunc(obj runtime.Object) string {
// NameTriggerFunc returns value metadata.namespace of given object.
func NameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Secret).ObjectMeta.Name
}

Expand Down

0 comments on commit f1e994a

Please sign in to comment.