From 6c6cd2deeb03040d458b00824fd6c1a900a81b51 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Wed, 8 Jul 2020 15:43:25 +0200 Subject: [PATCH] Setup cache dirs properly based on --cache-dir value --- .../pkg/genericclioptions/config_flags.go | 19 +++++++------------ .../discovery/cached/disk/cached_discovery.go | 2 -- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go b/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go index 11830f99f05..91d1a4b52c8 100644 --- a/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go +++ b/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go @@ -52,12 +52,11 @@ const ( flagUsername = "username" flagPassword = "password" flagTimeout = "request-timeout" - flagHTTPCacheDir = "cache-dir" + flagCacheDir = "cache-dir" ) var ( - defaultCacheDir = filepath.Join(homedir.HomeDir(), ".kube", "http-cache") - defaultDiscoveryCacheParentDir = filepath.Join(homedir.HomeDir(), ".kube", "cache", "discovery") + defaultCacheDir = filepath.Join(homedir.HomeDir(), ".kube", "cache") ) // RESTClientGetter is an interface that the ConfigFlags describe to provide an easier way to mock for commands @@ -227,19 +226,15 @@ func (f *ConfigFlags) ToDiscoveryClient() (discovery.CachedDiscoveryInterface, e // double it just so we don't end up here again for a while. This config is only used for discovery. config.Burst = 100 - httpCacheDir, discoveryCacheParentDir := defaultCacheDir, defaultDiscoveryCacheParentDir + cacheDir := defaultCacheDir // retrieve a user-provided value for the "cache-dir" // override httpCacheDir and discoveryCacheDir if user-value is given. if f.CacheDir != nil { - httpCacheDir = *f.CacheDir - if len(httpCacheDir) > 0 { - // override discoveryCacheDir default value so that server resources and http-cache data are stored in the same location - discoveryCacheParentDir = filepath.Join(filepath.Dir(httpCacheDir), "cache", "discovery") - } + cacheDir = *f.CacheDir } - - discoveryCacheDir := computeDiscoverCacheDir(discoveryCacheParentDir, config.Host) + httpCacheDir := filepath.Join(cacheDir, "http") + discoveryCacheDir := computeDiscoverCacheDir(filepath.Join(cacheDir, "discovery"), config.Host) return diskcached.NewCachedDiscoveryClientForConfig(config, discoveryCacheDir, httpCacheDir, time.Duration(10*time.Minute)) } @@ -262,7 +257,7 @@ func (f *ConfigFlags) AddFlags(flags *pflag.FlagSet) { flags.StringVar(f.KubeConfig, "kubeconfig", *f.KubeConfig, "Path to the kubeconfig file to use for CLI requests.") } if f.CacheDir != nil { - flags.StringVar(f.CacheDir, flagHTTPCacheDir, *f.CacheDir, "Default HTTP cache directory") + flags.StringVar(f.CacheDir, flagCacheDir, *f.CacheDir, "Default cache directory") } // add config options diff --git a/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery.go b/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery.go index d9cd8033354..6a35dcc604c 100644 --- a/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery.go +++ b/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery.go @@ -268,8 +268,6 @@ func (d *CachedDiscoveryClient) Invalidate() { // CachedDiscoveryClient cache data. If httpCacheDir is empty, the restconfig's transport will not // be updated with a roundtripper that understands cache responses. // If discoveryCacheDir is empty, cached server resource data will be looked up in the current directory. -// TODO(juanvallejo): the value of "--cache-dir" should be honored. Consolidate discoveryCacheDir with httpCacheDir -// so that server resources and http-cache data are stored in the same location, provided via config flags. func NewCachedDiscoveryClientForConfig(config *restclient.Config, discoveryCacheDir, httpCacheDir string, ttl time.Duration) (*CachedDiscoveryClient, error) { if len(httpCacheDir) > 0 { // update the given restconfig with a custom roundtripper that