mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #80521 from wojtek-t/trigger_for_configmaps
Unify secret and configmap triggers in cacher
This commit is contained in:
		@@ -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",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user