Partition watchers by namespace/name scope

This commit is contained in:
Jordan Liggitt
2023-02-05 18:46:19 -05:00
committed by tinatingyu
parent 12ceec47aa
commit 1c2fa0c7f7
14 changed files with 693 additions and 50 deletions

View File

@@ -108,10 +108,9 @@ func (rs *REST) List(ctx context.Context, options *metainternalversion.ListOptio
func componentStatusPredicate(options *metainternalversion.ListOptions) storage.SelectionPredicate {
pred := storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
GetAttrs: nil,
IndexFields: []string{},
Label: labels.Everything(),
Field: fields.Everything(),
GetAttrs: nil,
}
if options != nil {
if options.LabelSelector != nil {

View File

@@ -21,7 +21,6 @@ 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"
@@ -52,7 +51,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: configmap.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": configmap.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
return nil, err

View File

@@ -109,18 +109,12 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
// Matcher returns a selection predicate 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"},
Label: label,
Field: field,
GetAttrs: GetAttrs,
}
}
// 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)

View File

@@ -28,7 +28,6 @@ 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_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
"k8s.io/kubernetes/pkg/kubelet/client"
@@ -112,7 +111,6 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: node.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": node.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
return nil, err

View File

@@ -223,18 +223,12 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
// MatchNode returns a generic matcher for a given label and field selector.
func MatchNode(label labels.Selector, field fields.Selector) pkgstorage.SelectionPredicate {
return pkgstorage.SelectionPredicate{
Label: label,
Field: field,
GetAttrs: GetAttrs,
IndexFields: []string{"metadata.name"},
Label: label,
Field: field,
GetAttrs: GetAttrs,
}
}
// NameTriggerFunc returns value metadata.namespace of given object.
func NameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Node).ObjectMeta.Name
}
// ResourceLocation returns a URL and transport which one can use to send traffic for the specified node.
func ResourceLocation(getter ResourceGetter, connection client.ConnectionInfoGetter, proxyTransport http.RoundTripper, ctx context.Context, id string) (*url.URL, http.RoundTripper, error) {
schemeReq, name, portReq, valid := utilnet.SplitSchemeNamePort(id)

View File

@@ -20,7 +20,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/registry/generic"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/apiserver/pkg/storage"
api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
@@ -51,7 +50,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
options := &generic.StoreOptions{
RESTOptions: optsGetter,
AttrFunc: secret.GetAttrs,
TriggerFunc: map[string]storage.IndexerFunc{"metadata.name": secret.NameTriggerFunc},
}
if err := store.CompleteWithOptions(options); err != nil {
return nil, err

View File

@@ -113,18 +113,12 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
// Matcher returns a selection predicate 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"},
Label: label,
Field: field,
GetAttrs: GetAttrs,
}
}
// NameTriggerFunc returns value metadata.namespace of given object.
func NameTriggerFunc(obj runtime.Object) string {
return obj.(*api.Secret).ObjectMeta.Name
}
// SelectableFields returns a field set that can be used for filter selection
func SelectableFields(obj *api.Secret) fields.Set {
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&obj.ObjectMeta, true)