Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
40593557
Commit
40593557
authored
May 08, 2018
by
juanvallejo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move cached_discovery to client-go/discovery
parent
d2952c0b
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
206 additions
and
149 deletions
+206
-149
fake.go
pkg/kubectl/cmd/testing/fake.go
+7
-3
BUILD
pkg/kubectl/cmd/util/BUILD
+0
-17
config_flags.go
pkg/kubectl/cmd/util/config_flags.go
+2
-24
factory_test.go
pkg/kubectl/cmd/util/factory_test.go
+1
-46
BUILD
pkg/kubectl/cmd/util/transport/BUILD
+0
-33
builder_test.go
pkg/kubectl/genericclioptions/resource/builder_test.go
+33
-0
Godeps.json
...ing/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
+12
-0
Godeps.json
staging/src/k8s.io/apiserver/Godeps/Godeps.json
+12
-0
Godeps.json
staging/src/k8s.io/client-go/Godeps/Godeps.json
+16
-0
BUILD
staging/src/k8s.io/client-go/discovery/BUILD
+14
-1
cached_discovery.go
staging/src/k8s.io/client-go/discovery/cached_discovery.go
+33
-9
cached_discovery_test.go
...g/src/k8s.io/client-go/discovery/cached_discovery_test.go
+5
-6
round_tripper.go
staging/src/k8s.io/client-go/discovery/round_tripper.go
+3
-3
round_tripper_test.go
staging/src/k8s.io/client-go/discovery/round_tripper_test.go
+2
-2
Godeps.json
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
+16
-0
Godeps.json
staging/src/k8s.io/metrics/Godeps/Godeps.json
+12
-0
Godeps.json
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
+16
-0
Godeps.json
staging/src/k8s.io/sample-controller/Godeps/Godeps.json
+16
-0
print_test.go
test/integration/apiserver/print_test.go
+6
-5
No files found.
pkg/kubectl/cmd/testing/fake.go
View file @
40593557
...
...
@@ -418,11 +418,15 @@ func (f *TestFactory) RESTClient() (*restclient.RESTClient, error) {
func
(
f
*
TestFactory
)
DiscoveryClient
()
(
discovery
.
CachedDiscoveryInterface
,
error
)
{
fakeClient
:=
f
.
Client
.
(
*
fake
.
RESTClient
)
discoveryClient
:=
discovery
.
NewDiscoveryClientForConfigOrDie
(
f
.
ClientConfigVal
)
discoveryClient
.
RESTClient
()
.
(
*
restclient
.
RESTClient
)
.
Client
=
fakeClient
.
Client
cacheDir
:=
filepath
.
Join
(
""
,
".kube"
,
"cache"
,
"discovery"
)
return
cmdutil
.
NewCachedDiscoveryClient
(
discoveryClient
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
)),
nil
cachedClient
,
err
:=
discovery
.
NewCachedDiscoveryClientForConfig
(
f
.
ClientConfigVal
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
))
if
err
!=
nil
{
return
nil
,
err
}
cachedClient
.
RESTClient
()
.
(
*
restclient
.
RESTClient
)
.
Client
=
fakeClient
.
Client
return
cachedClient
,
nil
}
func
(
f
*
TestFactory
)
ClientSetForVersion
(
requiredVersion
*
schema
.
GroupVersion
)
(
internalclientset
.
Interface
,
error
)
{
...
...
pkg/kubectl/cmd/util/BUILD
View file @
40593557
...
...
@@ -3,7 +3,6 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = [
"cached_discovery.go",
"config_flags.go",
"conversion.go",
"factory.go",
...
...
@@ -30,17 +29,14 @@ go_library(
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/cmd/util/openapi/validation:go_default_library",
"//pkg/kubectl/cmd/util/transport:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/plugins:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/validation:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/printers/internalversion:go_default_library",
"//pkg/version:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
...
...
@@ -61,7 +57,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
...
...
@@ -79,14 +74,12 @@ go_library(
go_test(
name = "go_default_test",
srcs = [
"cached_discovery_test.go",
"factory_object_mapping_test.go",
"factory_test.go",
"helpers_test.go",
],
embed = [":go_default_library"],
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library",
"//pkg/apis/apps:go_default_library",
...
...
@@ -97,14 +90,10 @@ go_test(
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta/testrestmapper:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
...
...
@@ -112,12 +101,7 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
"//vendor/k8s.io/client-go/restmapper:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
],
...
...
@@ -139,7 +123,6 @@ filegroup(
"//pkg/kubectl/cmd/util/jsonmerge:all-srcs",
"//pkg/kubectl/cmd/util/openapi:all-srcs",
"//pkg/kubectl/cmd/util/sanity:all-srcs",
"//pkg/kubectl/cmd/util/transport:all-srcs",
],
tags = ["automanaged"],
visibility = ["//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS"],
...
...
pkg/kubectl/cmd/util/config_flags.go
View file @
40593557
...
...
@@ -18,7 +18,6 @@ package util
import
(
"fmt"
"net/http"
"os"
"path/filepath"
"time"
...
...
@@ -32,8 +31,6 @@ import (
"k8s.io/client-go/restmapper"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/transport"
)
const
(
...
...
@@ -179,27 +176,8 @@ 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
cacheDir
:=
filepath
.
Join
(
homedir
.
HomeDir
(),
".kube"
,
"http-cache"
)
if
f
.
CacheDir
!=
nil
{
cacheDir
=
*
f
.
CacheDir
}
if
len
(
cacheDir
)
>
0
{
wt
:=
config
.
WrapTransport
config
.
WrapTransport
=
func
(
rt
http
.
RoundTripper
)
http
.
RoundTripper
{
if
wt
!=
nil
{
rt
=
wt
(
rt
)
}
return
transport
.
NewCacheRoundTripper
(
cacheDir
,
rt
)
}
}
discoveryClient
,
err
:=
discovery
.
NewDiscoveryClientForConfig
(
config
)
if
err
!=
nil
{
return
nil
,
err
}
cacheDir
=
computeDiscoverCacheDir
(
filepath
.
Join
(
homedir
.
HomeDir
(),
".kube"
,
"cache"
,
"discovery"
),
config
.
Host
)
return
NewCachedDiscoveryClient
(
discoveryClient
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
)),
nil
cacheDir
:=
computeDiscoverCacheDir
(
filepath
.
Join
(
homedir
.
HomeDir
(),
".kube"
,
"cache"
,
"discovery"
),
config
.
Host
)
return
discovery
.
NewCachedDiscoveryClientForConfig
(
config
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
))
}
// RESTMapper returns a mapper.
...
...
pkg/kubectl/cmd/util/factory_test.go
View file @
40593557
...
...
@@ -24,23 +24,19 @@ import (
"time"
"k8s.io/api/core/v1"
apiequality
"k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/meta/testrestmapper"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/watch"
manualfake
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/restmapper"
testcore
"k8s.io/client-go/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
)
func
TestPortsForObject
(
t
*
testing
.
T
)
{
...
...
@@ -439,44 +435,3 @@ func TestMakePortsString(t *testing.T) {
}
}
}
func
fakeClient
()
resource
.
FakeClientFunc
{
return
func
(
version
schema
.
GroupVersion
)
(
resource
.
RESTClient
,
error
)
{
return
&
manualfake
.
RESTClient
{},
nil
}
}
func
TestDiscoveryReplaceAliases
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
arg
string
expected
string
}{
{
name
:
"no-replacement"
,
arg
:
"service"
,
expected
:
"service"
,
},
{
name
:
"all-replacement"
,
arg
:
"all"
,
expected
:
"pods,replicationcontrollers,services,statefulsets.apps,horizontalpodautoscalers.autoscaling,jobs.batch,cronjobs.batch,daemonsets.extensions,deployments.extensions,replicasets.extensions"
,
},
{
name
:
"alias-in-comma-separated-arg"
,
arg
:
"all,secrets"
,
expected
:
"pods,replicationcontrollers,services,statefulsets.apps,horizontalpodautoscalers.autoscaling,jobs.batch,cronjobs.batch,daemonsets.extensions,deployments.extensions,replicasets.extensions,secrets"
,
},
}
ds
:=
&
fakeDiscoveryClient
{}
mapper
:=
restmapper
.
NewShortcutExpander
(
testrestmapper
.
TestOnlyStaticRESTMapper
(
legacyscheme
.
Scheme
),
ds
)
b
:=
resource
.
NewFakeBuilder
(
fakeClient
(),
mapper
,
resource
.
FakeCategoryExpander
)
for
_
,
test
:=
range
tests
{
replaced
:=
b
.
ReplaceAliases
(
test
.
arg
)
if
replaced
!=
test
.
expected
{
t
.
Errorf
(
"%s: unexpected argument: expected %s, got %s"
,
test
.
name
,
test
.
expected
,
replaced
)
}
}
}
pkg/kubectl/cmd/util/transport/BUILD
deleted
100644 → 0
View file @
d2952c0b
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["round_tripper.go"],
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/util/transport",
visibility = ["//visibility:public"],
deps = [
"//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",
],
)
go_test(
name = "go_default_test",
srcs = ["round_tripper_test.go"],
embed = [":go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
pkg/kubectl/genericclioptions/resource/builder_test.go
View file @
40593557
...
...
@@ -557,6 +557,39 @@ func TestURLBuilderRequireNamespace(t *testing.T) {
}
}
func
TestReplaceAliases
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
arg
string
expected
string
}{
{
name
:
"no-replacement"
,
arg
:
"service"
,
expected
:
"service"
,
},
{
name
:
"all-replacement"
,
arg
:
"all"
,
expected
:
"pods,replicationcontrollers,services,statefulsets.apps,horizontalpodautoscalers.autoscaling,jobs.batch,cronjobs.batch,daemonsets.extensions,deployments.extensions,replicasets.extensions"
,
},
{
name
:
"alias-in-comma-separated-arg"
,
arg
:
"all,secrets"
,
expected
:
"pods,replicationcontrollers,services,statefulsets.apps,horizontalpodautoscalers.autoscaling,jobs.batch,cronjobs.batch,daemonsets.extensions,deployments.extensions,replicasets.extensions,secrets"
,
},
}
b
:=
newDefaultBuilder
()
for
_
,
test
:=
range
tests
{
replaced
:=
b
.
ReplaceAliases
(
test
.
arg
)
if
replaced
!=
test
.
expected
{
t
.
Errorf
(
"%s: unexpected argument: expected %s, got %s"
,
test
.
name
,
test
.
expected
,
replaced
)
}
}
}
func
TestResourceByName
(
t
*
testing
.
T
)
{
pods
,
_
:=
testData
()
b
:=
newDefaultBuilderWith
(
fakeClientWith
(
""
,
t
,
map
[
string
]
string
{
...
...
staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
View file @
40593557
...
...
@@ -487,6 +487,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/grpc-ecosystem/go-grpc-prometheus"
,
"Rev"
:
"2500245aa6110c562d17020fb31a2c133d737799"
},
...
...
@@ -555,6 +563,10 @@
"Rev"
:
"ca53cad383cad2479bbba7f7a1a05797ec1386e4"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/pmezard/go-difflib/difflib"
,
"Rev"
:
"d8ed2627bdf02c080bf22230dbb337003b7aba2d"
},
...
...
staging/src/k8s.io/apiserver/Godeps/Godeps.json
View file @
40593557
...
...
@@ -463,6 +463,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/grpc-ecosystem/go-grpc-prometheus"
,
"Rev"
:
"2500245aa6110c562d17020fb31a2c133d737799"
},
...
...
@@ -527,6 +535,10 @@
"Rev"
:
"ca53cad383cad2479bbba7f7a1a05797ec1386e4"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/pmezard/go-difflib/difflib"
,
"Rev"
:
"d8ed2627bdf02c080bf22230dbb337003b7aba2d"
},
...
...
staging/src/k8s.io/client-go/Godeps/Godeps.json
View file @
40593557
...
...
@@ -87,6 +87,10 @@
"Rev"
:
"1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
{
"ImportPath"
:
"github.com/google/btree"
,
"Rev"
:
"7d79101e329e5a3adf994758c578dab82b90c017"
},
{
"ImportPath"
:
"github.com/google/gofuzz"
,
"Rev"
:
"44d81051d367757e1c7c6a5a86423ece9afcf63c"
},
...
...
@@ -131,6 +135,14 @@
"Rev"
:
"781450b3c4fcb4f5182bcc5133adb4b2e4a09d1d"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/hashicorp/golang-lru"
,
"Rev"
:
"a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
},
...
...
@@ -155,6 +167,10 @@
"Rev"
:
"05fbef0ca5da472bbf96c9322b84a53edc03c9fd"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/pmezard/go-difflib/difflib"
,
"Rev"
:
"d8ed2627bdf02c080bf22230dbb337003b7aba2d"
},
...
...
staging/src/k8s.io/client-go/discovery/BUILD
View file @
40593557
...
...
@@ -9,14 +9,20 @@ load(
go_library(
name = "go_default_library",
srcs = [
"cached_discovery.go",
"discovery_client.go",
"helper.go",
"round_tripper.go",
"unstructured.go",
],
importpath = "k8s.io/client-go/discovery",
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/protobuf/proto:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2: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/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
...
...
@@ -65,16 +71,23 @@ filegroup(
go_test(
name = "go_default_test",
srcs = ["discovery_client_test.go"],
srcs = [
"cached_discovery_test.go",
"discovery_client_test.go",
"round_tripper_test.go",
],
embed = [":go_default_library"],
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
],
)
pkg/kubectl/cmd/util
/cached_discovery.go
→
staging/src/k8s.io/client-go/discovery
/cached_discovery.go
View file @
40593557
...
...
@@ -14,11 +14,12 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
util
package
discovery
import
(
"errors"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"sync"
...
...
@@ -30,15 +31,14 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/version"
"k8s.io/client-go/
discovery
"
"k8s.io/client-go/
kubernetes/scheme
"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
// CachedDiscoveryClient implements the functions that discovery server-supported API groups,
// versions and resources.
type
CachedDiscoveryClient
struct
{
delegate
discovery
.
DiscoveryInterface
delegate
DiscoveryInterface
// cacheDirectory is the directory where discovery docs are held. It must be unique per host:port combination to work well.
cacheDirectory
string
...
...
@@ -57,7 +57,7 @@ type CachedDiscoveryClient struct {
fresh
bool
}
var
_
discovery
.
CachedDiscoveryInterface
=
&
CachedDiscoveryClient
{}
var
_
CachedDiscoveryInterface
=
&
CachedDiscoveryClient
{}
// ServerResourcesForGroupVersion returns the supported resources for a group and version.
func
(
d
*
CachedDiscoveryClient
)
ServerResourcesForGroupVersion
(
groupVersion
string
)
(
*
metav1
.
APIResourceList
,
error
)
{
...
...
@@ -91,7 +91,7 @@ func (d *CachedDiscoveryClient) ServerResourcesForGroupVersion(groupVersion stri
// ServerResources returns the supported resources for all groups and versions.
func
(
d
*
CachedDiscoveryClient
)
ServerResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
discovery
.
ServerResources
(
d
)
return
ServerResources
(
d
)
}
func
(
d
*
CachedDiscoveryClient
)
ServerGroups
()
(
*
metav1
.
APIGroupList
,
error
)
{
...
...
@@ -207,11 +207,11 @@ func (d *CachedDiscoveryClient) RESTClient() restclient.Interface {
}
func
(
d
*
CachedDiscoveryClient
)
ServerPreferredResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
discovery
.
ServerPreferredResources
(
d
)
return
ServerPreferredResources
(
d
)
}
func
(
d
*
CachedDiscoveryClient
)
ServerPreferredNamespacedResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
discovery
.
ServerPreferredNamespacedResources
(
d
)
return
ServerPreferredNamespacedResources
(
d
)
}
func
(
d
*
CachedDiscoveryClient
)
ServerVersion
()
(
*
version
.
Info
,
error
)
{
...
...
@@ -238,8 +238,32 @@ func (d *CachedDiscoveryClient) Invalidate() {
d
.
invalidated
=
true
}
// NewCachedDiscoveryClientForConfig creates a new DiscoveryClient for the given config, and wraps
// the created client in a CachedDiscoveryClient. The provided configuration is upddated with a
// custom transport that understands cache responses.
func
NewCachedDiscoveryClientForConfig
(
config
*
restclient
.
Config
,
cacheDirectory
string
,
ttl
time
.
Duration
)
(
*
CachedDiscoveryClient
,
error
)
{
if
len
(
cacheDirectory
)
>
0
{
// update the given restconfig with a custom roundtripper that
// understands how to handle cache responses.
wt
:=
config
.
WrapTransport
config
.
WrapTransport
=
func
(
rt
http
.
RoundTripper
)
http
.
RoundTripper
{
if
wt
!=
nil
{
rt
=
wt
(
rt
)
}
return
newCacheRoundTripper
(
cacheDirectory
,
rt
)
}
}
discoveryClient
,
err
:=
NewDiscoveryClientForConfig
(
config
)
if
err
!=
nil
{
return
nil
,
err
}
return
newCachedDiscoveryClient
(
discoveryClient
,
cacheDirectory
,
ttl
),
nil
}
// NewCachedDiscoveryClient creates a new DiscoveryClient. cacheDirectory is the directory where discovery docs are held. It must be unique per host:port combination to work well.
func
NewCachedDiscoveryClient
(
delegate
discovery
.
DiscoveryInterface
,
cacheDirectory
string
,
ttl
time
.
Duration
)
*
CachedDiscoveryClient
{
func
newCachedDiscoveryClient
(
delegate
DiscoveryInterface
,
cacheDirectory
string
,
ttl
time
.
Duration
)
*
CachedDiscoveryClient
{
return
&
CachedDiscoveryClient
{
delegate
:
delegate
,
cacheDirectory
:
cacheDirectory
,
...
...
pkg/kubectl/cmd/util
/cached_discovery_test.go
→
staging/src/k8s.io/client-go/discovery
/cached_discovery_test.go
View file @
40593557
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
util
package
discovery
import
(
"io/ioutil"
...
...
@@ -29,7 +29,6 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/version"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
)
...
...
@@ -42,7 +41,7 @@ func TestCachedDiscoveryClient_Fresh(t *testing.T) {
defer
os
.
RemoveAll
(
d
)
c
:=
fakeDiscoveryClient
{}
cdc
:=
N
ewCachedDiscoveryClient
(
&
c
,
d
,
60
*
time
.
Second
)
cdc
:=
n
ewCachedDiscoveryClient
(
&
c
,
d
,
60
*
time
.
Second
)
assert
.
True
(
cdc
.
Fresh
(),
"should be fresh after creation"
)
cdc
.
ServerGroups
()
...
...
@@ -61,7 +60,7 @@ func TestCachedDiscoveryClient_Fresh(t *testing.T) {
assert
.
True
(
cdc
.
Fresh
(),
"should be fresh after another resources call"
)
assert
.
Equal
(
c
.
resourceCalls
,
1
)
cdc
=
N
ewCachedDiscoveryClient
(
&
c
,
d
,
60
*
time
.
Second
)
cdc
=
n
ewCachedDiscoveryClient
(
&
c
,
d
,
60
*
time
.
Second
)
cdc
.
ServerGroups
()
assert
.
False
(
cdc
.
Fresh
(),
"should NOT be fresh after recreation with existing groups cache"
)
assert
.
Equal
(
c
.
groupCalls
,
1
)
...
...
@@ -86,7 +85,7 @@ func TestNewCachedDiscoveryClient_TTL(t *testing.T) {
defer
os
.
RemoveAll
(
d
)
c
:=
fakeDiscoveryClient
{}
cdc
:=
N
ewCachedDiscoveryClient
(
&
c
,
d
,
1
*
time
.
Nanosecond
)
cdc
:=
n
ewCachedDiscoveryClient
(
&
c
,
d
,
1
*
time
.
Nanosecond
)
cdc
.
ServerGroups
()
assert
.
Equal
(
c
.
groupCalls
,
1
)
...
...
@@ -105,7 +104,7 @@ type fakeDiscoveryClient struct {
serverResourcesHandler
func
()
([]
*
metav1
.
APIResourceList
,
error
)
}
var
_
discovery
.
DiscoveryInterface
=
&
fakeDiscoveryClient
{}
var
_
DiscoveryInterface
=
&
fakeDiscoveryClient
{}
func
(
c
*
fakeDiscoveryClient
)
RESTClient
()
restclient
.
Interface
{
return
&
fake
.
RESTClient
{}
...
...
pkg/kubectl/cmd/util/transport
/round_tripper.go
→
staging/src/k8s.io/client-go/discovery
/round_tripper.go
View file @
40593557
...
...
@@ -15,7 +15,7 @@ limitations under the License.
*/
// Package transport provides a round tripper capable of caching HTTP responses.
package
transport
package
discovery
import
(
"net/http"
...
...
@@ -30,10 +30,10 @@ type cacheRoundTripper struct {
rt
*
httpcache
.
Transport
}
//
N
ewCacheRoundTripper creates a roundtripper that reads the ETag on
//
n
ewCacheRoundTripper creates a roundtripper that reads the ETag on
// response headers and send the If-None-Match header on subsequent
// corresponding requests.
func
N
ewCacheRoundTripper
(
cacheDir
string
,
rt
http
.
RoundTripper
)
http
.
RoundTripper
{
func
n
ewCacheRoundTripper
(
cacheDir
string
,
rt
http
.
RoundTripper
)
http
.
RoundTripper
{
d
:=
diskv
.
New
(
diskv
.
Options
{
BasePath
:
cacheDir
,
TempDir
:
filepath
.
Join
(
cacheDir
,
".diskv-temp"
),
...
...
pkg/kubectl/cmd/util/transport
/round_tripper_test.go
→
staging/src/k8s.io/client-go/discovery
/round_tripper_test.go
View file @
40593557
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
transport
package
discovery
import
(
"bytes"
...
...
@@ -44,7 +44,7 @@ func TestCacheRoundTripper(t *testing.T) {
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
cache
:=
N
ewCacheRoundTripper
(
cacheDir
,
rt
)
cache
:=
n
ewCacheRoundTripper
(
cacheDir
,
rt
)
// First call, caches the response
req
:=
&
http
.
Request
{
...
...
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
View file @
40593557
...
...
@@ -171,6 +171,10 @@
"Rev"
:
"1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
{
"ImportPath"
:
"github.com/google/btree"
,
"Rev"
:
"7d79101e329e5a3adf994758c578dab82b90c017"
},
{
"ImportPath"
:
"github.com/google/gofuzz"
,
"Rev"
:
"44d81051d367757e1c7c6a5a86423ece9afcf63c"
},
...
...
@@ -187,6 +191,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/hashicorp/golang-lru"
,
"Rev"
:
"a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
},
...
...
@@ -239,6 +251,10 @@
"Rev"
:
"ca53cad383cad2479bbba7f7a1a05797ec1386e4"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/pmezard/go-difflib/difflib"
,
"Rev"
:
"d8ed2627bdf02c080bf22230dbb337003b7aba2d"
},
...
...
staging/src/k8s.io/metrics/Godeps/Godeps.json
View file @
40593557
...
...
@@ -43,6 +43,10 @@
"Rev"
:
"1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
{
"ImportPath"
:
"github.com/google/btree"
,
"Rev"
:
"7d79101e329e5a3adf994758c578dab82b90c017"
},
{
"ImportPath"
:
"github.com/google/gofuzz"
,
"Rev"
:
"44d81051d367757e1c7c6a5a86423ece9afcf63c"
},
...
...
@@ -59,6 +63,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/json-iterator/go"
,
"Rev"
:
"2ddf6d758266fcb080a4f9e054b9f292c85e6798"
},
...
...
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
View file @
40593557
...
...
@@ -163,6 +163,10 @@
"Rev"
:
"1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
{
"ImportPath"
:
"github.com/google/btree"
,
"Rev"
:
"7d79101e329e5a3adf994758c578dab82b90c017"
},
{
"ImportPath"
:
"github.com/google/gofuzz"
,
"Rev"
:
"44d81051d367757e1c7c6a5a86423ece9afcf63c"
},
...
...
@@ -179,6 +183,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/hashicorp/golang-lru"
,
"Rev"
:
"a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
},
...
...
@@ -227,6 +239,10 @@
"Rev"
:
"ca53cad383cad2479bbba7f7a1a05797ec1386e4"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/prometheus/client_golang/prometheus"
,
"Rev"
:
"e7e903064f5e9eb5da98208bae10b475d4db0f8c"
},
...
...
staging/src/k8s.io/sample-controller/Godeps/Godeps.json
View file @
40593557
...
...
@@ -51,6 +51,10 @@
"Rev"
:
"1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
{
"ImportPath"
:
"github.com/google/btree"
,
"Rev"
:
"7d79101e329e5a3adf994758c578dab82b90c017"
},
{
"ImportPath"
:
"github.com/google/gofuzz"
,
"Rev"
:
"44d81051d367757e1c7c6a5a86423ece9afcf63c"
},
...
...
@@ -67,6 +71,14 @@
"Rev"
:
"0c5108395e2debce0d731cf0287ddf7242066aba"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/gregjones/httpcache/diskcache"
,
"Rev"
:
"787624de3eb7bd915c329cba748687a3b22666a6"
},
{
"ImportPath"
:
"github.com/hashicorp/golang-lru"
,
"Rev"
:
"a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
},
...
...
@@ -91,6 +103,10 @@
"Rev"
:
"05fbef0ca5da472bbf96c9322b84a53edc03c9fd"
},
{
"ImportPath"
:
"github.com/peterbourgon/diskv"
,
"Rev"
:
"5f041e8faa004a95c88a202771f4cc3e991971e6"
},
{
"ImportPath"
:
"github.com/spf13/pflag"
,
"Rev"
:
"583c0c0531f06d5278b7d917446061adc344b5cd"
},
...
...
test/integration/apiserver/print_test.go
View file @
40593557
...
...
@@ -156,10 +156,6 @@ func TestServerSidePrint(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
discoveryClient
,
err
:=
discovery
.
NewDiscoveryClientForConfig
(
restConfig
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
cacheDir
,
err
:=
ioutil
.
TempDir
(
os
.
TempDir
(),
"test-integration-apiserver-print"
)
if
err
!=
nil
{
...
...
@@ -169,7 +165,12 @@ func TestServerSidePrint(t *testing.T) {
os
.
Remove
(
cacheDir
)
}()
configFlags
.
WithDiscoveryClient
(
util
.
NewCachedDiscoveryClient
(
discoveryClient
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
)))
cachedClient
,
err
:=
discovery
.
NewCachedDiscoveryClientForConfig
(
restConfig
,
cacheDir
,
time
.
Duration
(
10
*
time
.
Minute
))
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
configFlags
.
WithDiscoveryClient
(
cachedClient
)
factory
:=
util
.
NewFactory
(
configFlags
)
mapper
,
err
:=
factory
.
RESTMapper
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment