Revert "Merge pull request #47353 from apelisse/http-cache"

This reverts commit fc89743dca6b563063b74728c3b28100cf674d9d, reversing
changes made to 29ab38e898988c36e2de34f77fa33be556eb21bd.

Kubernetes-commit: 4ee72eb300423772020dd1cf208159058ba7dab5
This commit is contained in:
Jordan Liggitt 2017-08-07 09:42:32 -04:00 committed by Kubernetes Publisher
parent 14f0c0a211
commit 53ab900949
10 changed files with 0 additions and 120 deletions

16
Godeps/Godeps.json generated
View File

@ -154,10 +154,6 @@
"ImportPath": "github.com/golang/protobuf/ptypes/timestamp", "ImportPath": "github.com/golang/protobuf/ptypes/timestamp",
"Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7"
}, },
{
"ImportPath": "github.com/google/btree",
"Rev": "7d79101e329e5a3adf994758c578dab82b90c017"
},
{ {
"ImportPath": "github.com/google/gofuzz", "ImportPath": "github.com/google/gofuzz",
"Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c"
@ -202,14 +198,6 @@
"ImportPath": "github.com/gophercloud/gophercloud/pagination", "ImportPath": "github.com/gophercloud/gophercloud/pagination",
"Rev": "ed590d9afe113c6107cd60717b196155e6579e78" "Rev": "ed590d9afe113c6107cd60717b196155e6579e78"
}, },
{
"ImportPath": "github.com/gregjones/httpcache",
"Rev": "787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath": "github.com/gregjones/httpcache/diskcache",
"Rev": "787624de3eb7bd915c329cba748687a3b22666a6"
},
{ {
"ImportPath": "github.com/hashicorp/golang-lru", "ImportPath": "github.com/hashicorp/golang-lru",
"Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
@ -246,10 +234,6 @@
"ImportPath": "github.com/mailru/easyjson/jwriter", "ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0"
}, },
{
"ImportPath": "github.com/peterbourgon/diskv",
"Rev": "5dfcb07a075adbaaa4094cddfd160b1e1c77a043"
},
{ {
"ImportPath": "github.com/pmezard/go-difflib/difflib", "ImportPath": "github.com/pmezard/go-difflib/difflib",
"Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d"

View File

@ -71,10 +71,6 @@ type Config struct {
// TODO: demonstrate an OAuth2 compatible client. // TODO: demonstrate an OAuth2 compatible client.
BearerToken string BearerToken string
// CacheDir is the directory where we'll store HTTP cached responses.
// If set to empty string, no caching mechanism will be used.
CacheDir string
// Impersonate is the configuration that RESTClient will use for impersonation. // Impersonate is the configuration that RESTClient will use for impersonation.
Impersonate ImpersonationConfig Impersonate ImpersonationConfig

View File

@ -249,7 +249,6 @@ func TestAnonymousConfig(t *testing.T) {
expected.BearerToken = "" expected.BearerToken = ""
expected.Username = "" expected.Username = ""
expected.Password = "" expected.Password = ""
expected.CacheDir = ""
expected.AuthProvider = nil expected.AuthProvider = nil
expected.AuthConfigPersister = nil expected.AuthConfigPersister = nil
expected.TLSClientConfig.CertData = nil expected.TLSClientConfig.CertData = nil

View File

@ -89,7 +89,6 @@ func (c *Config) TransportConfig() (*transport.Config, error) {
}, },
Username: c.Username, Username: c.Username,
Password: c.Password, Password: c.Password,
CacheDir: c.CacheDir,
BearerToken: c.BearerToken, BearerToken: c.BearerToken,
Impersonate: transport.ImpersonationConfig{ Impersonate: transport.ImpersonationConfig{
UserName: c.Impersonate.UserName, UserName: c.Impersonate.UserName,

View File

@ -22,7 +22,6 @@ import (
"io/ioutil" "io/ioutil"
"net/url" "net/url"
"os" "os"
"path/filepath"
"strings" "strings"
"github.com/golang/glog" "github.com/golang/glog"
@ -32,19 +31,16 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
clientauth "k8s.io/client-go/tools/auth" clientauth "k8s.io/client-go/tools/auth"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
"k8s.io/client-go/util/homedir"
) )
var ( var (
// ClusterDefaults has the same behavior as the old EnvVar and DefaultCluster fields // ClusterDefaults has the same behavior as the old EnvVar and DefaultCluster fields
// DEPRECATED will be replaced // DEPRECATED will be replaced
ClusterDefaults = clientcmdapi.Cluster{Server: getDefaultServer()} ClusterDefaults = clientcmdapi.Cluster{Server: getDefaultServer()}
cacheDirDefault = filepath.Join(homedir.HomeDir(), ".kube", "http-cache")
// DefaultClientConfig represents the legacy behavior of this package for defaulting // DefaultClientConfig represents the legacy behavior of this package for defaulting
// DEPRECATED will be replace // DEPRECATED will be replace
DefaultClientConfig = DirectClientConfig{*clientcmdapi.NewConfig(), "", &ConfigOverrides{ DefaultClientConfig = DirectClientConfig{*clientcmdapi.NewConfig(), "", &ConfigOverrides{
ClusterDefaults: ClusterDefaults, ClusterDefaults: ClusterDefaults,
CacheDir: cacheDirDefault,
}, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}} }, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}}
) )
@ -135,7 +131,6 @@ func (config *DirectClientConfig) ClientConfig() (*restclient.Config, error) {
clientConfig := &restclient.Config{} clientConfig := &restclient.Config{}
clientConfig.Host = configClusterInfo.Server clientConfig.Host = configClusterInfo.Server
clientConfig.CacheDir = config.overrides.CacheDir
if len(config.overrides.Timeout) > 0 { if len(config.overrides.Timeout) > 0 {
timeout, err := ParseTimeout(config.overrides.Timeout) timeout, err := ParseTimeout(config.overrides.Timeout)

View File

@ -17,13 +17,11 @@ limitations under the License.
package clientcmd package clientcmd
import ( import (
"path/filepath"
"strconv" "strconv"
"github.com/spf13/pflag" "github.com/spf13/pflag"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api" clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
"k8s.io/client-go/util/homedir"
) )
// ConfigOverrides holds values that should override whatever information is pulled from the actual Config object. You can't // ConfigOverrides holds values that should override whatever information is pulled from the actual Config object. You can't
@ -36,7 +34,6 @@ type ConfigOverrides struct {
Context clientcmdapi.Context Context clientcmdapi.Context
CurrentContext string CurrentContext string
Timeout string Timeout string
CacheDir string
} }
// ConfigOverrideFlags holds the flag names to be used for binding command line flags. Notice that this structure tightly // ConfigOverrideFlags holds the flag names to be used for binding command line flags. Notice that this structure tightly
@ -47,7 +44,6 @@ type ConfigOverrideFlags struct {
ContextOverrideFlags ContextOverrideFlags ContextOverrideFlags ContextOverrideFlags
CurrentContext FlagInfo CurrentContext FlagInfo
Timeout FlagInfo Timeout FlagInfo
CacheDir FlagInfo
} }
// AuthOverrideFlags holds the flag names to be used for binding command line flags for AuthInfo objects // AuthOverrideFlags holds the flag names to be used for binding command line flags for AuthInfo objects
@ -150,12 +146,10 @@ const (
FlagUsername = "username" FlagUsername = "username"
FlagPassword = "password" FlagPassword = "password"
FlagTimeout = "request-timeout" FlagTimeout = "request-timeout"
FlagCacheDir = "cachedir"
) )
// RecommendedConfigOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing // RecommendedConfigOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing
func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags { func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags {
defaultCacheDir := filepath.Join(homedir.HomeDir(), ".kube", "http-cache")
return ConfigOverrideFlags{ return ConfigOverrideFlags{
AuthOverrideFlags: RecommendedAuthOverrideFlags(prefix), AuthOverrideFlags: RecommendedAuthOverrideFlags(prefix),
ClusterOverrideFlags: RecommendedClusterOverrideFlags(prefix), ClusterOverrideFlags: RecommendedClusterOverrideFlags(prefix),
@ -163,7 +157,6 @@ func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags {
CurrentContext: FlagInfo{prefix + FlagContext, "", "", "The name of the kubeconfig context to use"}, CurrentContext: FlagInfo{prefix + FlagContext, "", "", "The name of the kubeconfig context to use"},
Timeout: FlagInfo{prefix + FlagTimeout, "", "0", "The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests."}, Timeout: FlagInfo{prefix + FlagTimeout, "", "0", "The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests."},
CacheDir: FlagInfo{prefix + FlagCacheDir, "", defaultCacheDir, "Path to http-cache directory"},
} }
} }
@ -205,7 +198,6 @@ func BindOverrideFlags(overrides *ConfigOverrides, flags *pflag.FlagSet, flagNam
BindContextFlags(&overrides.Context, flags, flagNames.ContextOverrideFlags) BindContextFlags(&overrides.Context, flags, flagNames.ContextOverrideFlags)
flagNames.CurrentContext.BindStringFlag(flags, &overrides.CurrentContext) flagNames.CurrentContext.BindStringFlag(flags, &overrides.CurrentContext)
flagNames.Timeout.BindStringFlag(flags, &overrides.Timeout) flagNames.Timeout.BindStringFlag(flags, &overrides.Timeout)
flagNames.CacheDir.BindStringFlag(flags, &overrides.CacheDir)
} }
// BindAuthInfoFlags is a convenience method to bind the specified flags to their associated variables // BindAuthInfoFlags is a convenience method to bind the specified flags to their associated variables

View File

@ -30,9 +30,6 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/gregjones/httpcache:go_default_library",
"//vendor/github.com/gregjones/httpcache/diskcache:go_default_library",
"//vendor/github.com/peterbourgon/diskv:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
], ],
) )

View File

@ -34,10 +34,6 @@ type Config struct {
// Bearer token for authentication // Bearer token for authentication
BearerToken string BearerToken string
// CacheDir is the directory where we'll store HTTP cached responses.
// If set to empty string, no caching mechanism will be used.
CacheDir string
// Impersonate is the config that this Config will impersonate using // Impersonate is the config that this Config will impersonate using
Impersonate ImpersonationConfig Impersonate ImpersonationConfig

View File

@ -23,9 +23,6 @@ import (
"time" "time"
"github.com/golang/glog" "github.com/golang/glog"
"github.com/gregjones/httpcache"
"github.com/gregjones/httpcache/diskcache"
"github.com/peterbourgon/diskv"
utilnet "k8s.io/apimachinery/pkg/util/net" utilnet "k8s.io/apimachinery/pkg/util/net"
) )
@ -59,9 +56,6 @@ func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTrip
len(config.Impersonate.Extra) > 0 { len(config.Impersonate.Extra) > 0 {
rt = NewImpersonatingRoundTripper(config.Impersonate, rt) rt = NewImpersonatingRoundTripper(config.Impersonate, rt)
} }
if len(config.CacheDir) > 0 {
rt = NewCacheRoundTripper(config.CacheDir, rt)
}
return rt, nil return rt, nil
} }
@ -93,17 +87,6 @@ type authProxyRoundTripper struct {
rt http.RoundTripper rt http.RoundTripper
} }
// NewCacheRoundTripper creates a roundtripper that reads the ETag on
// response headers and send the If-None-Match header on subsequent
// corresponding requests.
func NewCacheRoundTripper(cacheDir string, rt http.RoundTripper) http.RoundTripper {
d := diskv.New(diskv.Options{BasePath: cacheDir})
t := httpcache.NewTransport(diskcache.NewWithDiskv(d))
t.Transport = rt
return t
}
// NewAuthProxyRoundTripper provides a roundtripper which will add auth proxy fields to requests for // NewAuthProxyRoundTripper provides a roundtripper which will add auth proxy fields to requests for
// authentication terminating proxy cases // authentication terminating proxy cases
// assuming you pull the user from the context: // assuming you pull the user from the context:

View File

@ -17,11 +17,7 @@ limitations under the License.
package transport package transport
import ( import (
"bytes"
"io/ioutil"
"net/http" "net/http"
"net/url"
"os"
"reflect" "reflect"
"strings" "strings"
"testing" "testing"
@ -220,60 +216,3 @@ func TestAuthProxyRoundTripper(t *testing.T) {
} }
} }
} }
func TestCacheRoundTripper(t *testing.T) {
rt := &testRoundTripper{}
cacheDir, err := ioutil.TempDir("", "cache-rt")
defer os.RemoveAll(cacheDir)
if err != nil {
t.Fatal(err)
}
cache := NewCacheRoundTripper(cacheDir, rt)
// First call, caches the response
req := &http.Request{
Method: http.MethodGet,
URL: &url.URL{Host: "localhost"},
}
rt.Response = &http.Response{
Header: http.Header{"ETag": []string{`"123456"`}},
Body: ioutil.NopCloser(bytes.NewReader([]byte("Content"))),
StatusCode: http.StatusOK,
}
resp, err := cache.RoundTrip(req)
if err != nil {
t.Fatal(err)
}
content, err := ioutil.ReadAll(resp.Body)
if err != nil {
t.Fatal(err)
}
if string(content) != "Content" {
t.Errorf(`Expected Body to be "Content", got %q`, string(content))
}
// Second call, returns cached response
req = &http.Request{
Method: http.MethodGet,
URL: &url.URL{Host: "localhost"},
}
rt.Response = &http.Response{
StatusCode: http.StatusNotModified,
Body: ioutil.NopCloser(bytes.NewReader([]byte("Other Content"))),
}
resp, err = cache.RoundTrip(req)
if err != nil {
t.Fatal(err)
}
// Read body and make sure we have the initial content
content, err = ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
t.Fatal(err)
}
if string(content) != "Content" {
t.Errorf("Invalid content read from cache %q", string(content))
}
}