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
d8924bc1
Commit
d8924bc1
authored
May 09, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move old dynamic client to deprecated-client
parent
82e32d2a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
220 additions
and
447 deletions
+220
-447
.golint_failures
hack/.golint_failures
+1
-0
graph_builder.go
pkg/controller/garbagecollector/graph_builder.go
+0
-3
BUILD
pkg/kubectl/BUILD
+1
-0
BUILD
pkg/kubectl/cmd/BUILD
+0
-1
BUILD
pkg/kubectl/cmd/create/BUILD
+1
-1
create_test.go
pkg/kubectl/cmd/create/create_test.go
+2
-2
delete_test.go
pkg/kubectl/cmd/delete_test.go
+1
-2
BUILD
pkg/kubectl/cmd/get/BUILD
+1
-1
get_test.go
pkg/kubectl/cmd/get/get_test.go
+2
-2
factory_object_mapping.go
pkg/kubectl/cmd/util/factory_object_mapping.go
+1
-1
BUILD
pkg/kubectl/genericclioptions/resource/BUILD
+0
-1
client.go
pkg/kubectl/genericclioptions/resource/client.go
+1
-2
scheme.go
pkg/kubectl/resource/scheme.go
+79
-0
BUILD
staging/BUILD
+1
-0
BUILD
staging/src/k8s.io/client-go/deprecated-dynamic/BUILD
+56
-0
bad_debt.go
staging/src/k8s.io/client-go/deprecated-dynamic/bad_debt.go
+1
-1
client.go
staging/src/k8s.io/client-go/deprecated-dynamic/client.go
+29
-11
client_pool.go
...ng/src/k8s.io/client-go/deprecated-dynamic/client_pool.go
+1
-1
client_test.go
...ng/src/k8s.io/client-go/deprecated-dynamic/client_test.go
+0
-0
BUILD
staging/src/k8s.io/client-go/dynamic/BUILD
+2
-9
dynamic_util.go
staging/src/k8s.io/client-go/dynamic/dynamic_util.go
+0
-87
dynamic_util_test.go
staging/src/k8s.io/client-go/dynamic/dynamic_util_test.go
+0
-79
BUILD
staging/src/k8s.io/client-go/dynamic/fake/BUILD
+1
-6
client.go
staging/src/k8s.io/client-go/dynamic/fake/client.go
+0
-163
client_pool.go
staging/src/k8s.io/client-go/dynamic/fake/client_pool.go
+0
-48
interface.go
staging/src/k8s.io/client-go/dynamic/interface.go
+34
-0
dynamic_client_test.go
test/integration/client/dynamic_client_test.go
+5
-26
No files found.
hack/.golint_failures
View file @
d8924bc1
...
...
@@ -581,6 +581,7 @@ staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/oidc
staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/tokentest
staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook
staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook
staging/src/k8s.io/client-go/deprecated-dynamic
staging/src/k8s.io/client-go/discovery/cached
staging/src/k8s.io/client-go/dynamic
staging/src/k8s.io/client-go/dynamic/fake
...
...
pkg/controller/garbagecollector/graph_builder.go
View file @
d8924bc1
...
...
@@ -92,9 +92,6 @@ type GraphBuilder struct {
running
bool
dynamicClient
dynamic
.
DynamicInterface
// metaOnlyClientPool uses a special codec, which removes fields except for
// apiVersion, kind, and metadata during decoding.
metaOnlyClientPool
dynamic
.
ClientPool
// monitors are the producer of the graphChanges queue, graphBuilder alters
// the in-memory graph according to the changes.
graphChanges
workqueue
.
RateLimitingInterface
...
...
pkg/kubectl/BUILD
View file @
d8924bc1
...
...
@@ -206,6 +206,7 @@ filegroup(
"//pkg/kubectl/metricsutil:all-srcs",
"//pkg/kubectl/plugins:all-srcs",
"//pkg/kubectl/proxy:all-srcs",
"//pkg/kubectl/resource:all-srcs",
"//pkg/kubectl/scheme:all-srcs",
"//pkg/kubectl/util:all-srcs",
"//pkg/kubectl/validation:all-srcs",
...
...
pkg/kubectl/cmd/BUILD
View file @
d8924bc1
...
...
@@ -225,7 +225,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/util/strategicpatch/testing:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
"//vendor/k8s.io/client-go/scale/fake:go_default_library",
...
...
pkg/kubectl/cmd/create/BUILD
View file @
d8924bc1
...
...
@@ -82,6 +82,7 @@ go_test(
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
...
...
@@ -94,7 +95,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
...
...
pkg/kubectl/cmd/create/create_test.go
View file @
d8924bc1
...
...
@@ -22,7 +22,6 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
...
...
@@ -30,6 +29,7 @@ import (
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -158,7 +158,7 @@ func TestCreateDirectory(t *testing.T) {
}
}
var
unstructuredSerializer
=
dynamic
.
ContentConfig
()
.
NegotiatedSerializer
var
unstructuredSerializer
=
resource
.
UnstructuredPlusDefault
ContentConfig
()
.
NegotiatedSerializer
func
initTestErrorHandler
(
t
*
testing
.
T
)
{
cmdutil
.
BehaviorOnFatal
(
func
(
str
string
,
code
int
)
{
...
...
pkg/kubectl/cmd/delete_test.go
View file @
d8924bc1
...
...
@@ -30,7 +30,6 @@ 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"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
...
...
@@ -42,7 +41,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
var
unstructuredSerializer
=
dynamic
.
ContentConfig
()
.
NegotiatedSerializer
var
unstructuredSerializer
=
resource
.
UnstructuredPlusDefault
ContentConfig
()
.
NegotiatedSerializer
func
fakecmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
...
...
pkg/kubectl/cmd/get/BUILD
View file @
d8924bc1
...
...
@@ -75,6 +75,7 @@ go_test(
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/cmd/util/openapi/testing:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
...
...
@@ -85,7 +86,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library",
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
...
...
pkg/kubectl/cmd/get/get_test.go
View file @
d8924bc1
...
...
@@ -34,7 +34,6 @@ import (
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake"
restclientwatch
"k8s.io/client-go/rest/watch"
...
...
@@ -49,6 +48,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
openapitesting
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -61,7 +61,7 @@ func init() {
scheme
.
Scheme
.
AddConversionFuncs
(
v1
.
Convert_v1_PodSecurityContext_To_core_PodSecurityContext
)
}
var
unstructuredSerializer
=
dynamic
.
ContentConfig
()
.
NegotiatedSerializer
var
unstructuredSerializer
=
resource
.
UnstructuredPlusDefault
ContentConfig
()
.
NegotiatedSerializer
func
defaultHeader
()
http
.
Header
{
header
:=
http
.
Header
{}
...
...
pkg/kubectl/cmd/util/factory_object_mapping.go
View file @
d8924bc1
...
...
@@ -117,7 +117,7 @@ func (f *ring1Factory) UnstructuredClientForMapping(mapping *meta.RESTMapping) (
cfg
.
APIPath
=
"/api"
}
gv
:=
mapping
.
GroupVersionKind
.
GroupVersion
()
cfg
.
ContentConfig
=
dynamic
.
ContentConfig
()
cfg
.
ContentConfig
=
resource
.
UnstructuredPlusDefault
ContentConfig
()
cfg
.
GroupVersion
=
&
gv
return
restclient
.
RESTClientFor
(
cfg
)
}
...
...
pkg/kubectl/genericclioptions/resource/BUILD
View file @
d8924bc1
...
...
@@ -36,7 +36,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/restmapper:go_default_library",
],
...
...
pkg/kubectl/genericclioptions/resource/client.go
View file @
d8924bc1
...
...
@@ -19,7 +19,6 @@ package resource
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"
)
...
...
@@ -47,7 +46,7 @@ func (clientConfigFn ClientConfigFunc) unstructuredClientForGroupVersion(gv sche
if
err
!=
nil
{
return
nil
,
err
}
cfg
.
ContentConfig
=
dynamic
.
ContentConfig
()
cfg
.
ContentConfig
=
UnstructuredPlusDefault
ContentConfig
()
cfg
.
GroupVersion
=
&
gv
if
len
(
gv
.
Group
)
==
0
{
cfg
.
APIPath
=
"/api"
...
...
pkg/kubectl/resource/scheme.go
0 → 100644
View file @
d8924bc1
/*
Copyright 2018 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
resource
import
(
"encoding/json"
"io"
"strings"
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"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
)
// dynamicCodec is a codec that wraps the standard unstructured codec
// with special handling for Status objects.
// Deprecated only used by test code and its wrong
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 rest.ContentConfig for dynamic types. It includes enough codecs to act as a "normal"
// serializer for the rest.client with options, status and the like.
func
UnstructuredPlusDefaultContentConfig
()
rest
.
ContentConfig
{
var
jsonInfo
runtime
.
SerializerInfo
// TODO: scheme.Codecs here should become "pkg/apis/server/scheme" which is the minimal core you need
// to talk to a kubernetes server
for
_
,
info
:=
range
scheme
.
Codecs
.
SupportedMediaTypes
()
{
if
info
.
MediaType
==
runtime
.
ContentTypeJSON
{
jsonInfo
=
info
break
}
}
jsonInfo
.
Serializer
=
dynamicCodec
{}
jsonInfo
.
PrettySerializer
=
nil
return
rest
.
ContentConfig
{
AcceptContentTypes
:
runtime
.
ContentTypeJSON
,
ContentType
:
runtime
.
ContentTypeJSON
,
NegotiatedSerializer
:
serializer
.
NegotiatedSerializerWrapper
(
jsonInfo
),
}
}
staging/BUILD
View file @
d8924bc1
...
...
@@ -99,6 +99,7 @@ filegroup(
"//staging/src/k8s.io/apiserver/plugin/pkg/audit:all-srcs",
"//staging/src/k8s.io/apiserver/plugin/pkg/authenticator:all-srcs",
"//staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook:all-srcs",
"//staging/src/k8s.io/client-go/deprecated-dynamic:all-srcs",
"//staging/src/k8s.io/client-go/discovery:all-srcs",
"//staging/src/k8s.io/client-go/dynamic:all-srcs",
"//staging/src/k8s.io/client-go/examples/create-update-delete-deployment:all-srcs",
...
...
staging/src/k8s.io/client-go/deprecated-dynamic/BUILD
0 → 100644
View file @
d8924bc1
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = [
"bad_debt.go",
"client.go",
"client_pool.go",
],
importpath = "k8s.io/client-go/deprecated-dynamic",
visibility = ["//visibility:public"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["client_test.go"],
embed = [":go_default_library"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
staging/src/k8s.io/client-go/dynamic/bad_debt.go
→
staging/src/k8s.io/client-go/d
eprecated-d
ynamic/bad_debt.go
View file @
d8924bc1
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
dynamic
package
d
eprecated_d
ynamic
import
(
"encoding/json"
...
...
staging/src/k8s.io/client-go/dynamic/client.go
→
staging/src/k8s.io/client-go/d
eprecated-d
ynamic/client.go
View file @
d8924bc1
...
...
@@ -17,7 +17,7 @@ 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
package
d
eprecated_d
ynamic
import
(
"strings"
...
...
@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/dynamic"
restclient
"k8s.io/client-go/rest"
)
...
...
@@ -65,13 +66,13 @@ type ResourceInterface interface {
// and manipulate metadata of a Kubernetes API group, and implements Interface.
type
Client
struct
{
version
schema
.
GroupVersion
delegate
DynamicInterface
delegate
dynamic
.
DynamicInterface
}
// 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
,
version
schema
.
GroupVersion
)
(
*
Client
,
error
)
{
delegate
,
err
:=
NewForConfig
(
conf
)
delegate
,
err
:=
dynamic
.
NewForConfig
(
conf
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -84,24 +85,41 @@ func NewClient(conf *restclient.Config, version schema.GroupVersion) (*Client, e
// is ignored. The ResourceInterface inherits the parameter codec of c.
func
(
c
*
Client
)
Resource
(
resource
*
metav1
.
APIResource
,
namespace
string
)
ResourceInterface
{
resourceTokens
:=
strings
.
SplitN
(
resource
.
Name
,
"/"
,
2
)
subresource
:=
""
subresource
s
:=
[]
string
{}
if
len
(
resourceTokens
)
>
1
{
subresource
=
resourceTokens
[
1
]
subresource
s
=
strings
.
Split
(
resourceTokens
[
1
],
"/"
)
}
if
len
(
namespace
)
==
0
{
return
oldResourceShim
(
c
.
delegate
.
ClusterSubresource
(
c
.
version
.
WithResource
(
resourceTokens
[
0
]),
subresource
)
)
return
oldResourceShim
(
c
.
delegate
.
Resource
(
c
.
version
.
WithResource
(
resourceTokens
[
0
])),
subresources
)
}
return
oldResourceShim
(
c
.
delegate
.
NamespacedSubresource
(
c
.
version
.
WithResource
(
resourceTokens
[
0
]),
subresource
,
namespace
)
)
return
oldResourceShim
(
c
.
delegate
.
Resource
(
c
.
version
.
WithResource
(
resourceTokens
[
0
]))
.
Namespace
(
namespace
),
subresources
)
}
// the old interfaces used the wrong type for lists. this fixes that
func
oldResourceShim
(
in
DynamicResourceInterface
)
ResourceInterface
{
return
oldResourceShimType
{
DynamicResourceInterface
:
in
}
func
oldResourceShim
(
in
dynamic
.
DynamicResourceInterface
,
subresources
[]
string
)
ResourceInterface
{
return
oldResourceShimType
{
DynamicResourceInterface
:
in
,
subresources
:
subresources
}
}
type
oldResourceShimType
struct
{
DynamicResourceInterface
dynamic
.
DynamicResourceInterface
subresources
[]
string
}
func
(
s
oldResourceShimType
)
Create
(
obj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
return
s
.
DynamicResourceInterface
.
Create
(
obj
,
s
.
subresources
...
)
}
func
(
s
oldResourceShimType
)
Update
(
obj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
return
s
.
DynamicResourceInterface
.
Update
(
obj
,
s
.
subresources
...
)
}
func
(
s
oldResourceShimType
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
return
s
.
DynamicResourceInterface
.
Delete
(
name
,
opts
,
s
.
subresources
...
)
}
func
(
s
oldResourceShimType
)
Get
(
name
string
,
opts
metav1
.
GetOptions
)
(
*
unstructured
.
Unstructured
,
error
)
{
return
s
.
DynamicResourceInterface
.
Get
(
name
,
opts
,
s
.
subresources
...
)
}
func
(
s
oldResourceShimType
)
List
(
opts
metav1
.
ListOptions
)
(
runtime
.
Object
,
error
)
{
...
...
@@ -109,5 +127,5 @@ func (s oldResourceShimType) List(opts metav1.ListOptions) (runtime.Object, erro
}
func
(
s
oldResourceShimType
)
Patch
(
name
string
,
pt
types
.
PatchType
,
data
[]
byte
)
(
*
unstructured
.
Unstructured
,
error
)
{
return
s
.
DynamicResourceInterface
.
Patch
(
name
,
pt
,
data
)
return
s
.
DynamicResourceInterface
.
Patch
(
name
,
pt
,
data
,
s
.
subresources
...
)
}
staging/src/k8s.io/client-go/dynamic/client_pool.go
→
staging/src/k8s.io/client-go/d
eprecated-d
ynamic/client_pool.go
View file @
d8924bc1
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
dynamic
package
d
eprecated_d
ynamic
import
(
"sync"
...
...
staging/src/k8s.io/client-go/deprecated-dynamic/client_test.go
0 → 100644
View file @
d8924bc1
This diff is collapsed.
Click to expand it.
staging/src/k8s.io/client-go/dynamic/BUILD
View file @
d8924bc1
...
...
@@ -8,10 +8,7 @@ load(
go_test(
name = "go_default_test",
srcs = [
"client_test.go",
"dynamic_util_test.go",
],
srcs = ["client_test.go"],
embed = [":go_default_library"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
...
@@ -29,10 +26,7 @@ go_test(
go_library(
name = "go_default_library",
srcs = [
"bad_debt.go",
"client.go",
"client_pool.go",
"dynamic_util.go",
"interface.go",
"scheme.go",
"simple.go",
],
...
...
@@ -49,7 +43,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
],
)
...
...
staging/src/k8s.io/client-go/dynamic/dynamic_util.go
deleted
100644 → 0
View file @
82e32d2a
/*
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"
)
// NewDiscoveryRESTMapper returns a RESTMapper based on discovery information.
func
NewDiscoveryRESTMapper
(
resources
[]
*
metav1
.
APIResourceList
)
(
*
meta
.
DefaultRESTMapper
,
error
)
{
rm
:=
meta
.
NewDefaultRESTMapper
(
nil
)
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 determining dynamic object types"
,
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
]
}
staging/src/k8s.io/client-go/dynamic/dynamic_util_test.go
deleted
100644 → 0
View file @
82e32d2a
/*
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
)
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
)
}
}
}
staging/src/k8s.io/client-go/dynamic/fake/BUILD
View file @
d8924bc1
...
...
@@ -7,11 +7,7 @@ load(
go_library(
name = "go_default_library",
srcs = [
"client.go",
"client_pool.go",
"simple.go",
],
srcs = ["simple.go"],
importpath = "k8s.io/client-go/dynamic/fake",
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
...
...
@@ -25,7 +21,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
],
)
...
...
staging/src/k8s.io/client-go/dynamic/fake/client.go
deleted
100644 → 0
View file @
82e32d2a
/*
Copyright 2017 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 provides a fake client interface to arbitrary Kubernetes
// APIs that exposes common high level operations and exposes common
// metadata.
package
fake
import
(
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/testing"
"k8s.io/client-go/util/flowcontrol"
)
// FakeClient is a fake implementation of dynamic.Interface.
type
FakeClient
struct
{
GroupVersion
schema
.
GroupVersion
*
testing
.
Fake
}
// GetRateLimiter returns the rate limiter for this client.
func
(
c
*
FakeClient
)
GetRateLimiter
()
flowcontrol
.
RateLimiter
{
return
nil
}
// 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 this client
func
(
c
*
FakeClient
)
Resource
(
resource
*
metav1
.
APIResource
,
namespace
string
)
dynamic
.
ResourceInterface
{
return
&
FakeResourceClient
{
Resource
:
c
.
GroupVersion
.
WithResource
(
resource
.
Name
),
Kind
:
c
.
GroupVersion
.
WithKind
(
resource
.
Kind
),
Namespace
:
namespace
,
Fake
:
c
.
Fake
,
}
}
// ParameterCodec returns a client with the provided parameter codec.
func
(
c
*
FakeClient
)
ParameterCodec
(
parameterCodec
runtime
.
ParameterCodec
)
dynamic
.
Interface
{
return
&
FakeClient
{
Fake
:
c
.
Fake
,
}
}
// FakeResourceClient is a fake implementation of dynamic.ResourceInterface
type
FakeResourceClient
struct
{
Resource
schema
.
GroupVersionResource
Kind
schema
.
GroupVersionKind
Namespace
string
*
testing
.
Fake
}
// List returns a list of objects for this resource.
func
(
c
*
FakeResourceClient
)
List
(
opts
metav1
.
ListOptions
)
(
runtime
.
Object
,
error
)
{
obj
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewListAction
(
c
.
Resource
,
c
.
Kind
,
c
.
Namespace
,
opts
),
&
unstructured
.
UnstructuredList
{})
if
obj
==
nil
{
return
nil
,
err
}
label
,
_
,
_
:=
testing
.
ExtractFromListOptions
(
opts
)
if
label
==
nil
{
label
=
labels
.
Everything
()
}
list
:=
&
unstructured
.
UnstructuredList
{}
for
_
,
item
:=
range
obj
.
(
*
unstructured
.
UnstructuredList
)
.
Items
{
if
label
.
Matches
(
labels
.
Set
(
item
.
GetLabels
()))
{
list
.
Items
=
append
(
list
.
Items
,
item
)
}
}
return
list
,
err
}
// Get gets the resource with the specified name.
func
(
c
*
FakeResourceClient
)
Get
(
name
string
,
opts
metav1
.
GetOptions
)
(
*
unstructured
.
Unstructured
,
error
)
{
obj
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewGetAction
(
c
.
Resource
,
c
.
Namespace
,
name
),
&
unstructured
.
Unstructured
{})
if
obj
==
nil
{
return
nil
,
err
}
return
obj
.
(
*
unstructured
.
Unstructured
),
err
}
// Delete deletes the resource with the specified name.
func
(
c
*
FakeResourceClient
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
_
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewDeleteAction
(
c
.
Resource
,
c
.
Namespace
,
name
),
&
unstructured
.
Unstructured
{})
return
err
}
// DeleteCollection deletes a collection of objects.
func
(
c
*
FakeResourceClient
)
DeleteCollection
(
deleteOptions
*
metav1
.
DeleteOptions
,
listOptions
metav1
.
ListOptions
)
error
{
_
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewDeleteCollectionAction
(
c
.
Resource
,
c
.
Namespace
,
listOptions
),
&
unstructured
.
Unstructured
{})
return
err
}
// Create creates the provided resource.
func
(
c
*
FakeResourceClient
)
Create
(
inObj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
obj
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewCreateAction
(
c
.
Resource
,
c
.
Namespace
,
inObj
),
&
unstructured
.
Unstructured
{})
if
obj
==
nil
{
return
nil
,
err
}
return
obj
.
(
*
unstructured
.
Unstructured
),
err
}
// Update updates the provided resource.
func
(
c
*
FakeResourceClient
)
Update
(
inObj
*
unstructured
.
Unstructured
)
(
*
unstructured
.
Unstructured
,
error
)
{
obj
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewUpdateAction
(
c
.
Resource
,
c
.
Namespace
,
inObj
),
&
unstructured
.
Unstructured
{})
if
obj
==
nil
{
return
nil
,
err
}
return
obj
.
(
*
unstructured
.
Unstructured
),
err
}
// Watch returns a watch.Interface that watches the resource.
func
(
c
*
FakeResourceClient
)
Watch
(
opts
metav1
.
ListOptions
)
(
watch
.
Interface
,
error
)
{
return
c
.
Fake
.
InvokesWatch
(
testing
.
NewWatchAction
(
c
.
Resource
,
c
.
Namespace
,
opts
))
}
// Patch patches the provided resource.
func
(
c
*
FakeResourceClient
)
Patch
(
name
string
,
pt
types
.
PatchType
,
data
[]
byte
)
(
*
unstructured
.
Unstructured
,
error
)
{
obj
,
err
:=
c
.
Fake
.
Invokes
(
testing
.
NewPatchAction
(
c
.
Resource
,
c
.
Namespace
,
name
,
data
),
&
unstructured
.
Unstructured
{})
if
obj
==
nil
{
return
nil
,
err
}
return
obj
.
(
*
unstructured
.
Unstructured
),
err
}
staging/src/k8s.io/client-go/dynamic/fake/client_pool.go
deleted
100644 → 0
View file @
82e32d2a
/*
Copyright 2017 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 provides a fake client interface to arbitrary Kubernetes
// APIs that exposes common high level operations and exposes common
// metadata.
package
fake
import
(
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/testing"
)
// FakeClientPool provides a fake implementation of dynamic.ClientPool.
// It assumes resource GroupVersions are the same as their corresponding kind GroupVersions.
type
FakeClientPool
struct
{
testing
.
Fake
}
// ClientForGroupVersionKind returns a client configured for the specified groupVersionResource.
// Resource may be empty.
func
(
p
*
FakeClientPool
)
ClientForGroupVersionResource
(
resource
schema
.
GroupVersionResource
)
(
dynamic
.
Interface
,
error
)
{
return
p
.
ClientForGroupVersionKind
(
resource
.
GroupVersion
()
.
WithKind
(
""
))
}
// ClientForGroupVersionKind returns a client configured for the specified groupVersionKind.
// Kind may be empty.
func
(
p
*
FakeClientPool
)
ClientForGroupVersionKind
(
kind
schema
.
GroupVersionKind
)
(
dynamic
.
Interface
,
error
)
{
// we can just create a new client every time for testing purposes
return
&
FakeClient
{
GroupVersion
:
kind
.
GroupVersion
(),
Fake
:
&
p
.
Fake
,
},
nil
}
staging/src/k8s.io/client-go/dynamic/interface.go
0 → 100644
View file @
d8924bc1
/*
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
(
"k8s.io/apimachinery/pkg/runtime/schema"
)
// APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is optional.
// TODO find a better place to move this for existing callers
type
APIPathResolverFunc
func
(
kind
schema
.
GroupVersionKind
)
string
// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API.
// TODO find a better place to move this for existing callers
func
LegacyAPIPathResolverFunc
(
kind
schema
.
GroupVersionKind
)
string
{
if
len
(
kind
.
Group
)
==
0
{
return
"/api"
}
return
"/apis"
}
test/integration/client/dynamic_client_test.go
View file @
d8924bc1
...
...
@@ -46,29 +46,12 @@ func TestDynamicClient(t *testing.T) {
}
client
:=
clientset
.
NewForConfigOrDie
(
config
)
dynamicClient
,
err
:=
dynamic
.
NewClient
(
config
,
*
gv
)
_
=
dynamicClient
dynamicClient
,
err
:=
dynamic
.
NewForConfig
(
config
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error creating dynamic client: %v"
,
err
)
}
// Find the Pod resource
resources
,
err
:=
client
.
Discovery
()
.
ServerResourcesForGroupVersion
(
gv
.
String
())
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error listing resources: %v"
,
err
)
}
var
resource
metav1
.
APIResource
for
_
,
r
:=
range
resources
.
APIResources
{
if
r
.
Kind
==
"Pod"
{
resource
=
r
break
}
}
if
len
(
resource
.
Name
)
==
0
{
t
.
Fatalf
(
"could not find the pod resource in group/version %q"
,
gv
.
String
())
}
resource
:=
schema
.
GroupVersionResource
{
Group
:
""
,
Version
:
"v1"
,
Resource
:
"pods"
}
// Create a Pod with the normal client
pod
:=
&
v1
.
Pod
{
...
...
@@ -91,11 +74,7 @@ func TestDynamicClient(t *testing.T) {
}
// check dynamic list
obj
,
err
:=
dynamicClient
.
Resource
(
&
resource
,
ns
.
Name
)
.
List
(
metav1
.
ListOptions
{})
unstructuredList
,
ok
:=
obj
.
(
*
unstructured
.
UnstructuredList
)
if
!
ok
{
t
.
Fatalf
(
"expected *unstructured.UnstructuredList, got %#v"
,
obj
)
}
unstructuredList
,
err
:=
dynamicClient
.
Resource
(
resource
)
.
Namespace
(
ns
.
Name
)
.
List
(
metav1
.
ListOptions
{})
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error when listing pods: %v"
,
err
)
}
...
...
@@ -114,7 +93,7 @@ func TestDynamicClient(t *testing.T) {
}
// check dynamic get
unstruct
,
err
:=
dynamicClient
.
Resource
(
&
resource
,
ns
.
Name
)
.
Get
(
actual
.
Name
,
metav1
.
GetOptions
{})
unstruct
,
err
:=
dynamicClient
.
Resource
(
resource
)
.
Namespace
(
ns
.
Name
)
.
Get
(
actual
.
Name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error when getting pod %q: %v"
,
actual
.
Name
,
err
)
}
...
...
@@ -129,7 +108,7 @@ func TestDynamicClient(t *testing.T) {
}
// delete the pod dynamically
err
=
dynamicClient
.
Resource
(
&
resource
,
ns
.
Name
)
.
Delete
(
actual
.
Name
,
nil
)
err
=
dynamicClient
.
Resource
(
resource
)
.
Namespace
(
ns
.
Name
)
.
Delete
(
actual
.
Name
,
nil
)
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error when deleting pod: %v"
,
err
)
}
...
...
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