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
2734f8f8
Commit
2734f8f8
authored
Jan 25, 2017
by
deads2k
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move dynamic and discovery clients
parent
2a4fcdf8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
94 changed files
with
106 additions
and
2153 deletions
+106
-2153
BUILD
...aggregator/pkg/client/clientset_generated/clientset/BUILD
+1
-1
clientset.go
...tor/pkg/client/clientset_generated/clientset/clientset.go
+1
-1
BUILD
...gator/pkg/client/clientset_generated/clientset/fake/BUILD
+2
-2
clientset_generated.go
...clientset_generated/clientset/fake/clientset_generated.go
+2
-2
BUILD
...or/pkg/client/clientset_generated/internalclientset/BUILD
+1
-1
clientset.go
...client/clientset_generated/internalclientset/clientset.go
+1
-1
BUILD
...g/client/clientset_generated/internalclientset/fake/BUILD
+2
-2
clientset_generated.go
...t_generated/internalclientset/fake/clientset_generated.go
+2
-2
BUILD
cmd/kube-controller-manager/app/BUILD
+2
-2
controllermanager.go
cmd/kube-controller-manager/app/controllermanager.go
+1
-1
core.go
cmd/kube-controller-manager/app/core.go
+2
-2
BUILD
cmd/kubeadm/app/node/BUILD
+1
-1
bootstrap_test.go
cmd/kubeadm/app/node/bootstrap_test.go
+1
-1
generator_fake_for_clientset.go
...lient-gen/generators/fake/generator_fake_for_clientset.go
+2
-2
generator_for_clientset.go
...s/go2idl/client-gen/generators/generator_for_clientset.go
+1
-1
BUILD
...stoutput/clientset_generated/test_internalclientset/BUILD
+1
-1
clientset.go
...t/clientset_generated/test_internalclientset/clientset.go
+1
-1
BUILD
...put/clientset_generated/test_internalclientset/fake/BUILD
+2
-2
clientset_generated.go
...erated/test_internalclientset/fake/clientset_generated.go
+2
-2
BUILD
...ion/client/clientset_generated/federation_clientset/BUILD
+1
-1
clientset.go
...ent/clientset_generated/federation_clientset/clientset.go
+1
-1
BUILD
...lient/clientset_generated/federation_clientset/fake/BUILD
+2
-2
clientset_generated.go
...enerated/federation_clientset/fake/clientset_generated.go
+2
-2
BUILD
...nt/clientset_generated/federation_internalclientset/BUILD
+1
-1
clientset.go
...ntset_generated/federation_internalclientset/clientset.go
+1
-1
BUILD
...ientset_generated/federation_internalclientset/fake/BUILD
+2
-2
clientset_generated.go
.../federation_internalclientset/fake/clientset_generated.go
+2
-2
BUILD
federation/cmd/federation-controller-manager/app/BUILD
+1
-1
controllermanager.go
...md/federation-controller-manager/app/controllermanager.go
+1
-1
BUILD
federation/pkg/federation-controller/cluster/BUILD
+1
-1
cluster_client.go
...ation/pkg/federation-controller/cluster/cluster_client.go
+1
-1
BUILD
federation/pkg/kubefed/BUILD
+1
-1
BUILD
federation/pkg/kubefed/init/BUILD
+1
-1
init_test.go
federation/pkg/kubefed/init/init_test.go
+1
-1
join_test.go
federation/pkg/kubefed/join_test.go
+1
-1
unjoin_test.go
federation/pkg/kubefed/unjoin_test.go
+1
-1
BUILD
pkg/BUILD
+0
-2
BUILD
pkg/client/clientset_generated/clientset/BUILD
+1
-1
clientset.go
pkg/client/clientset_generated/clientset/clientset.go
+1
-1
BUILD
pkg/client/clientset_generated/clientset/fake/BUILD
+2
-2
clientset_generated.go
...clientset_generated/clientset/fake/clientset_generated.go
+2
-2
BUILD
pkg/client/clientset_generated/internalclientset/BUILD
+1
-1
clientset.go
...client/clientset_generated/internalclientset/clientset.go
+1
-1
BUILD
pkg/client/clientset_generated/internalclientset/fake/BUILD
+2
-2
clientset_generated.go
...t_generated/internalclientset/fake/clientset_generated.go
+2
-2
OWNERS
pkg/client/typed/OWNERS
+0
-15
BUILD
pkg/client/typed/discovery/BUILD
+0
-79
discovery_client.go
pkg/client/typed/discovery/discovery_client.go
+0
-0
discovery_client_test.go
pkg/client/typed/discovery/discovery_client_test.go
+0
-0
BUILD
pkg/client/typed/discovery/fake/BUILD
+0
-37
discovery.go
pkg/client/typed/discovery/fake/discovery.go
+0
-97
helper.go
pkg/client/typed/discovery/helper.go
+0
-162
helper_blackbox_test.go
pkg/client/typed/discovery/helper_blackbox_test.go
+0
-230
restmapper.go
pkg/client/typed/discovery/restmapper.go
+0
-319
restmapper_test.go
pkg/client/typed/discovery/restmapper_test.go
+0
-330
unstructured.go
pkg/client/typed/discovery/unstructured.go
+0
-95
BUILD
pkg/client/typed/dynamic/BUILD
+0
-68
client.go
pkg/client/typed/dynamic/client.go
+0
-301
client_pool.go
pkg/client/typed/dynamic/client_pool.go
+0
-115
client_test.go
pkg/client/typed/dynamic/client_test.go
+0
-0
dynamic_util.go
pkg/client/typed/dynamic/dynamic_util.go
+0
-96
dynamic_util_test.go
pkg/client/typed/dynamic/dynamic_util_test.go
+0
-79
BUILD
pkg/controller/garbagecollector/BUILD
+2
-2
garbagecollector.go
pkg/controller/garbagecollector/garbagecollector.go
+1
-1
garbagecollector_test.go
pkg/controller/garbagecollector/garbagecollector_test.go
+1
-1
rate_limiter_helper.go
pkg/controller/garbagecollector/rate_limiter_helper.go
+1
-1
BUILD
pkg/controller/namespace/BUILD
+4
-4
namespace_controller.go
pkg/controller/namespace/namespace_controller.go
+1
-1
namespace_controller_test.go
pkg/controller/namespace/namespace_controller_test.go
+2
-2
namespace_controller_utils.go
pkg/controller/namespace/namespace_controller_utils.go
+2
-2
BUILD
pkg/kubectl/cmd/BUILD
+2
-2
create_test.go
pkg/kubectl/cmd/create_test.go
+1
-1
delete_test.go
pkg/kubectl/cmd/delete_test.go
+1
-1
replace_test.go
pkg/kubectl/cmd/replace_test.go
+1
-1
run.go
pkg/kubectl/cmd/run.go
+1
-1
BUILD
pkg/kubectl/cmd/testing/BUILD
+1
-1
fake.go
pkg/kubectl/cmd/testing/fake.go
+1
-1
BUILD
pkg/kubectl/cmd/util/BUILD
+3
-3
cached_discovery.go
pkg/kubectl/cmd/util/cached_discovery.go
+1
-1
cached_discovery_test.go
pkg/kubectl/cmd/util/cached_discovery_test.go
+1
-1
clientcache.go
pkg/kubectl/cmd/util/clientcache.go
+1
-1
factory.go
pkg/kubectl/cmd/util/factory.go
+1
-1
factory_client_access.go
pkg/kubectl/cmd/util/factory_client_access.go
+1
-1
factory_object_mapping.go
pkg/kubectl/cmd/util/factory_object_mapping.go
+2
-2
shortcut_restmapper.go
pkg/kubectl/cmd/util/shortcut_restmapper.go
+1
-1
copy.sh
staging/copy.sh
+2
-5
BUILD
test/e2e/framework/BUILD
+2
-2
framework.go
test/e2e/framework/framework.go
+1
-1
util.go
test/e2e/framework/util.go
+2
-2
BUILD
test/e2e_node/services/BUILD
+1
-1
namespace_controller.go
test/e2e_node/services/namespace_controller.go
+1
-1
dynamic_client_test.go
test/integration/client/dynamic_client_test.go
+1
-1
garbage_collector_test.go
test/integration/garbagecollector/garbage_collector_test.go
+2
-2
BUILD
vendor/BUILD
+0
-19
No files found.
cmd/kube-aggregator/pkg/client/clientset_generated/clientset/BUILD
View file @
2734f8f8
...
...
@@ -16,8 +16,8 @@ go_library(
tags = ["automanaged"],
deps = [
"//cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/clientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,11 +18,11 @@ package clientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
v1alpha1apiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/clientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -20,10 +20,10 @@ go_library(
"//cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1/fake:go_default_library",
"//pkg/api:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/clientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,13 +19,13 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
clientset
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset"
v1alpha1apiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1"
fakev1alpha1apiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/BUILD
View file @
2734f8f8
...
...
@@ -16,8 +16,8 @@ go_library(
tags = ["automanaged"],
deps = [
"//cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,11 +18,11 @@ package internalclientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
internalversionapiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -20,10 +20,10 @@ go_library(
"//cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion/fake:go_default_library",
"//pkg/api:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,13 +19,13 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
clientset
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset"
internalversionapiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion"
fakeinternalversionapiregistration
"k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
cmd/kube-controller-manager/app/BUILD
View file @
2734f8f8
...
...
@@ -34,8 +34,6 @@ go_library(
"//pkg/client/leaderelection:go_default_library",
"//pkg/client/leaderelection/resourcelock:go_default_library",
"//pkg/client/record:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers:go_default_library",
"//pkg/cloudprovider/providers/aws:go_default_library",
...
...
@@ -99,6 +97,8 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apiserver/pkg/server/healthz",
"//vendor:k8s.io/apiserver/pkg/util/feature",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/clientcmd",
"//vendor:k8s.io/client-go/util/cert",
...
...
cmd/kube-controller-manager/app/controllermanager.go
View file @
2734f8f8
...
...
@@ -36,6 +36,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/server/healthz"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
certutil
"k8s.io/client-go/util/cert"
...
...
@@ -46,7 +47,6 @@ import (
"k8s.io/kubernetes/pkg/client/leaderelection"
"k8s.io/kubernetes/pkg/client/leaderelection/resourcelock"
"k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/informers"
...
...
cmd/kube-controller-manager/app/core.go
View file @
2734f8f8
...
...
@@ -26,11 +26,11 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/controller"
endpointcontroller
"k8s.io/kubernetes/pkg/controller/endpoint"
"k8s.io/kubernetes/pkg/controller/garbagecollector"
...
...
cmd/kubeadm/app/node/BUILD
View file @
2734f8f8
...
...
@@ -45,9 +45,9 @@ go_test(
deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//pkg/client/clientset_generated/clientset:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
],
)
...
...
cmd/kubeadm/app/node/bootstrap_test.go
View file @
2734f8f8
...
...
@@ -24,10 +24,10 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/version"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
kubeadmapi
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
func
TestEstablishMasterConnection
(
t
*
testing
.
T
)
{
...
...
cmd/libs/go2idl/client-gen/generators/fake/generator_fake_for_clientset.go
View file @
2734f8f8
...
...
@@ -71,8 +71,8 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
imports
=
append
(
imports
,
"k8s.io/kubernetes/pkg/api"
,
"k8s.io/kubernetes/pkg/client/testing/core"
,
"k8s.io/
kubernetes/pkg/client/typed
/discovery"
,
"fakediscovery
\"
k8s.io/
kubernetes/pkg/client/typed
/discovery/fake
\"
"
,
"k8s.io/
client-go
/discovery"
,
"fakediscovery
\"
k8s.io/
client-go
/discovery/fake
\"
"
,
"k8s.io/apimachinery/pkg/runtime"
,
"k8s.io/apimachinery/pkg/watch"
,
)
...
...
cmd/libs/go2idl/client-gen/generators/generator_for_clientset.go
View file @
2734f8f8
...
...
@@ -72,7 +72,7 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
// TODO: We actually don't need any type information to generate the clientset,
// perhaps we can adapt the go2ild framework to this kind of usage.
sw
:=
generator
.
NewSnippetWriter
(
w
,
c
,
"$"
,
"$"
)
const
pkgDiscovery
=
"k8s.io/
kubernetes/pkg/client/typed
/discovery"
const
pkgDiscovery
=
"k8s.io/
client-go
/discovery"
const
pkgRESTClient
=
"k8s.io/client-go/rest"
allGroups
:=
clientgentypes
.
ToGroupVersionPackages
(
g
.
groups
)
...
...
cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/BUILD
View file @
2734f8f8
...
...
@@ -17,8 +17,8 @@ go_library(
tags = ["automanaged"],
deps = [
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,11 +18,11 @@ package test_internalclientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
internalversiontestgroup
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -20,10 +20,10 @@ go_library(
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion/fake:go_default_library",
"//pkg/api:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,13 +19,13 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
clientset
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset"
internalversiontestgroup
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
fakeinternalversiontestgroup
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
federation/client/clientset_generated/federation_clientset/BUILD
View file @
2734f8f8
...
...
@@ -22,8 +22,8 @@ go_library(
"//federation/client/clientset_generated/federation_clientset/typed/core/v1:go_default_library",
"//federation/client/clientset_generated/federation_clientset/typed/extensions/v1beta1:go_default_library",
"//federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
federation/client/clientset_generated/federation_clientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,6 +18,7 @@ package federation_clientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
...
...
@@ -26,7 +27,6 @@ import (
v1core
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/core/v1"
v1beta1extensions
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/extensions/v1beta1"
v1beta1federation
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
federation/client/clientset_generated/federation_clientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -28,10 +28,10 @@ go_library(
"//federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1/fake:go_default_library",
"//pkg/api:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
federation/client/clientset_generated/federation_clientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,6 +19,8 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
clientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
v1autoscaling
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/autoscaling/v1"
fakev1autoscaling
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/autoscaling/v1/fake"
...
...
@@ -32,8 +34,6 @@ import (
fakev1beta1federation
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
federation/client/clientset_generated/federation_internalclientset/BUILD
View file @
2734f8f8
...
...
@@ -22,8 +22,8 @@ go_library(
"//federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion:go_default_library",
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
federation/client/clientset_generated/federation_internalclientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,6 +18,7 @@ package federation_internalclientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
...
...
@@ -26,7 +27,6 @@ import (
internalversioncore
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
internalversionextensions
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
internalversionfederation
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
federation/client/clientset_generated/federation_internalclientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -28,10 +28,10 @@ go_library(
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion/fake:go_default_library",
"//pkg/api:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
federation/client/clientset_generated/federation_internalclientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,6 +19,8 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
clientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
internalversionautoscaling
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/autoscaling/internalversion"
fakeinternalversionautoscaling
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/autoscaling/internalversion/fake"
...
...
@@ -32,8 +34,6 @@ import (
fakeinternalversionfederation
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
federation/cmd/federation-controller-manager/app/BUILD
View file @
2734f8f8
...
...
@@ -32,7 +32,6 @@ go_library(
"//federation/pkg/federation-controller/secret:go_default_library",
"//federation/pkg/federation-controller/service:go_default_library",
"//federation/pkg/federation-controller/util:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/util/configz:go_default_library",
"//pkg/version:go_default_library",
"//vendor:github.com/golang/glog",
...
...
@@ -44,6 +43,7 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apiserver/pkg/server/healthz",
"//vendor:k8s.io/apiserver/pkg/util/flag",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/clientcmd",
],
...
...
federation/cmd/federation-controller-manager/app/controllermanager.go
View file @
2734f8f8
...
...
@@ -53,7 +53,7 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/
kubernetes/pkg/client/typed
/discovery"
"k8s.io/
client-go
/discovery"
)
const
(
...
...
federation/pkg/federation-controller/cluster/BUILD
View file @
2734f8f8
...
...
@@ -24,7 +24,6 @@ go_library(
"//pkg/api:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/controller:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
...
...
@@ -33,6 +32,7 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/cache",
],
...
...
federation/pkg/federation-controller/cluster/cluster_client.go
View file @
2734f8f8
...
...
@@ -23,13 +23,13 @@ import (
"github.com/golang/glog"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
federation_v1beta1
"k8s.io/kubernetes/federation/apis/federation/v1beta1"
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
const
(
...
...
federation/pkg/kubefed/BUILD
View file @
2734f8f8
...
...
@@ -53,12 +53,12 @@ go_test(
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/util/diff",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest/fake",
"//vendor:k8s.io/client-go/tools/clientcmd",
"//vendor:k8s.io/client-go/tools/clientcmd/api",
...
...
federation/pkg/kubefed/init/BUILD
View file @
2734f8f8
...
...
@@ -46,13 +46,13 @@ go_test(
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/util/intstr:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/util/diff",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest/fake",
"//vendor:k8s.io/client-go/tools/clientcmd",
],
...
...
federation/pkg/kubefed/init/init_test.go
View file @
2734f8f8
...
...
@@ -33,6 +33,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/clientcmd"
kubefedtesting
"k8s.io/kubernetes/federation/pkg/kubefed/testing"
...
...
@@ -42,7 +43,6 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/util/intstr"
...
...
federation/pkg/kubefed/join_test.go
View file @
2734f8f8
...
...
@@ -25,6 +25,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi
"k8s.io/client-go/tools/clientcmd/api"
...
...
@@ -34,7 +35,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
...
...
federation/pkg/kubefed/unjoin_test.go
View file @
2734f8f8
...
...
@@ -25,12 +25,12 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
federationapi
"k8s.io/kubernetes/federation/apis/federation"
kubefedtesting
"k8s.io/kubernetes/federation/pkg/kubefed/testing"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
...
...
pkg/BUILD
View file @
2734f8f8
...
...
@@ -73,8 +73,6 @@ filegroup(
"//pkg/client/testing/cache:all-srcs",
"//pkg/client/testing/core:all-srcs",
"//pkg/client/tests:all-srcs",
"//pkg/client/typed/discovery:all-srcs",
"//pkg/client/typed/dynamic:all-srcs",
"//pkg/client/unversioned:all-srcs",
"//pkg/cloudprovider:all-srcs",
"//pkg/controller:all-srcs",
...
...
pkg/client/clientset_generated/clientset/BUILD
View file @
2734f8f8
...
...
@@ -41,8 +41,8 @@ go_library(
"//pkg/client/clientset_generated/clientset/typed/rbac/v1alpha1:go_default_library",
"//pkg/client/clientset_generated/clientset/typed/rbac/v1beta1:go_default_library",
"//pkg/client/clientset_generated/clientset/typed/storage/v1beta1:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
pkg/client/clientset_generated/clientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,6 +18,7 @@ package clientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
...
...
@@ -34,7 +35,6 @@ import (
v1alpha1rbac
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/rbac/v1alpha1"
v1beta1rbac
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/rbac/v1beta1"
v1beta1storage
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
pkg/client/clientset_generated/clientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -44,10 +44,10 @@ go_library(
"//pkg/client/clientset_generated/clientset/typed/storage/v1beta1:go_default_library",
"//pkg/client/clientset_generated/clientset/typed/storage/v1beta1/fake:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
pkg/client/clientset_generated/clientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,6 +19,8 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
"k8s.io/kubernetes/pkg/api"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
v1beta1apps
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1"
...
...
@@ -48,8 +50,6 @@ import (
v1beta1storage
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1"
fakev1beta1storage
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1/fake"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
pkg/client/clientset_generated/internalclientset/BUILD
View file @
2734f8f8
...
...
@@ -40,8 +40,8 @@ go_library(
"//pkg/client/clientset_generated/internalclientset/typed/policy/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
...
...
pkg/client/clientset_generated/internalclientset/clientset.go
View file @
2734f8f8
...
...
@@ -18,6 +18,7 @@ package internalclientset
import
(
"github.com/golang/glog"
discovery
"k8s.io/client-go/discovery"
_
"k8s.io/client-go/plugin/pkg/client/auth"
rest
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
...
...
@@ -32,7 +33,6 @@ import (
internalversionpolicy
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion"
internalversionrbac
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
internalversionstorage
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion"
discovery
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
type
Interface
interface
{
...
...
pkg/client/clientset_generated/internalclientset/fake/BUILD
View file @
2734f8f8
...
...
@@ -40,10 +40,10 @@ go_library(
"//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/fake:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/discovery/fake:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/discovery/fake",
],
)
...
...
pkg/client/clientset_generated/internalclientset/fake/clientset_generated.go
View file @
2734f8f8
...
...
@@ -19,6 +19,8 @@ package fake
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
fakediscovery
"k8s.io/client-go/discovery/fake"
"k8s.io/kubernetes/pkg/api"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
internalversionapps
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
...
...
@@ -44,8 +46,6 @@ import (
internalversionstorage
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion"
fakeinternalversionstorage
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/fake"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
fakediscovery
"k8s.io/kubernetes/pkg/client/typed/discovery/fake"
)
// NewSimpleClientset returns a clientset that will respond with the provided objects.
...
...
pkg/client/typed/OWNERS
deleted
100755 → 0
View file @
2a4fcdf8
reviewers:
- smarterclayton
- wojtek-t
- deads2k
- derekwaynecarr
- caesarxuchao
- nikhiljindal
- soltysh
- piosz
- hongchaodeng
- krousey
- jdef
- jessfraz
- pweil-
- goltermann
pkg/client/typed/discovery/BUILD
deleted
100644 → 0
View file @
2a4fcdf8
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = [
"discovery_client.go",
"helper.go",
"restmapper.go",
"unstructured.go",
],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/version:go_default_library",
"//vendor:github.com/emicklei/go-restful/swagger",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/api/meta",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/client-go/plugin/pkg/client/auth",
"//vendor:k8s.io/client-go/rest",
],
)
go_test(
name = "go_default_xtest",
srcs = [
"discovery_client_test.go",
"helper_blackbox_test.go",
"restmapper_test.go",
],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//vendor:github.com/emicklei/go-restful/swagger",
"//vendor:github.com/stretchr/testify/assert",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/rest/fake",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//pkg/client/typed/discovery/fake:all-srcs",
],
tags = ["automanaged"],
)
pkg/client/typed/discovery/discovery_client.go
deleted
100644 → 0
View file @
2a4fcdf8
This diff is collapsed.
Click to expand it.
pkg/client/typed/discovery/discovery_client_test.go
deleted
100644 → 0
View file @
2a4fcdf8
This diff is collapsed.
Click to expand it.
pkg/client/typed/discovery/fake/BUILD
deleted
100644 → 0
View file @
2a4fcdf8
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = ["discovery.go"],
tags = ["automanaged"],
deps = [
"//pkg/api/v1:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/version:go_default_library",
"//vendor:github.com/emicklei/go-restful/swagger",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/client-go/rest",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
pkg/client/typed/discovery/fake/discovery.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
fake
import
(
"fmt"
"github.com/emicklei/go-restful/swagger"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/version"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/testing/core"
kubeversion
"k8s.io/kubernetes/pkg/version"
)
type
FakeDiscovery
struct
{
*
core
.
Fake
}
func
(
c
*
FakeDiscovery
)
ServerResourcesForGroupVersion
(
groupVersion
string
)
(
*
metav1
.
APIResourceList
,
error
)
{
action
:=
core
.
ActionImpl
{
Verb
:
"get"
,
Resource
:
schema
.
GroupVersionResource
{
Resource
:
"resource"
},
}
c
.
Invokes
(
action
,
nil
)
for
_
,
resourceList
:=
range
c
.
Resources
{
if
resourceList
.
GroupVersion
==
groupVersion
{
return
resourceList
,
nil
}
}
return
nil
,
fmt
.
Errorf
(
"GroupVersion %q not found"
,
groupVersion
)
}
func
(
c
*
FakeDiscovery
)
ServerResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
action
:=
core
.
ActionImpl
{
Verb
:
"get"
,
Resource
:
schema
.
GroupVersionResource
{
Resource
:
"resource"
},
}
c
.
Invokes
(
action
,
nil
)
return
c
.
Resources
,
nil
}
func
(
c
*
FakeDiscovery
)
ServerPreferredResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
nil
,
nil
}
func
(
c
*
FakeDiscovery
)
ServerPreferredNamespacedResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
nil
,
nil
}
func
(
c
*
FakeDiscovery
)
ServerGroups
()
(
*
metav1
.
APIGroupList
,
error
)
{
return
nil
,
nil
}
func
(
c
*
FakeDiscovery
)
ServerVersion
()
(
*
version
.
Info
,
error
)
{
action
:=
core
.
ActionImpl
{}
action
.
Verb
=
"get"
action
.
Resource
=
schema
.
GroupVersionResource
{
Resource
:
"version"
}
c
.
Invokes
(
action
,
nil
)
versionInfo
:=
kubeversion
.
Get
()
return
&
versionInfo
,
nil
}
func
(
c
*
FakeDiscovery
)
SwaggerSchema
(
version
schema
.
GroupVersion
)
(
*
swagger
.
ApiDeclaration
,
error
)
{
action
:=
core
.
ActionImpl
{}
action
.
Verb
=
"get"
if
version
==
v1
.
SchemeGroupVersion
{
action
.
Resource
=
schema
.
GroupVersionResource
{
Resource
:
"/swaggerapi/api/"
+
version
.
Version
}
}
else
{
action
.
Resource
=
schema
.
GroupVersionResource
{
Resource
:
"/swaggerapi/apis/"
+
version
.
Group
+
"/"
+
version
.
Version
}
}
c
.
Invokes
(
action
,
nil
)
return
&
swagger
.
ApiDeclaration
{},
nil
}
func
(
c
*
FakeDiscovery
)
RESTClient
()
restclient
.
Interface
{
return
nil
}
pkg/client/typed/discovery/helper.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
discovery
import
(
"fmt"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/version"
// Import solely to initialize client auth plugins.
_
"k8s.io/client-go/plugin/pkg/client/auth"
)
// MatchesServerVersion queries the server to compares the build version
// (git hash) of the client with the server's build version. It returns an error
// if it failed to contact the server or if the versions are not an exact match.
func
MatchesServerVersion
(
client
DiscoveryInterface
)
error
{
cVer
:=
version
.
Get
()
sVer
,
err
:=
client
.
ServerVersion
()
if
err
!=
nil
{
return
fmt
.
Errorf
(
"couldn't read version from server: %v
\n
"
,
err
)
}
// GitVersion includes GitCommit and GitTreeState, but best to be safe?
if
cVer
.
GitVersion
!=
sVer
.
GitVersion
||
cVer
.
GitCommit
!=
sVer
.
GitCommit
||
cVer
.
GitTreeState
!=
sVer
.
GitTreeState
{
return
fmt
.
Errorf
(
"server version (%#v) differs from client version (%#v)!
\n
"
,
sVer
,
cVer
)
}
return
nil
}
// NegotiateVersion queries the server's supported api versions to find
// a version that both client and server support.
// - If no version is provided, try registered client versions in order of
// preference.
// - If version is provided and the server does not support it,
// return an error.
func
NegotiateVersion
(
client
DiscoveryInterface
,
requiredGV
*
schema
.
GroupVersion
,
clientRegisteredGVs
[]
schema
.
GroupVersion
)
(
*
schema
.
GroupVersion
,
error
)
{
clientVersions
:=
sets
.
String
{}
for
_
,
gv
:=
range
clientRegisteredGVs
{
clientVersions
.
Insert
(
gv
.
String
())
}
groups
,
err
:=
client
.
ServerGroups
()
if
err
!=
nil
{
// This is almost always a connection error, and higher level code should treat this as a generic error,
// not a negotiation specific error.
return
nil
,
err
}
versions
:=
metav1
.
ExtractGroupVersions
(
groups
)
serverVersions
:=
sets
.
String
{}
for
_
,
v
:=
range
versions
{
serverVersions
.
Insert
(
v
)
}
// If version explicitly requested verify that both client and server support it.
// If server does not support warn, but try to negotiate a lower version.
if
requiredGV
!=
nil
{
if
!
clientVersions
.
Has
(
requiredGV
.
String
())
{
return
nil
,
fmt
.
Errorf
(
"client does not support API version %q; client supported API versions: %v"
,
requiredGV
,
clientVersions
)
}
// If the server supports no versions, then we should just use the preferredGV
// This can happen because discovery fails due to 403 Forbidden errors
if
len
(
serverVersions
)
==
0
{
return
requiredGV
,
nil
}
if
serverVersions
.
Has
(
requiredGV
.
String
())
{
return
requiredGV
,
nil
}
// If we are using an explicit config version the server does not support, fail.
return
nil
,
fmt
.
Errorf
(
"server does not support API version %q"
,
requiredGV
)
}
for
_
,
clientGV
:=
range
clientRegisteredGVs
{
if
serverVersions
.
Has
(
clientGV
.
String
())
{
// Version was not explicitly requested in command config (--api-version).
// Ok to fall back to a supported version with a warning.
// TODO: caesarxuchao: enable the warning message when we have
// proper fix. Please refer to issue #14895.
// if len(version) != 0 {
// glog.Warningf("Server does not support API version '%s'. Falling back to '%s'.", version, clientVersion)
// }
t
:=
clientGV
return
&
t
,
nil
}
}
// if we have no server versions and we have no required version, choose the first clientRegisteredVersion
if
len
(
serverVersions
)
==
0
&&
len
(
clientRegisteredGVs
)
>
0
{
return
&
clientRegisteredGVs
[
0
],
nil
}
return
nil
,
fmt
.
Errorf
(
"failed to negotiate an api version; server supports: %v, client supports: %v"
,
serverVersions
,
clientVersions
)
}
// GroupVersionResources converts APIResourceLists to the GroupVersionResources.
func
GroupVersionResources
(
rls
[]
*
metav1
.
APIResourceList
)
(
map
[
schema
.
GroupVersionResource
]
struct
{},
error
)
{
gvrs
:=
map
[
schema
.
GroupVersionResource
]
struct
{}{}
for
_
,
rl
:=
range
rls
{
gv
,
err
:=
schema
.
ParseGroupVersion
(
rl
.
GroupVersion
)
if
err
!=
nil
{
return
nil
,
err
}
for
i
:=
range
rl
.
APIResources
{
gvrs
[
schema
.
GroupVersionResource
{
Group
:
gv
.
Group
,
Version
:
gv
.
Version
,
Resource
:
rl
.
APIResources
[
i
]
.
Name
}]
=
struct
{}{}
}
}
return
gvrs
,
nil
}
// FilteredBy filters by the given predicate. Empty APIResourceLists are dropped.
func
FilteredBy
(
pred
ResourcePredicate
,
rls
[]
*
metav1
.
APIResourceList
)
[]
*
metav1
.
APIResourceList
{
result
:=
[]
*
metav1
.
APIResourceList
{}
for
_
,
rl
:=
range
rls
{
filtered
:=
*
rl
filtered
.
APIResources
=
nil
for
i
:=
range
rl
.
APIResources
{
if
pred
.
Match
(
rl
.
GroupVersion
,
&
rl
.
APIResources
[
i
])
{
filtered
.
APIResources
=
append
(
filtered
.
APIResources
,
rl
.
APIResources
[
i
])
}
}
if
filtered
.
APIResources
!=
nil
{
result
=
append
(
result
,
&
filtered
)
}
}
return
result
}
type
ResourcePredicate
interface
{
Match
(
groupVersion
string
,
r
*
metav1
.
APIResource
)
bool
}
type
ResourcePredicateFunc
func
(
groupVersion
string
,
r
*
metav1
.
APIResource
)
bool
func
(
fn
ResourcePredicateFunc
)
Match
(
groupVersion
string
,
r
*
metav1
.
APIResource
)
bool
{
return
fn
(
groupVersion
,
r
)
}
// SupportsAllVerbs is a predicate matching a resource iff all given verbs are supported.
type
SupportsAllVerbs
struct
{
Verbs
[]
string
}
func
(
p
SupportsAllVerbs
)
Match
(
groupVersion
string
,
r
*
metav1
.
APIResource
)
bool
{
return
sets
.
NewString
([]
string
(
r
.
Verbs
)
...
)
.
HasAll
(
p
.
Verbs
...
)
}
pkg/client/typed/discovery/helper_blackbox_test.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2015 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
discovery_test
import
(
"bytes"
"encoding/json"
"errors"
"io"
"io/ioutil"
"net/http"
"strings"
"testing"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
uapi
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
func
objBody
(
object
interface
{})
io
.
ReadCloser
{
output
,
err
:=
json
.
MarshalIndent
(
object
,
""
,
""
)
if
err
!=
nil
{
panic
(
err
)
}
return
ioutil
.
NopCloser
(
bytes
.
NewReader
([]
byte
(
output
)))
}
func
TestNegotiateVersion
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
requiredVersion
*
schema
.
GroupVersion
expectedVersion
*
schema
.
GroupVersion
serverVersions
[]
string
clientVersions
[]
schema
.
GroupVersion
expectErr
func
(
err
error
)
bool
sendErr
error
statusCode
int
}{
{
name
:
"server supports client default"
,
serverVersions
:
[]
string
{
"version1"
,
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
.
String
()},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectedVersion
:
&
schema
.
GroupVersion
{
Version
:
"version1"
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"server falls back to client supported"
,
serverVersions
:
[]
string
{
"version1"
},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectedVersion
:
&
schema
.
GroupVersion
{
Version
:
"version1"
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"explicit version supported"
,
requiredVersion
:
&
schema
.
GroupVersion
{
Version
:
"v1"
},
serverVersions
:
[]
string
{
"/version1"
,
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
.
String
()},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectedVersion
:
&
schema
.
GroupVersion
{
Version
:
"v1"
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"explicit version not supported on server"
,
requiredVersion
:
&
schema
.
GroupVersion
{
Version
:
"v1"
},
serverVersions
:
[]
string
{
"version1"
},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectErr
:
func
(
err
error
)
bool
{
return
strings
.
Contains
(
err
.
Error
(),
`server does not support API version "v1"`
)
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"explicit version not supported on client"
,
requiredVersion
:
&
schema
.
GroupVersion
{
Version
:
"v1"
},
serverVersions
:
[]
string
{
"v1"
},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
}},
expectErr
:
func
(
err
error
)
bool
{
return
strings
.
Contains
(
err
.
Error
(),
`client does not support API version "v1"`
)
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"connection refused error"
,
serverVersions
:
[]
string
{
"version1"
},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
sendErr
:
errors
.
New
(
"connection refused"
),
expectErr
:
func
(
err
error
)
bool
{
return
strings
.
Contains
(
err
.
Error
(),
"connection refused"
)
},
statusCode
:
http
.
StatusOK
,
},
{
name
:
"discovery fails due to 403 Forbidden errors and thus serverVersions is empty, use default GroupVersion"
,
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectedVersion
:
&
schema
.
GroupVersion
{
Version
:
"version1"
},
statusCode
:
http
.
StatusForbidden
,
},
{
name
:
"discovery fails due to 404 Not Found errors and thus serverVersions is empty, use requested GroupVersion"
,
requiredVersion
:
&
schema
.
GroupVersion
{
Version
:
"version1"
},
clientVersions
:
[]
schema
.
GroupVersion
{{
Version
:
"version1"
},
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
},
expectedVersion
:
&
schema
.
GroupVersion
{
Version
:
"version1"
},
statusCode
:
http
.
StatusNotFound
,
},
{
name
:
"discovery fails due to 403 Forbidden errors and thus serverVersions is empty, no fallback GroupVersion"
,
expectErr
:
func
(
err
error
)
bool
{
return
strings
.
Contains
(
err
.
Error
(),
"failed to negotiate an api version;"
)
},
statusCode
:
http
.
StatusForbidden
,
},
}
for
_
,
test
:=
range
tests
{
fakeClient
:=
&
fake
.
RESTClient
{
APIRegistry
:
api
.
Registry
,
NegotiatedSerializer
:
testapi
.
Default
.
NegotiatedSerializer
(),
Resp
:
&
http
.
Response
{
StatusCode
:
test
.
statusCode
,
Body
:
objBody
(
&
uapi
.
APIVersions
{
Versions
:
test
.
serverVersions
}),
},
Client
:
fake
.
CreateHTTPClient
(
func
(
req
*
http
.
Request
)
(
*
http
.
Response
,
error
)
{
if
test
.
sendErr
!=
nil
{
return
nil
,
test
.
sendErr
}
header
:=
http
.
Header
{}
header
.
Set
(
"Content-Type"
,
runtime
.
ContentTypeJSON
)
return
&
http
.
Response
{
StatusCode
:
test
.
statusCode
,
Header
:
header
,
Body
:
objBody
(
&
uapi
.
APIVersions
{
Versions
:
test
.
serverVersions
})},
nil
}),
}
c
:=
discovery
.
NewDiscoveryClientForConfigOrDie
(
&
restclient
.
Config
{})
c
.
RESTClient
()
.
(
*
restclient
.
RESTClient
)
.
Client
=
fakeClient
.
Client
response
,
err
:=
discovery
.
NegotiateVersion
(
c
,
test
.
requiredVersion
,
test
.
clientVersions
)
if
err
==
nil
&&
test
.
expectErr
!=
nil
{
t
.
Errorf
(
"expected error, got nil for [%s]."
,
test
.
name
)
}
if
err
!=
nil
{
if
test
.
expectErr
==
nil
||
!
test
.
expectErr
(
err
)
{
t
.
Errorf
(
"unexpected error for [%s]: %v."
,
test
.
name
,
err
)
}
continue
}
if
*
response
!=
*
test
.
expectedVersion
{
t
.
Errorf
(
"%s: expected version %s, got %s."
,
test
.
name
,
test
.
expectedVersion
,
response
)
}
}
}
func
TestFilteredBy
(
t
*
testing
.
T
)
{
all
:=
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
true
})
none
:=
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
false
})
onlyV2
:=
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
strings
.
HasSuffix
(
gv
,
"/v2"
)
||
gv
==
"v2"
})
onlyBar
:=
discovery
.
ResourcePredicateFunc
(
func
(
gv
string
,
r
*
metav1
.
APIResource
)
bool
{
return
r
.
Kind
==
"Bar"
})
foo
:=
[]
*
metav1
.
APIResourceList
{
{
GroupVersion
:
"foo/v1"
,
APIResources
:
[]
metav1
.
APIResource
{
{
Name
:
"bar"
,
Kind
:
"Bar"
},
{
Name
:
"test"
,
Kind
:
"Test"
},
},
},
{
GroupVersion
:
"foo/v2"
,
APIResources
:
[]
metav1
.
APIResource
{
{
Name
:
"bar"
,
Kind
:
"Bar"
},
{
Name
:
"test"
,
Kind
:
"Test"
},
},
},
{
GroupVersion
:
"foo/v3"
,
APIResources
:
[]
metav1
.
APIResource
{},
},
}
tests
:=
[]
struct
{
input
[]
*
metav1
.
APIResourceList
pred
discovery
.
ResourcePredicate
expectedResources
[]
string
}{
{
nil
,
all
,
[]
string
{}},
{[]
*
metav1
.
APIResourceList
{
{
GroupVersion
:
"foo/v1"
},
},
all
,
[]
string
{}},
{
foo
,
all
,
[]
string
{
"foo/v1.bar"
,
"foo/v1.test"
,
"foo/v2.bar"
,
"foo/v2.test"
}},
{
foo
,
onlyV2
,
[]
string
{
"foo/v2.bar"
,
"foo/v2.test"
}},
{
foo
,
onlyBar
,
[]
string
{
"foo/v1.bar"
,
"foo/v2.bar"
}},
{
foo
,
none
,
[]
string
{}},
}
for
i
,
test
:=
range
tests
{
filtered
:=
discovery
.
FilteredBy
(
test
.
pred
,
test
.
input
)
if
expected
,
got
:=
sets
.
NewString
(
test
.
expectedResources
...
),
sets
.
NewString
(
stringify
(
filtered
)
...
);
!
expected
.
Equal
(
got
)
{
t
.
Errorf
(
"[%d] unexpected group versions: expected=%v, got=%v"
,
i
,
test
.
expectedResources
,
stringify
(
filtered
))
}
}
}
func
stringify
(
rls
[]
*
metav1
.
APIResourceList
)
[]
string
{
result
:=
[]
string
{}
for
_
,
rl
:=
range
rls
{
for
_
,
r
:=
range
rl
.
APIResources
{
result
=
append
(
result
,
rl
.
GroupVersion
+
"."
+
r
.
Name
)
}
if
len
(
rl
.
APIResources
)
==
0
{
result
=
append
(
result
,
rl
.
GroupVersion
)
}
}
return
result
}
pkg/client/typed/discovery/restmapper.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
discovery
import
(
"fmt"
"sync"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"github.com/golang/glog"
)
// APIGroupResources is an API group with a mapping of versions to
// resources.
type
APIGroupResources
struct
{
Group
metav1
.
APIGroup
// A mapping of version string to a slice of APIResources for
// that version.
VersionedResources
map
[
string
][]
metav1
.
APIResource
}
// NewRESTMapper returns a PriorityRESTMapper based on the discovered
// groups and resources passed in.
func
NewRESTMapper
(
groupResources
[]
*
APIGroupResources
,
versionInterfaces
meta
.
VersionInterfacesFunc
)
meta
.
RESTMapper
{
unionMapper
:=
meta
.
MultiRESTMapper
{}
var
groupPriority
[]
string
var
resourcePriority
[]
schema
.
GroupVersionResource
var
kindPriority
[]
schema
.
GroupVersionKind
for
_
,
group
:=
range
groupResources
{
groupPriority
=
append
(
groupPriority
,
group
.
Group
.
Name
)
if
len
(
group
.
Group
.
PreferredVersion
.
Version
)
!=
0
{
preferred
:=
group
.
Group
.
PreferredVersion
.
Version
if
_
,
ok
:=
group
.
VersionedResources
[
preferred
];
ok
{
resourcePriority
=
append
(
resourcePriority
,
schema
.
GroupVersionResource
{
Group
:
group
.
Group
.
Name
,
Version
:
group
.
Group
.
PreferredVersion
.
Version
,
Resource
:
meta
.
AnyResource
,
})
kindPriority
=
append
(
kindPriority
,
schema
.
GroupVersionKind
{
Group
:
group
.
Group
.
Name
,
Version
:
group
.
Group
.
PreferredVersion
.
Version
,
Kind
:
meta
.
AnyKind
,
})
}
}
for
_
,
discoveryVersion
:=
range
group
.
Group
.
Versions
{
resources
,
ok
:=
group
.
VersionedResources
[
discoveryVersion
.
Version
]
if
!
ok
{
continue
}
gv
:=
schema
.
GroupVersion
{
Group
:
group
.
Group
.
Name
,
Version
:
discoveryVersion
.
Version
}
versionMapper
:=
meta
.
NewDefaultRESTMapper
([]
schema
.
GroupVersion
{
gv
},
versionInterfaces
)
for
_
,
resource
:=
range
resources
{
scope
:=
meta
.
RESTScopeNamespace
if
!
resource
.
Namespaced
{
scope
=
meta
.
RESTScopeRoot
}
versionMapper
.
Add
(
gv
.
WithKind
(
resource
.
Kind
),
scope
)
// TODO only do this if it supports listing
versionMapper
.
Add
(
gv
.
WithKind
(
resource
.
Kind
+
"List"
),
scope
)
}
// TODO why is this type not in discovery (at least for "v1")
versionMapper
.
Add
(
gv
.
WithKind
(
"List"
),
meta
.
RESTScopeRoot
)
unionMapper
=
append
(
unionMapper
,
versionMapper
)
}
}
for
_
,
group
:=
range
groupPriority
{
resourcePriority
=
append
(
resourcePriority
,
schema
.
GroupVersionResource
{
Group
:
group
,
Version
:
meta
.
AnyVersion
,
Resource
:
meta
.
AnyResource
,
})
kindPriority
=
append
(
kindPriority
,
schema
.
GroupVersionKind
{
Group
:
group
,
Version
:
meta
.
AnyVersion
,
Kind
:
meta
.
AnyKind
,
})
}
return
meta
.
PriorityRESTMapper
{
Delegate
:
unionMapper
,
ResourcePriority
:
resourcePriority
,
KindPriority
:
kindPriority
,
}
}
// GetAPIGroupResources uses the provided discovery client to gather
// discovery information and populate a slice of APIGroupResources.
func
GetAPIGroupResources
(
cl
DiscoveryInterface
)
([]
*
APIGroupResources
,
error
)
{
apiGroups
,
err
:=
cl
.
ServerGroups
()
if
err
!=
nil
{
return
nil
,
err
}
var
result
[]
*
APIGroupResources
for
_
,
group
:=
range
apiGroups
.
Groups
{
groupResources
:=
&
APIGroupResources
{
Group
:
group
,
VersionedResources
:
make
(
map
[
string
][]
metav1
.
APIResource
),
}
for
_
,
version
:=
range
group
.
Versions
{
resources
,
err
:=
cl
.
ServerResourcesForGroupVersion
(
version
.
GroupVersion
)
if
err
!=
nil
{
if
errors
.
IsNotFound
(
err
)
{
continue
// ignore as this can race with deletion of 3rd party APIs
}
return
nil
,
err
}
groupResources
.
VersionedResources
[
version
.
Version
]
=
resources
.
APIResources
}
result
=
append
(
result
,
groupResources
)
}
return
result
,
nil
}
// DeferredDiscoveryRESTMapper is a RESTMapper that will defer
// initialization of the RESTMapper until the first mapping is
// requested.
type
DeferredDiscoveryRESTMapper
struct
{
initMu
sync
.
Mutex
delegate
meta
.
RESTMapper
cl
CachedDiscoveryInterface
versionInterface
meta
.
VersionInterfacesFunc
}
// NewDeferredDiscoveryRESTMapper returns a
// DeferredDiscoveryRESTMapper that will lazily query the provided
// client for discovery information to do REST mappings.
func
NewDeferredDiscoveryRESTMapper
(
cl
CachedDiscoveryInterface
,
versionInterface
meta
.
VersionInterfacesFunc
)
*
DeferredDiscoveryRESTMapper
{
return
&
DeferredDiscoveryRESTMapper
{
cl
:
cl
,
versionInterface
:
versionInterface
,
}
}
func
(
d
*
DeferredDiscoveryRESTMapper
)
getDelegate
()
(
meta
.
RESTMapper
,
error
)
{
d
.
initMu
.
Lock
()
defer
d
.
initMu
.
Unlock
()
if
d
.
delegate
!=
nil
{
return
d
.
delegate
,
nil
}
groupResources
,
err
:=
GetAPIGroupResources
(
d
.
cl
)
if
err
!=
nil
{
return
nil
,
err
}
d
.
delegate
=
NewRESTMapper
(
groupResources
,
d
.
versionInterface
)
return
d
.
delegate
,
err
}
// Reset resets the internally cached Discovery information and will
// cause the next mapping request to re-discover.
func
(
d
*
DeferredDiscoveryRESTMapper
)
Reset
()
{
glog
.
V
(
5
)
.
Info
(
"Invalidating discovery information"
)
d
.
initMu
.
Lock
()
defer
d
.
initMu
.
Unlock
()
d
.
cl
.
Invalidate
()
d
.
delegate
=
nil
}
// KindFor takes a partial resource and returns back the single match.
// It returns an error if there are multiple matches.
func
(
d
*
DeferredDiscoveryRESTMapper
)
KindFor
(
resource
schema
.
GroupVersionResource
)
(
gvk
schema
.
GroupVersionKind
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
schema
.
GroupVersionKind
{},
err
}
gvk
,
err
=
del
.
KindFor
(
resource
)
if
err
!=
nil
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
gvk
,
err
=
d
.
KindFor
(
resource
)
}
return
}
// KindsFor takes a partial resource and returns back the list of
// potential kinds in priority order.
func
(
d
*
DeferredDiscoveryRESTMapper
)
KindsFor
(
resource
schema
.
GroupVersionResource
)
(
gvks
[]
schema
.
GroupVersionKind
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
nil
,
err
}
gvks
,
err
=
del
.
KindsFor
(
resource
)
if
len
(
gvks
)
==
0
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
gvks
,
err
=
d
.
KindsFor
(
resource
)
}
return
}
// ResourceFor takes a partial resource and returns back the single
// match. It returns an error if there are multiple matches.
func
(
d
*
DeferredDiscoveryRESTMapper
)
ResourceFor
(
input
schema
.
GroupVersionResource
)
(
gvr
schema
.
GroupVersionResource
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
schema
.
GroupVersionResource
{},
err
}
gvr
,
err
=
del
.
ResourceFor
(
input
)
if
err
!=
nil
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
gvr
,
err
=
d
.
ResourceFor
(
input
)
}
return
}
// ResourcesFor takes a partial resource and returns back the list of
// potential resource in priority order.
func
(
d
*
DeferredDiscoveryRESTMapper
)
ResourcesFor
(
input
schema
.
GroupVersionResource
)
(
gvrs
[]
schema
.
GroupVersionResource
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
nil
,
err
}
gvrs
,
err
=
del
.
ResourcesFor
(
input
)
if
len
(
gvrs
)
==
0
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
gvrs
,
err
=
d
.
ResourcesFor
(
input
)
}
return
}
// RESTMapping identifies a preferred resource mapping for the
// provided group kind.
func
(
d
*
DeferredDiscoveryRESTMapper
)
RESTMapping
(
gk
schema
.
GroupKind
,
versions
...
string
)
(
m
*
meta
.
RESTMapping
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
nil
,
err
}
m
,
err
=
del
.
RESTMapping
(
gk
,
versions
...
)
if
err
!=
nil
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
m
,
err
=
d
.
RESTMapping
(
gk
,
versions
...
)
}
return
}
// RESTMappings returns the RESTMappings for the provided group kind
// in a rough internal preferred order. If no kind is found, it will
// return a NoResourceMatchError.
func
(
d
*
DeferredDiscoveryRESTMapper
)
RESTMappings
(
gk
schema
.
GroupKind
,
versions
...
string
)
(
ms
[]
*
meta
.
RESTMapping
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
nil
,
err
}
ms
,
err
=
del
.
RESTMappings
(
gk
,
versions
...
)
if
len
(
ms
)
==
0
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
ms
,
err
=
d
.
RESTMappings
(
gk
,
versions
...
)
}
return
}
// AliasesForResource returns whether a resource has an alias or not.
func
(
d
*
DeferredDiscoveryRESTMapper
)
AliasesForResource
(
resource
string
)
(
as
[]
string
,
ok
bool
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
nil
,
false
}
as
,
ok
=
del
.
AliasesForResource
(
resource
)
if
len
(
as
)
==
0
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
as
,
ok
=
d
.
AliasesForResource
(
resource
)
}
return
}
// ResourceSingularizer converts a resource name from plural to
// singular (e.g., from pods to pod).
func
(
d
*
DeferredDiscoveryRESTMapper
)
ResourceSingularizer
(
resource
string
)
(
singular
string
,
err
error
)
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
resource
,
err
}
singular
,
err
=
del
.
ResourceSingularizer
(
resource
)
if
err
!=
nil
&&
!
d
.
cl
.
Fresh
()
{
d
.
Reset
()
singular
,
err
=
d
.
ResourceSingularizer
(
resource
)
}
return
}
func
(
d
*
DeferredDiscoveryRESTMapper
)
String
()
string
{
del
,
err
:=
d
.
getDelegate
()
if
err
!=
nil
{
return
fmt
.
Sprintf
(
"DeferredDiscoveryRESTMapper{%v}"
,
err
)
}
return
fmt
.
Sprintf
(
"DeferredDiscoveryRESTMapper{
\n\t
%v
\n
}"
,
del
)
}
// Make sure it satisfies the interface
var
_
meta
.
RESTMapper
=
&
DeferredDiscoveryRESTMapper
{}
pkg/client/typed/discovery/restmapper_test.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
discovery_test
import
(
"reflect"
"testing"
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/version"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
.
"k8s.io/kubernetes/pkg/client/typed/discovery"
"github.com/emicklei/go-restful/swagger"
"github.com/stretchr/testify/assert"
)
func
TestRESTMapper
(
t
*
testing
.
T
)
{
resources
:=
[]
*
APIGroupResources
{
{
Group
:
metav1
.
APIGroup
{
Versions
:
[]
metav1
.
GroupVersionForDiscovery
{
{
Version
:
"v1"
},
{
Version
:
"v2"
},
},
PreferredVersion
:
metav1
.
GroupVersionForDiscovery
{
Version
:
"v1"
},
},
VersionedResources
:
map
[
string
][]
metav1
.
APIResource
{
"v1"
:
{
{
Name
:
"pods"
,
Namespaced
:
true
,
Kind
:
"Pod"
},
},
"v2"
:
{
{
Name
:
"pods"
,
Namespaced
:
true
,
Kind
:
"Pod"
},
},
},
},
{
Group
:
metav1
.
APIGroup
{
Name
:
"extensions"
,
Versions
:
[]
metav1
.
GroupVersionForDiscovery
{
{
Version
:
"v1beta"
},
},
PreferredVersion
:
metav1
.
GroupVersionForDiscovery
{
Version
:
"v1beta"
},
},
VersionedResources
:
map
[
string
][]
metav1
.
APIResource
{
"v1beta"
:
{
{
Name
:
"jobs"
,
Namespaced
:
true
,
Kind
:
"Job"
},
},
},
},
}
restMapper
:=
NewRESTMapper
(
resources
,
nil
)
kindTCs
:=
[]
struct
{
input
schema
.
GroupVersionResource
want
schema
.
GroupVersionKind
}{
{
input
:
schema
.
GroupVersionResource
{
Version
:
"v1"
,
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionKind
{
Version
:
"v1"
,
Kind
:
"Pod"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Version
:
"v2"
,
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionKind
{
Version
:
"v2"
,
Kind
:
"Pod"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionKind
{
Version
:
"v1"
,
Kind
:
"Pod"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Resource
:
"jobs"
,
},
want
:
schema
.
GroupVersionKind
{
Group
:
"extensions"
,
Version
:
"v1beta"
,
Kind
:
"Job"
,
},
},
}
for
_
,
tc
:=
range
kindTCs
{
got
,
err
:=
restMapper
.
KindFor
(
tc
.
input
)
if
err
!=
nil
{
t
.
Errorf
(
"KindFor(%#v) unexpected error: %v"
,
tc
.
input
,
err
)
continue
}
if
!
reflect
.
DeepEqual
(
got
,
tc
.
want
)
{
t
.
Errorf
(
"KindFor(%#v) = %#v, want %#v"
,
tc
.
input
,
got
,
tc
.
want
)
}
}
resourceTCs
:=
[]
struct
{
input
schema
.
GroupVersionResource
want
schema
.
GroupVersionResource
}{
{
input
:
schema
.
GroupVersionResource
{
Version
:
"v1"
,
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionResource
{
Version
:
"v1"
,
Resource
:
"pods"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Version
:
"v2"
,
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionResource
{
Version
:
"v2"
,
Resource
:
"pods"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Resource
:
"pods"
,
},
want
:
schema
.
GroupVersionResource
{
Version
:
"v1"
,
Resource
:
"pods"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Resource
:
"jobs"
,
},
want
:
schema
.
GroupVersionResource
{
Group
:
"extensions"
,
Version
:
"v1beta"
,
Resource
:
"jobs"
,
},
},
}
for
_
,
tc
:=
range
resourceTCs
{
got
,
err
:=
restMapper
.
ResourceFor
(
tc
.
input
)
if
err
!=
nil
{
t
.
Errorf
(
"ResourceFor(%#v) unexpected error: %v"
,
tc
.
input
,
err
)
continue
}
if
!
reflect
.
DeepEqual
(
got
,
tc
.
want
)
{
t
.
Errorf
(
"ResourceFor(%#v) = %#v, want %#v"
,
tc
.
input
,
got
,
tc
.
want
)
}
}
}
func
TestDeferredDiscoveryRESTMapper_CacheMiss
(
t
*
testing
.
T
)
{
assert
:=
assert
.
New
(
t
)
cdc
:=
fakeCachedDiscoveryInterface
{
fresh
:
false
}
m
:=
NewDeferredDiscoveryRESTMapper
(
&
cdc
,
api
.
Registry
.
InterfacesFor
)
assert
.
False
(
cdc
.
fresh
,
"should NOT be fresh after instantiation"
)
assert
.
Zero
(
cdc
.
invalidateCalls
,
"should not have called Invalidate()"
)
gvk
,
err
:=
m
.
KindFor
(
schema
.
GroupVersionResource
{
Group
:
"a"
,
Version
:
"v1"
,
Resource
:
"foo"
,
})
assert
.
NoError
(
err
)
assert
.
True
(
cdc
.
fresh
,
"should be fresh after a cache-miss"
)
assert
.
Equal
(
cdc
.
invalidateCalls
,
1
,
"should have called Invalidate() once"
)
assert
.
Equal
(
gvk
.
Kind
,
"Foo"
)
gvk
,
err
=
m
.
KindFor
(
schema
.
GroupVersionResource
{
Group
:
"a"
,
Version
:
"v1"
,
Resource
:
"foo"
,
})
assert
.
NoError
(
err
)
assert
.
Equal
(
cdc
.
invalidateCalls
,
1
,
"should NOT have called Invalidate() again"
)
gvk
,
err
=
m
.
KindFor
(
schema
.
GroupVersionResource
{
Group
:
"a"
,
Version
:
"v1"
,
Resource
:
"bar"
,
})
assert
.
Error
(
err
)
assert
.
Equal
(
cdc
.
invalidateCalls
,
1
,
"should NOT have called Invalidate() again after another cache-miss, but with fresh==true"
)
cdc
.
fresh
=
false
gvk
,
err
=
m
.
KindFor
(
schema
.
GroupVersionResource
{
Group
:
"a"
,
Version
:
"v1"
,
Resource
:
"bar"
,
})
assert
.
Error
(
err
)
assert
.
Equal
(
cdc
.
invalidateCalls
,
2
,
"should HAVE called Invalidate() again after another cache-miss, but with fresh==false"
)
}
type
fakeCachedDiscoveryInterface
struct
{
invalidateCalls
int
fresh
bool
enabledA
bool
}
var
_
CachedDiscoveryInterface
=
&
fakeCachedDiscoveryInterface
{}
func
(
c
*
fakeCachedDiscoveryInterface
)
Fresh
()
bool
{
return
c
.
fresh
}
func
(
c
*
fakeCachedDiscoveryInterface
)
Invalidate
()
{
c
.
invalidateCalls
=
c
.
invalidateCalls
+
1
c
.
fresh
=
true
c
.
enabledA
=
true
}
func
(
c
*
fakeCachedDiscoveryInterface
)
RESTClient
()
restclient
.
Interface
{
return
&
fake
.
RESTClient
{}
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerGroups
()
(
*
metav1
.
APIGroupList
,
error
)
{
if
c
.
enabledA
{
return
&
metav1
.
APIGroupList
{
Groups
:
[]
metav1
.
APIGroup
{
{
Name
:
"a"
,
Versions
:
[]
metav1
.
GroupVersionForDiscovery
{
{
GroupVersion
:
"a/v1"
,
Version
:
"v1"
,
},
},
PreferredVersion
:
metav1
.
GroupVersionForDiscovery
{
GroupVersion
:
"a/v1"
,
Version
:
"v1"
,
},
},
},
},
nil
}
return
&
metav1
.
APIGroupList
{},
nil
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerResourcesForGroupVersion
(
groupVersion
string
)
(
*
metav1
.
APIResourceList
,
error
)
{
if
c
.
enabledA
&&
groupVersion
==
"a/v1"
{
return
&
metav1
.
APIResourceList
{
GroupVersion
:
"a/v1"
,
APIResources
:
[]
metav1
.
APIResource
{
{
Name
:
"foo"
,
Kind
:
"Foo"
,
Namespaced
:
false
,
},
},
},
nil
}
return
nil
,
errors
.
NewNotFound
(
schema
.
GroupResource
{},
""
)
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
if
c
.
enabledA
{
av1
,
_
:=
c
.
ServerResourcesForGroupVersion
(
"a/v1"
)
return
[]
*
metav1
.
APIResourceList
{
av1
},
nil
}
return
[]
*
metav1
.
APIResourceList
{},
nil
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerPreferredResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
if
c
.
enabledA
{
return
[]
*
metav1
.
APIResourceList
{
{
GroupVersion
:
"a/v1"
,
APIResources
:
[]
metav1
.
APIResource
{
{
Name
:
"foo"
,
Kind
:
"Foo"
,
Verbs
:
[]
string
{},
},
},
},
},
nil
}
return
nil
,
nil
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerPreferredNamespacedResources
()
([]
*
metav1
.
APIResourceList
,
error
)
{
return
nil
,
nil
}
func
(
c
*
fakeCachedDiscoveryInterface
)
ServerVersion
()
(
*
version
.
Info
,
error
)
{
return
&
version
.
Info
{},
nil
}
func
(
c
*
fakeCachedDiscoveryInterface
)
SwaggerSchema
(
version
schema
.
GroupVersion
)
(
*
swagger
.
ApiDeclaration
,
error
)
{
return
&
swagger
.
ApiDeclaration
{},
nil
}
pkg/client/typed/discovery/unstructured.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
discovery
import
(
"fmt"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// UnstructuredObjectTyper provides a runtime.ObjectTyper implmentation for
// runtime.Unstructured object based on discovery information.
type
UnstructuredObjectTyper
struct
{
registered
map
[
schema
.
GroupVersionKind
]
bool
}
// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for
// unstructred objects based on discovery information.
func
NewUnstructuredObjectTyper
(
groupResources
[]
*
APIGroupResources
)
*
UnstructuredObjectTyper
{
dot
:=
&
UnstructuredObjectTyper
{
registered
:
make
(
map
[
schema
.
GroupVersionKind
]
bool
)}
for
_
,
group
:=
range
groupResources
{
for
_
,
discoveryVersion
:=
range
group
.
Group
.
Versions
{
resources
,
ok
:=
group
.
VersionedResources
[
discoveryVersion
.
Version
]
if
!
ok
{
continue
}
gv
:=
schema
.
GroupVersion
{
Group
:
group
.
Group
.
Name
,
Version
:
discoveryVersion
.
Version
}
for
_
,
resource
:=
range
resources
{
dot
.
registered
[
gv
.
WithKind
(
resource
.
Kind
)]
=
true
}
}
}
return
dot
}
// ObjectKind returns the group,version,kind of the provided object, or an error
// if the object in not runtime.Unstructured or has no group,version,kind
// information.
func
(
d
*
UnstructuredObjectTyper
)
ObjectKind
(
obj
runtime
.
Object
)
(
schema
.
GroupVersionKind
,
error
)
{
if
_
,
ok
:=
obj
.
(
runtime
.
Unstructured
);
!
ok
{
return
schema
.
GroupVersionKind
{},
fmt
.
Errorf
(
"type %T is invalid for dynamic object typer"
,
obj
)
}
return
obj
.
GetObjectKind
()
.
GroupVersionKind
(),
nil
}
// ObjectKinds returns a slice of one element with the group,version,kind of the
// provided object, or an error if the object is not runtime.Unstructured or
// has no group,version,kind information. unversionedType will always be false
// because runtime.Unstructured object should always have group,version,kind
// information set.
func
(
d
*
UnstructuredObjectTyper
)
ObjectKinds
(
obj
runtime
.
Object
)
(
gvks
[]
schema
.
GroupVersionKind
,
unversionedType
bool
,
err
error
)
{
gvk
,
err
:=
d
.
ObjectKind
(
obj
)
if
err
!=
nil
{
return
nil
,
false
,
err
}
return
[]
schema
.
GroupVersionKind
{
gvk
},
false
,
nil
}
// Recognizes returns true if the provided group,version,kind was in the
// discovery information.
func
(
d
*
UnstructuredObjectTyper
)
Recognizes
(
gvk
schema
.
GroupVersionKind
)
bool
{
return
d
.
registered
[
gvk
]
}
// IsUnversioned returns false always because runtime.Unstructured objects
// should always have group,version,kind information set. ok will be true if the
// object's group,version,kind is api.Registry.
func
(
d
*
UnstructuredObjectTyper
)
IsUnversioned
(
obj
runtime
.
Object
)
(
unversioned
bool
,
ok
bool
)
{
gvk
,
err
:=
d
.
ObjectKind
(
obj
)
if
err
!=
nil
{
return
false
,
false
}
return
false
,
d
.
registered
[
gvk
]
}
var
_
runtime
.
ObjectTyper
=
&
UnstructuredObjectTyper
{}
pkg/client/typed/dynamic/BUILD
deleted
100644 → 0
View file @
2a4fcdf8
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = [
"client.go",
"client_pool.go",
"dynamic_util.go",
],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/v1:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/meta",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"//vendor:k8s.io/apimachinery/pkg/conversion/queryparams",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
"//vendor:k8s.io/apimachinery/pkg/types",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/flowcontrol",
],
)
go_test(
name = "go_default_test",
srcs = [
"client_test.go",
"dynamic_util_test.go",
],
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"//vendor:k8s.io/apimachinery/pkg/types",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/rest/watch",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
pkg/client/typed/dynamic/client.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Package dynamic provides a client interface to arbitrary Kubernetes
// APIs that exposes common high level operations and exposes common
// metadata.
package
dynamic
import
(
"encoding/json"
"errors"
"io"
"net/url"
"strings"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/conversion/queryparams"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
)
// Client is a Kubernetes client that allows you to access metadata
// and manipulate metadata of a Kubernetes API group.
type
Client
struct
{
cl
*
restclient
.
RESTClient
parameterCodec
runtime
.
ParameterCodec
}
// NewClient returns a new client based on the passed in config. The
// codec is ignored, as the dynamic client uses it's own codec.
func
NewClient
(
conf
*
restclient
.
Config
)
(
*
Client
,
error
)
{
// avoid changing the original config
confCopy
:=
*
conf
conf
=
&
confCopy
contentConfig
:=
ContentConfig
()
contentConfig
.
GroupVersion
=
conf
.
GroupVersion
if
conf
.
NegotiatedSerializer
!=
nil
{
contentConfig
.
NegotiatedSerializer
=
conf
.
NegotiatedSerializer
}
conf
.
ContentConfig
=
contentConfig
if
conf
.
APIPath
==
""
{
conf
.
APIPath
=
"/api"
}
if
len
(
conf
.
UserAgent
)
==
0
{
conf
.
UserAgent
=
restclient
.
DefaultKubernetesUserAgent
()
}
cl
,
err
:=
restclient
.
RESTClientFor
(
conf
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
Client
{
cl
:
cl
},
nil
}
// GetRateLimiter returns rate limier.
func
(
c
*
Client
)
GetRateLimiter
()
flowcontrol
.
RateLimiter
{
return
c
.
cl
.
GetRateLimiter
()
}
// Resource returns an API interface to the specified resource for this client's
// group and version. If resource is not a namespaced resource, then namespace
// is ignored. The ResourceClient inherits the parameter codec of c.
func
(
c
*
Client
)
Resource
(
resource
*
metav1
.
APIResource
,
namespace
string
)
*
ResourceClient
{
return
&
ResourceClient
{
cl
:
c
.
cl
,
resource
:
resource
,
ns
:
namespace
,
parameterCodec
:
c
.
parameterCodec
,
}
}
// ParameterCodec returns a client with the provided parameter codec.
func
(
c
*
Client
)
ParameterCodec
(
parameterCodec
runtime
.
ParameterCodec
)
*
Client
{
return
&
Client
{
cl
:
c
.
cl
,
parameterCodec
:
parameterCodec
,
}
}
// ResourceClient is an API interface to a specific resource under a
// dynamic client.
type
ResourceClient
struct
{
cl
*
restclient
.
RESTClient
resource
*
metav1
.
APIResource
ns
string
parameterCodec
runtime
.
ParameterCodec
}
// List returns a list of objects for this resource.
func
(
rc
*
ResourceClient
)
List
(
opts
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
parameterEncoder
:=
rc
.
parameterCodec
if
parameterEncoder
==
nil
{
parameterEncoder
=
defaultParameterEncoder
}
return
rc
.
cl
.
Get
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
VersionedParams
(
opts
,
parameterEncoder
)
.
Do
()
.
Get
()
}
// Get gets the resource with the specified name.
func
(
rc
*
ResourceClient
)
Get
(
name
string
)
(
*
unstructured
.
Unstructured
,
error
)
{
result
:=
new
(
unstructured
.
Unstructured
)
err
:=
rc
.
cl
.
Get
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
Name
(
name
)
.
Do
()
.
Into
(
result
)
return
result
,
err
}
// Delete deletes the resource with the specified name.
func
(
rc
*
ResourceClient
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
return
rc
.
cl
.
Delete
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
Name
(
name
)
.
Body
(
opts
)
.
Do
()
.
Error
()
}
// DeleteCollection deletes a collection of objects.
func
(
rc
*
ResourceClient
)
DeleteCollection
(
deleteOptions
*
metav1
.
DeleteOptions
,
listOptions
runtime
.
Object
)
error
{
parameterEncoder
:=
rc
.
parameterCodec
if
parameterEncoder
==
nil
{
parameterEncoder
=
defaultParameterEncoder
}
return
rc
.
cl
.
Delete
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
VersionedParams
(
listOptions
,
parameterEncoder
)
.
Body
(
deleteOptions
)
.
Do
()
.
Error
()
}
// Create creates the provided resource.
func
(
rc
*
ResourceClient
)
Create
(
obj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
result
:=
new
(
unstructured
.
Unstructured
)
err
:=
rc
.
cl
.
Post
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
Body
(
obj
)
.
Do
()
.
Into
(
result
)
return
result
,
err
}
// Update updates the provided resource.
func
(
rc
*
ResourceClient
)
Update
(
obj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
result
:=
new
(
unstructured
.
Unstructured
)
if
len
(
obj
.
GetName
())
==
0
{
return
result
,
errors
.
New
(
"object missing name"
)
}
err
:=
rc
.
cl
.
Put
()
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
Name
(
obj
.
GetName
())
.
Body
(
obj
)
.
Do
()
.
Into
(
result
)
return
result
,
err
}
// Watch returns a watch.Interface that watches the resource.
func
(
rc
*
ResourceClient
)
Watch
(
opts
runtime
.
Object
)
(
watch
.
Interface
,
error
)
{
parameterEncoder
:=
rc
.
parameterCodec
if
parameterEncoder
==
nil
{
parameterEncoder
=
defaultParameterEncoder
}
return
rc
.
cl
.
Get
()
.
Prefix
(
"watch"
)
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
VersionedParams
(
opts
,
parameterEncoder
)
.
Watch
()
}
func
(
rc
*
ResourceClient
)
Patch
(
name
string
,
pt
types
.
PatchType
,
data
[]
byte
)
(
*
unstructured
.
Unstructured
,
error
)
{
result
:=
new
(
unstructured
.
Unstructured
)
err
:=
rc
.
cl
.
Patch
(
pt
)
.
NamespaceIfScoped
(
rc
.
ns
,
rc
.
resource
.
Namespaced
)
.
Resource
(
rc
.
resource
.
Name
)
.
Name
(
name
)
.
Body
(
data
)
.
Do
()
.
Into
(
result
)
return
result
,
err
}
// dynamicCodec is a codec that wraps the standard unstructured codec
// with special handling for Status objects.
type
dynamicCodec
struct
{}
func
(
dynamicCodec
)
Decode
(
data
[]
byte
,
gvk
*
schema
.
GroupVersionKind
,
obj
runtime
.
Object
)
(
runtime
.
Object
,
*
schema
.
GroupVersionKind
,
error
)
{
obj
,
gvk
,
err
:=
unstructured
.
UnstructuredJSONScheme
.
Decode
(
data
,
gvk
,
obj
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
if
_
,
ok
:=
obj
.
(
*
metav1
.
Status
);
!
ok
&&
strings
.
ToLower
(
gvk
.
Kind
)
==
"status"
{
obj
=
&
metav1
.
Status
{}
err
:=
json
.
Unmarshal
(
data
,
obj
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
}
return
obj
,
gvk
,
nil
}
func
(
dynamicCodec
)
Encode
(
obj
runtime
.
Object
,
w
io
.
Writer
)
error
{
return
unstructured
.
UnstructuredJSONScheme
.
Encode
(
obj
,
w
)
}
// ContentConfig returns a restclient.ContentConfig for dynamic types.
func
ContentConfig
()
restclient
.
ContentConfig
{
var
jsonInfo
runtime
.
SerializerInfo
// TODO: api.Codecs here should become "pkg/apis/server/scheme" which is the minimal core you need
// to talk to a kubernetes server
for
_
,
info
:=
range
api
.
Codecs
.
SupportedMediaTypes
()
{
if
info
.
MediaType
==
runtime
.
ContentTypeJSON
{
jsonInfo
=
info
break
}
}
jsonInfo
.
Serializer
=
dynamicCodec
{}
jsonInfo
.
PrettySerializer
=
nil
return
restclient
.
ContentConfig
{
AcceptContentTypes
:
runtime
.
ContentTypeJSON
,
ContentType
:
runtime
.
ContentTypeJSON
,
NegotiatedSerializer
:
serializer
.
NegotiatedSerializerWrapper
(
jsonInfo
),
}
}
// paramaterCodec is a codec converts an API object to query
// parameters without trying to convert to the target version.
type
parameterCodec
struct
{}
func
(
parameterCodec
)
EncodeParameters
(
obj
runtime
.
Object
,
to
schema
.
GroupVersion
)
(
url
.
Values
,
error
)
{
return
queryparams
.
Convert
(
obj
)
}
func
(
parameterCodec
)
DecodeParameters
(
parameters
url
.
Values
,
from
schema
.
GroupVersion
,
into
runtime
.
Object
)
error
{
return
errors
.
New
(
"DecodeParameters not implemented on dynamic parameterCodec"
)
}
var
defaultParameterEncoder
runtime
.
ParameterCodec
=
parameterCodec
{}
type
versionedParameterEncoderWithV1Fallback
struct
{}
func
(
versionedParameterEncoderWithV1Fallback
)
EncodeParameters
(
obj
runtime
.
Object
,
to
schema
.
GroupVersion
)
(
url
.
Values
,
error
)
{
ret
,
err
:=
api
.
ParameterCodec
.
EncodeParameters
(
obj
,
to
)
if
err
!=
nil
&&
runtime
.
IsNotRegisteredError
(
err
)
{
// fallback to v1
return
api
.
ParameterCodec
.
EncodeParameters
(
obj
,
v1
.
SchemeGroupVersion
)
}
return
ret
,
err
}
func
(
versionedParameterEncoderWithV1Fallback
)
DecodeParameters
(
parameters
url
.
Values
,
from
schema
.
GroupVersion
,
into
runtime
.
Object
)
error
{
return
errors
.
New
(
"DecodeParameters not implemented on versionedParameterEncoderWithV1Fallback"
)
}
// VersionedParameterEncoderWithV1Fallback is useful for encoding query
// parameters for thirdparty resources. It tries to convert object to the
// specified version before converting it to query parameters, and falls back to
// converting to v1 if the object is not registered in the specified version.
// For the record, currently API server always treats query parameters sent to a
// thirdparty resource endpoint as v1.
var
VersionedParameterEncoderWithV1Fallback
runtime
.
ParameterCodec
=
versionedParameterEncoderWithV1Fallback
{}
pkg/client/typed/dynamic/client_pool.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
dynamic
import
(
"sync"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime/schema"
restclient
"k8s.io/client-go/rest"
)
// ClientPool manages a pool of dynamic clients.
type
ClientPool
interface
{
// ClientForGroupVersionKind returns a client configured for the specified groupVersionResource.
// Resource may be empty.
ClientForGroupVersionResource
(
resource
schema
.
GroupVersionResource
)
(
*
Client
,
error
)
// ClientForGroupVersionKind returns a client configured for the specified groupVersionKind.
// Kind may be empty.
ClientForGroupVersionKind
(
kind
schema
.
GroupVersionKind
)
(
*
Client
,
error
)
}
// APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is
// optional.
type
APIPathResolverFunc
func
(
kind
schema
.
GroupVersionKind
)
string
// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API.
func
LegacyAPIPathResolverFunc
(
kind
schema
.
GroupVersionKind
)
string
{
if
len
(
kind
.
Group
)
==
0
{
return
"/api"
}
return
"/apis"
}
// clientPoolImpl implements ClientPool and caches clients for the resource group versions
// is asked to retrieve. This type is thread safe.
type
clientPoolImpl
struct
{
lock
sync
.
RWMutex
config
*
restclient
.
Config
clients
map
[
schema
.
GroupVersion
]
*
Client
apiPathResolverFunc
APIPathResolverFunc
mapper
meta
.
RESTMapper
}
// NewClientPool returns a ClientPool from the specified config. It reuses clients for the the same
// group version. It is expected this type may be wrapped by specific logic that special cases certain
// resources or groups.
func
NewClientPool
(
config
*
restclient
.
Config
,
mapper
meta
.
RESTMapper
,
apiPathResolverFunc
APIPathResolverFunc
)
ClientPool
{
confCopy
:=
*
config
return
&
clientPoolImpl
{
config
:
&
confCopy
,
clients
:
map
[
schema
.
GroupVersion
]
*
Client
{},
apiPathResolverFunc
:
apiPathResolverFunc
,
mapper
:
mapper
,
}
}
// ClientForGroupVersionResource uses the provided RESTMapper to identify the appropriate resource. Resource may
// be empty. If no matching kind is found the underlying client for that group is still returned.
func
(
c
*
clientPoolImpl
)
ClientForGroupVersionResource
(
resource
schema
.
GroupVersionResource
)
(
*
Client
,
error
)
{
kinds
,
err
:=
c
.
mapper
.
KindsFor
(
resource
)
if
err
!=
nil
{
if
meta
.
IsNoMatchError
(
err
)
{
return
c
.
ClientForGroupVersionKind
(
schema
.
GroupVersionKind
{
Group
:
resource
.
Group
,
Version
:
resource
.
Version
})
}
return
nil
,
err
}
return
c
.
ClientForGroupVersionKind
(
kinds
[
0
])
}
// ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists. Kind
// in the GroupVersionKind may be empty.
func
(
c
*
clientPoolImpl
)
ClientForGroupVersionKind
(
kind
schema
.
GroupVersionKind
)
(
*
Client
,
error
)
{
c
.
lock
.
Lock
()
defer
c
.
lock
.
Unlock
()
gv
:=
kind
.
GroupVersion
()
// do we have a client already configured?
if
existingClient
,
found
:=
c
.
clients
[
gv
];
found
{
return
existingClient
,
nil
}
// avoid changing the original config
confCopy
:=
*
c
.
config
conf
:=
&
confCopy
// we need to set the api path based on group version, if no group, default to legacy path
conf
.
APIPath
=
c
.
apiPathResolverFunc
(
kind
)
// we need to make a client
conf
.
GroupVersion
=
&
gv
dynamicClient
,
err
:=
NewClient
(
conf
)
if
err
!=
nil
{
return
nil
,
err
}
c
.
clients
[
gv
]
=
dynamicClient
return
dynamicClient
,
nil
}
pkg/client/typed/dynamic/client_test.go
deleted
100644 → 0
View file @
2a4fcdf8
This diff is collapsed.
Click to expand it.
pkg/client/typed/dynamic/dynamic_util.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
dynamic
import
(
"fmt"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// VersionInterfaces provides an object converter and metadata
// accessor appropriate for use with unstructured objects.
func
VersionInterfaces
(
schema
.
GroupVersion
)
(
*
meta
.
VersionInterfaces
,
error
)
{
return
&
meta
.
VersionInterfaces
{
ObjectConvertor
:
&
unstructured
.
UnstructuredObjectConverter
{},
MetadataAccessor
:
meta
.
NewAccessor
(),
},
nil
}
// NewDiscoveryRESTMapper returns a RESTMapper based on discovery information.
func
NewDiscoveryRESTMapper
(
resources
[]
*
metav1
.
APIResourceList
,
versionFunc
meta
.
VersionInterfacesFunc
)
(
*
meta
.
DefaultRESTMapper
,
error
)
{
rm
:=
meta
.
NewDefaultRESTMapper
(
nil
,
versionFunc
)
for
_
,
resourceList
:=
range
resources
{
gv
,
err
:=
schema
.
ParseGroupVersion
(
resourceList
.
GroupVersion
)
if
err
!=
nil
{
return
nil
,
err
}
for
_
,
resource
:=
range
resourceList
.
APIResources
{
gvk
:=
gv
.
WithKind
(
resource
.
Kind
)
scope
:=
meta
.
RESTScopeRoot
if
resource
.
Namespaced
{
scope
=
meta
.
RESTScopeNamespace
}
rm
.
Add
(
gvk
,
scope
)
}
}
return
rm
,
nil
}
// ObjectTyper provides an ObjectTyper implementation for
// unstructured.Unstructured object based on discovery information.
type
ObjectTyper
struct
{
registered
map
[
schema
.
GroupVersionKind
]
bool
}
// NewObjectTyper constructs an ObjectTyper from discovery information.
func
NewObjectTyper
(
resources
[]
*
metav1
.
APIResourceList
)
(
runtime
.
ObjectTyper
,
error
)
{
ot
:=
&
ObjectTyper
{
registered
:
make
(
map
[
schema
.
GroupVersionKind
]
bool
)}
for
_
,
resourceList
:=
range
resources
{
gv
,
err
:=
schema
.
ParseGroupVersion
(
resourceList
.
GroupVersion
)
if
err
!=
nil
{
return
nil
,
err
}
for
_
,
resource
:=
range
resourceList
.
APIResources
{
ot
.
registered
[
gv
.
WithKind
(
resource
.
Kind
)]
=
true
}
}
return
ot
,
nil
}
// ObjectKinds returns a slice of one element with the
// group,version,kind of the provided object, or an error if the
// object is not *unstructured.Unstructured or has no group,version,kind
// information.
func
(
ot
*
ObjectTyper
)
ObjectKinds
(
obj
runtime
.
Object
)
([]
schema
.
GroupVersionKind
,
bool
,
error
)
{
if
_
,
ok
:=
obj
.
(
*
unstructured
.
Unstructured
);
!
ok
{
return
nil
,
false
,
fmt
.
Errorf
(
"type %T is invalid for dynamic object typer"
,
obj
)
}
return
[]
schema
.
GroupVersionKind
{
obj
.
GetObjectKind
()
.
GroupVersionKind
()},
false
,
nil
}
// Recognizes returns true if the provided group,version,kind was in
// the discovery information.
func
(
ot
*
ObjectTyper
)
Recognizes
(
gvk
schema
.
GroupVersionKind
)
bool
{
return
ot
.
registered
[
gvk
]
}
pkg/client/typed/dynamic/dynamic_util_test.go
deleted
100644 → 0
View file @
2a4fcdf8
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
dynamic
import
(
"testing"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
)
func
TestDiscoveryRESTMapper
(
t
*
testing
.
T
)
{
resources
:=
[]
*
metav1
.
APIResourceList
{
{
GroupVersion
:
"test/beta1"
,
APIResources
:
[]
metav1
.
APIResource
{
{
Name
:
"test_kinds"
,
Namespaced
:
true
,
Kind
:
"test_kind"
,
},
},
},
}
gvk
:=
schema
.
GroupVersionKind
{
Group
:
"test"
,
Version
:
"beta1"
,
Kind
:
"test_kind"
,
}
mapper
,
err
:=
NewDiscoveryRESTMapper
(
resources
,
VersionInterfaces
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error creating mapper: %s"
,
err
)
}
for
_
,
res
:=
range
[]
schema
.
GroupVersionResource
{
{
Group
:
"test"
,
Version
:
"beta1"
,
Resource
:
"test_kinds"
,
},
{
Version
:
"beta1"
,
Resource
:
"test_kinds"
,
},
{
Group
:
"test"
,
Resource
:
"test_kinds"
,
},
{
Resource
:
"test_kinds"
,
},
}
{
got
,
err
:=
mapper
.
KindFor
(
res
)
if
err
!=
nil
{
t
.
Errorf
(
"KindFor(%#v) unexpected error: %s"
,
res
,
err
)
continue
}
if
got
!=
gvk
{
t
.
Errorf
(
"KindFor(%#v) = %#v; want %#v"
,
res
,
got
,
gvk
)
}
}
}
pkg/controller/garbagecollector/BUILD
View file @
2734f8f8
...
...
@@ -19,7 +19,6 @@ go_library(
tags = ["automanaged"],
deps = [
"//pkg/api/v1:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/controller/garbagecollector/metaonly:go_default_library",
"//pkg/util/metrics:go_default_library",
"//pkg/util/workqueue:go_default_library",
...
...
@@ -38,6 +37,7 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/tools/cache",
"//vendor:k8s.io/client-go/util/clock",
],
...
...
@@ -52,7 +52,6 @@ go_test(
"//pkg/api:go_default_library",
"//pkg/api/install:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/controller/garbagecollector/metaonly:go_default_library",
"//pkg/util/workqueue:go_default_library",
"//vendor:github.com/stretchr/testify/assert",
...
...
@@ -62,6 +61,7 @@ go_test(
"//vendor:k8s.io/apimachinery/pkg/types",
"//vendor:k8s.io/apimachinery/pkg/util/json",
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/util/clock",
],
...
...
pkg/controller/garbagecollector/garbagecollector.go
View file @
2734f8f8
...
...
@@ -35,10 +35,10 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/clock"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly"
"k8s.io/kubernetes/pkg/util/workqueue"
)
...
...
pkg/controller/garbagecollector/garbagecollector_test.go
View file @
2734f8f8
...
...
@@ -33,11 +33,11 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/util/clock"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly"
"k8s.io/kubernetes/pkg/util/workqueue"
)
...
...
pkg/controller/garbagecollector/rate_limiter_helper.go
View file @
2734f8f8
...
...
@@ -22,7 +22,7 @@ import (
"sync"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/
kubernetes/pkg/client/typed
/dynamic"
"k8s.io/
client-go
/dynamic"
"k8s.io/kubernetes/pkg/util/metrics"
)
...
...
pkg/controller/namespace/BUILD
View file @
2734f8f8
...
...
@@ -19,8 +19,6 @@ go_library(
deps = [
"//pkg/api/v1:go_default_library",
"//pkg/client/clientset_generated/clientset:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/util/metrics:go_default_library",
"//pkg/util/workqueue:go_default_library",
...
...
@@ -34,6 +32,8 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/tools/cache",
],
)
...
...
@@ -49,13 +49,13 @@ go_test(
"//pkg/client/clientset_generated/clientset:go_default_library",
"//pkg/client/clientset_generated/clientset/fake:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/util/sets",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
],
)
...
...
pkg/controller/namespace/namespace_controller.go
View file @
2734f8f8
...
...
@@ -26,10 +26,10 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/tools/cache"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/util/metrics"
"k8s.io/kubernetes/pkg/util/workqueue"
...
...
pkg/controller/namespace/namespace_controller_test.go
View file @
2734f8f8
...
...
@@ -30,14 +30,14 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
"k8s.io/kubernetes/pkg/client/testing/core"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
)
func
TestFinalized
(
t
*
testing
.
T
)
{
...
...
pkg/controller/namespace/namespace_controller_utils.go
View file @
2734f8f8
...
...
@@ -28,10 +28,10 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
)
// contentRemainingError is used to inform the caller that content is not fully removed from the namespace
...
...
pkg/kubectl/cmd/BUILD
View file @
2734f8f8
...
...
@@ -72,7 +72,6 @@ go_library(
"//pkg/apis/policy:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/unversioned:go_default_library",
"//pkg/client/unversioned/portforward:go_default_library",
"//pkg/client/unversioned/remotecommand:go_default_library",
...
...
@@ -122,6 +121,7 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/yaml",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/apiserver/pkg/util/flag",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/clientcmd",
],
...
...
@@ -181,7 +181,6 @@ go_test(
"//pkg/apis/batch:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
...
...
@@ -202,6 +201,7 @@ go_test(
"//vendor:k8s.io/apimachinery/pkg/util/strategicpatch",
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/rest/fake",
"//vendor:k8s.io/client-go/rest/watch",
...
...
pkg/kubectl/cmd/create_test.go
View file @
2734f8f8
...
...
@@ -21,9 +21,9 @@ import (
"net/http"
"testing"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
...
...
pkg/kubectl/cmd/delete_test.go
View file @
2734f8f8
...
...
@@ -26,10 +26,10 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/kubectl"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
...
pkg/kubectl/cmd/replace_test.go
View file @
2734f8f8
...
...
@@ -22,9 +22,9 @@ import (
"strings"
"testing"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
)
...
...
pkg/kubectl/cmd/run.go
View file @
2734f8f8
...
...
@@ -31,11 +31,11 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
"k8s.io/kubernetes/pkg/api"
batchv1
"k8s.io/kubernetes/pkg/apis/batch/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/typed/discovery"
conditions
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
...
...
pkg/kubectl/cmd/testing/BUILD
View file @
2734f8f8
...
...
@@ -17,7 +17,6 @@ go_library(
"//pkg/api/testapi:go_default_library",
"//pkg/api/validation:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/resource:go_default_library",
...
...
@@ -29,6 +28,7 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/rest/fake",
],
...
...
pkg/kubectl/cmd/testing/fake.go
View file @
2734f8f8
...
...
@@ -30,6 +30,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
fedclientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
...
...
@@ -37,7 +38,6 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
...
...
pkg/kubectl/cmd/util/BUILD
View file @
2734f8f8
...
...
@@ -34,8 +34,6 @@ go_library(
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/client/unversioned:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubectl:go_default_library",
...
...
@@ -61,6 +59,8 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/apiserver/pkg/util/flag",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/clientcmd",
"//vendor:k8s.io/client-go/util/homedir",
...
...
@@ -89,7 +89,6 @@ go_test(
"//pkg/apis/extensions:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/testing/core:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/resource:go_default_library",
...
...
@@ -106,6 +105,7 @@ go_test(
"//vendor:k8s.io/apimachinery/pkg/version",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/apiserver/pkg/util/flag",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/rest/fake",
"//vendor:k8s.io/client-go/tools/clientcmd",
...
...
pkg/kubectl/cmd/util/cached_discovery.go
View file @
2734f8f8
...
...
@@ -31,9 +31,9 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/version"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
// CachedDiscoveryClient implements the functions that discovery server-supported API groups,
...
...
pkg/kubectl/cmd/util/cached_discovery_test.go
View file @
2734f8f8
...
...
@@ -29,9 +29,9 @@ 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"
"k8s.io/kubernetes/pkg/client/typed/discovery"
)
func
TestCachedDiscoveryClient_Fresh
(
t
*
testing
.
T
)
{
...
...
pkg/kubectl/cmd/util/clientcache.go
View file @
2734f8f8
...
...
@@ -20,12 +20,12 @@ import (
"sync"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
fedclientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
oldclient
"k8s.io/kubernetes/pkg/client/unversioned"
)
...
...
pkg/kubectl/cmd/util/factory.go
View file @
2734f8f8
...
...
@@ -40,6 +40,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
fedclientset
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
...
...
@@ -48,7 +49,6 @@ import (
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresourcedata"
...
...
pkg/kubectl/cmd/util/factory_client_access.go
View file @
2734f8f8
...
...
@@ -36,6 +36,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
utilflag
"k8s.io/apiserver/pkg/util/flag"
"k8s.io/client-go/discovery"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
...
...
@@ -46,7 +47,6 @@ import (
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresourcedata"
...
...
pkg/kubectl/cmd/util/factory_object_mapping.go
View file @
2734f8f8
...
...
@@ -34,6 +34,8 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/pkg/api"
...
...
@@ -41,8 +43,6 @@ import (
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
client
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/kubectl"
...
...
pkg/kubectl/cmd/util/shortcut_restmapper.go
View file @
2734f8f8
...
...
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/
kubernetes/pkg/client/typed
/discovery"
"k8s.io/
client-go
/discovery"
"k8s.io/kubernetes/pkg/kubectl"
)
...
...
staging/copy.sh
View file @
2734f8f8
...
...
@@ -69,6 +69,8 @@ function save() {
}
# save everything for which the staging directory is the source of truth
save
"discovery"
save
"dynamic"
save
"rest"
save
"tools/auth"
save
"tools/cache"
...
...
@@ -93,7 +95,6 @@ mkcp "/pkg/client/record" "/pkg/client"
mkcp
"/pkg/client/testing"
"/pkg/client"
# remove this test because it imports the internal clientset
rm
"
${
CLIENT_REPO_TEMP
}
"
/pkg/client/testing/core/fake_test.go
mkcp
"/pkg/client/typed"
"/pkg/client"
mkcp
"/pkg/client/unversioned/portforward"
"/pkg/client/unversioned"
...
...
@@ -182,20 +183,16 @@ function mvfolder {
}
mvfolder
"pkg/client/clientset_generated/
${
CLIENTSET
}
"
kubernetes
mvfolder pkg/client/typed/discovery discovery
mvfolder pkg/client/typed/dynamic dynamic
mvfolder pkg/client/record tools/record
mvfolder pkg/client/unversioned/portforward tools/portforward
mvfolder pkg/client/testing/core testing
mvfolder pkg/client/testing/cache tools/cache/testing
mvfolder cmd/kubeadm/app/apis/kubeadm pkg/apis/kubeadm
if
[
"
$(
find
"
${
CLIENT_REPO_TEMP
}
"
/pkg/client
-type
f
-name
"*.go"
)
"
]
;
then
echo
"
${
CLIENT_REPO_TEMP
}
/pkg/client is expected to be empty"
exit
1
else
rm
-r
"
${
CLIENT_REPO_TEMP
}
"
/pkg/client
fi
mvfolder federation pkg/federation
echo
"running gofmt"
find
"
${
CLIENT_REPO_TEMP
}
"
-type
f
-name
"*.go"
-print0
| xargs
-0
gofmt
-w
...
...
test/e2e/framework/BUILD
View file @
2734f8f8
...
...
@@ -50,8 +50,6 @@ go_library(
"//pkg/client/clientset_generated/clientset/typed/rbac/v1beta1:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/conditions:go_default_library",
"//pkg/client/typed/discovery:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/client/unversioned/remotecommand:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
...
...
@@ -105,6 +103,8 @@ go_library(
"//vendor:k8s.io/apimachinery/pkg/util/validation",
"//vendor:k8s.io/apimachinery/pkg/util/wait",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/discovery",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/kubernetes",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/clientcmd",
...
...
test/e2e/framework/framework.go
View file @
2734f8f8
...
...
@@ -32,6 +32,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/dynamic"
staging
"k8s.io/client-go/kubernetes"
clientreporestclient
"k8s.io/client-go/rest"
restclient
"k8s.io/client-go/rest"
...
...
@@ -39,7 +40,6 @@ import (
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/metrics"
"k8s.io/kubernetes/pkg/util/intstr"
testutils
"k8s.io/kubernetes/test/utils"
...
...
test/e2e/framework/util.go
View file @
2734f8f8
...
...
@@ -63,6 +63,8 @@ import (
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi
"k8s.io/client-go/tools/clientcmd/api"
...
...
@@ -76,8 +78,6 @@ import (
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/client/conditions"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
gcecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/controller"
deploymentutil
"k8s.io/kubernetes/pkg/controller/deployment/util"
...
...
test/e2e_node/services/BUILD
View file @
2734f8f8
...
...
@@ -26,7 +26,6 @@ go_library(
"//pkg/api:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/clientset_generated/clientset:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/controller/namespace:go_default_library",
"//test/e2e/framework:go_default_library",
"//test/e2e_node/builder:go_default_library",
...
...
@@ -38,6 +37,7 @@ go_library(
"//vendor:github.com/golang/glog",
"//vendor:github.com/kardianos/osext",
"//vendor:k8s.io/apiserver/pkg/util/feature",
"//vendor:k8s.io/client-go/dynamic",
"//vendor:k8s.io/client-go/rest",
],
)
...
...
test/e2e_node/services/namespace_controller.go
View file @
2734f8f8
...
...
@@ -19,11 +19,11 @@ package services
import
(
"time"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
namespacecontroller
"k8s.io/kubernetes/pkg/controller/namespace"
"k8s.io/kubernetes/test/e2e/framework"
)
...
...
test/integration/client/dynamic_client_test.go
View file @
2734f8f8
...
...
@@ -25,12 +25,12 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/test/integration/framework"
)
...
...
test/integration/garbagecollector/garbage_collector_test.go
View file @
2734f8f8
...
...
@@ -34,12 +34,12 @@ import (
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/client/typed/discovery"
"k8s.io/kubernetes/pkg/client/typed/dynamic"
"k8s.io/kubernetes/pkg/controller/garbagecollector"
"k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly"
"k8s.io/kubernetes/test/integration"
...
...
vendor/BUILD
View file @
2734f8f8
...
...
@@ -13948,25 +13948,6 @@ go_library(
)
go_test(
name = "k8s.io/client-go/tools/cache_xtest",
srcs = ["k8s.io/client-go/tools/cache/listwatch_test.go"],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/fields",
"//vendor:k8s.io/apimachinery/pkg/runtime",
"//vendor:k8s.io/apimachinery/pkg/watch",
"//vendor:k8s.io/client-go/rest",
"//vendor:k8s.io/client-go/tools/cache",
"//vendor:k8s.io/client-go/util/testing",
],
)
go_test(
name = "k8s.io/apimachinery/pkg/util/strategicpatch_test",
srcs = ["k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go"],
library = ":k8s.io/apimachinery/pkg/util/strategicpatch",
...
...
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