From 46ab86af26b0154a08387a1d50e5218e0b181191 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 3 May 2018 23:34:09 -0400 Subject: [PATCH] Make ServerPreferred[Namespaced]Resources logic and caches consistent Kubernetes-commit: 74b7cec0c6b1355615097be4068500761a9893fd --- discovery/cached/memcache.go | 10 ++-------- discovery/discovery_client.go | 12 +++++++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/discovery/cached/memcache.go b/discovery/cached/memcache.go index 585b4c80..d4313bcf 100644 --- a/discovery/cached/memcache.go +++ b/discovery/cached/memcache.go @@ -96,18 +96,12 @@ func (d *memCacheClient) RESTClient() restclient.Interface { return d.delegate.RESTClient() } -// TODO: Should this also be cached? The results seem more likely to be -// inconsistent with ServerGroups and ServerResources given the requirement to -// actively Invalidate. func (d *memCacheClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) { - return d.delegate.ServerPreferredResources() + return discovery.ServerPreferredResources(d) } -// TODO: Should this also be cached? The results seem more likely to be -// inconsistent with ServerGroups and ServerResources given the requirement to -// actively Invalidate. func (d *memCacheClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) { - return d.delegate.ServerPreferredNamespacedResources() + return discovery.ServerPreferredNamespacedResources(d) } func (d *memCacheClient) ServerVersion() (*version.Info, error) { diff --git a/discovery/discovery_client.go b/discovery/discovery_client.go index 8beecb2f..d59e8a02 100644 --- a/discovery/discovery_client.go +++ b/discovery/discovery_client.go @@ -250,6 +250,11 @@ func IsGroupDiscoveryFailedError(err error) bool { // serverPreferredResources returns the supported resources with the version preferred by the server. func (d *DiscoveryClient) serverPreferredResources() ([]*metav1.APIResourceList, error) { + return ServerPreferredResources(d) +} + +// ServerPreferredResources uses the provided discovery interface to look up preferred resources +func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error) { serverGroupList, err := d.ServerGroups() if err != nil { return nil, err @@ -319,7 +324,12 @@ func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, // ServerPreferredNamespacedResources returns the supported namespaced resources with the // version preferred by the server. func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) { - all, err := d.ServerPreferredResources() + return ServerPreferredNamespacedResources(d) +} + +// ServerPreferredNamespacedResources uses the provided discovery interface to look up preferred namespaced resources +func ServerPreferredNamespacedResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error) { + all, err := ServerPreferredResources(d) return FilteredBy(ResourcePredicateFunc(func(groupVersion string, r *metav1.APIResource) bool { return r.Namespaced }), all), err