From c4cc6eba8bdaacd13e4d9cb710e63a0894b4bd06 Mon Sep 17 00:00:00 2001 From: Monis Khan Date: Fri, 21 Apr 2017 15:47:25 -0400 Subject: [PATCH] Default ObjectNameFunc for all REST Stores All Stores in Kubernetes follow the same logic for determining the name of an object. This change makes it so that CompleteWithOptions defaults the ObjectNameFunc if it is not specified. Thus a user does not need to remember to use ObjectMeta.Name. Using the wrong field as the name can lead to an object which has a name that bypasses normal object name validation. Signed-off-by: Monis Khan Kubernetes-commit: ed35deb69d6fe480adc9178c30b4b9c9e03ca1a9 --- pkg/registry/generic/registry/store.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/registry/generic/registry/store.go b/pkg/registry/generic/registry/store.go index 8f39a9f29..e400ce934 100644 --- a/pkg/registry/generic/registry/store.go +++ b/pkg/registry/generic/registry/store.go @@ -1194,6 +1194,16 @@ func (e *Store) CompleteWithOptions(options *generic.StoreOptions) error { e.EnableGarbageCollection = opts.EnableGarbageCollection + if e.ObjectNameFunc == nil { + e.ObjectNameFunc = func(obj runtime.Object) (string, error) { + accessor, err := meta.Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetName(), nil + } + } + if e.Storage == nil { capacity := DefaultWatchCacheSize if e.WatchCacheSize != 0 {