From 3d8cfaacbe187e492cfa489034891ac7f7beb48c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Thu, 14 Apr 2022 10:52:31 +0300 Subject: [PATCH] Introduce KUBECACHEDIR environment variable to override default discovery cache dir This PR introduces new environment variable, namely `KUBECACHEDIR`. `KUBECACHEDIR` is used to override default discovery cache directory for all commands(whose default value is $HOME/.kube/cache). `--cache-dir` flag per command has higher precedence than `KUBECACHEDIR` and default directory path. --- .../cli-runtime/pkg/genericclioptions/config_flags.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 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 0d604b9c2fb..63af224d098 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 @@ -276,12 +276,18 @@ func (f *ConfigFlags) toDiscoveryClient() (discovery.CachedDiscoveryInterface, e config.QPS = f.discoveryQPS cacheDir := defaultCacheDir + if kcd := os.Getenv("KUBECACHEDIR"); kcd != "" { + cacheDir = kcd + } // retrieve a user-provided value for the "cache-dir" // override httpCacheDir and discoveryCacheDir if user-value is given. - if f.CacheDir != nil { + // user-provided value has higher precedence than default + // and KUBECACHEDIR environment variable. + if f.CacheDir != nil && *f.CacheDir != "" { cacheDir = *f.CacheDir } + httpCacheDir := filepath.Join(cacheDir, "http") discoveryCacheDir := computeDiscoverCacheDir(filepath.Join(cacheDir, "discovery"), config.Host) @@ -420,7 +426,7 @@ func NewConfigFlags(usePersistentConfig bool) *ConfigFlags { Timeout: utilpointer.String("0"), KubeConfig: utilpointer.String(""), - CacheDir: utilpointer.String(defaultCacheDir), + CacheDir: utilpointer.String(""), ClusterName: utilpointer.String(""), AuthInfoName: utilpointer.String(""), Context: utilpointer.String(""),