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
d978f22e
Commit
d978f22e
authored
Apr 14, 2017
by
Chao Xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove references to client-go/pkg/api
parent
2689f033
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
190 additions
and
171 deletions
+190
-171
types.go
pkg/apis/authentication/v1/types.go
+15
-0
copy.sh
staging/copy.sh
+1
-0
BUILD
staging/src/k8s.io/apiserver/pkg/endpoints/filters/BUILD
+2
-1
impersonation.go
...c/k8s.io/apiserver/pkg/endpoints/filters/impersonation.go
+21
-21
BUILD
staging/src/k8s.io/apiserver/pkg/registry/generic/rest/BUILD
+1
-1
response_checker_test.go
...server/pkg/registry/generic/rest/response_checker_test.go
+3
-3
BUILD
staging/src/k8s.io/apiserver/pkg/storage/BUILD
+2
-1
cacher_whitebox_test.go
.../src/k8s.io/apiserver/pkg/storage/cacher_whitebox_test.go
+5
-4
watch_cache_test.go
staging/src/k8s.io/apiserver/pkg/storage/watch_cache_test.go
+7
-7
BUILD
staging/src/k8s.io/apiserver/pkg/util/webhook/BUILD
+2
-1
webhook_test.go
...ing/src/k8s.io/apiserver/pkg/util/webhook/webhook_test.go
+8
-6
BUILD
...io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD
+2
-2
webhook.go
...iserver/plugin/pkg/authenticator/token/webhook/webhook.go
+17
-4
BUILD
.../src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD
+2
-1
webhook.go
...k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go
+17
-2
BUILD
staging/src/k8s.io/client-go/kubernetes/BUILD
+0
-14
import_known_versions.go
.../src/k8s.io/client-go/kubernetes/import_known_versions.go
+0
-42
types.go
.../src/k8s.io/client-go/pkg/apis/authentication/v1/types.go
+15
-0
BUILD
staging/src/k8s.io/client-go/rest/BUILD
+3
-2
client_test.go
staging/src/k8s.io/client-go/rest/client_test.go
+20
-19
config_test.go
staging/src/k8s.io/client-go/rest/config_test.go
+5
-5
request_test.go
staging/src/k8s.io/client-go/rest/request_test.go
+0
-0
BUILD
staging/src/k8s.io/client-go/rest/watch/BUILD
+3
-2
decoder_test.go
staging/src/k8s.io/client-go/rest/watch/decoder_test.go
+15
-9
encoder_test.go
staging/src/k8s.io/client-go/rest/watch/encoder_test.go
+15
-13
BUILD
staging/src/k8s.io/client-go/tools/record/BUILD
+1
-2
event_test.go
staging/src/k8s.io/client-go/tools/record/event_test.go
+8
-9
No files found.
pkg/apis/authentication/v1/types.go
View file @
d978f22e
...
...
@@ -22,6 +22,21 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
// ImpersonateUserHeader is used to impersonate a particular user during an API server request
ImpersonateUserHeader
=
"Impersonate-User"
// ImpersonateGroupHeader is used to impersonate a particular group during an API server request.
// It can be repeated multiplied times for multiple groups.
ImpersonateGroupHeader
=
"Impersonate-Group"
// ImpersonateUserExtraHeaderPrefix is a prefix for any header used to impersonate an entry in the
// extra map[string][]string for user.Info. The key will be every after the prefix.
// It can be repeated multiplied times for multiple map keys and the same key can be repeated multiple
// times to have multiple elements in the slice under a single key
ImpersonateUserExtraHeaderPrefix
=
"Impersonate-Extra-"
)
// +genclient=true
// +nonNamespaced=true
// +noMethods=true
...
...
staging/copy.sh
View file @
d978f22e
...
...
@@ -195,6 +195,7 @@ function mvfolder {
}
mvfolder
"pkg/client/clientset_generated/
${
CLIENTSET
}
"
kubernetes
rm
-f
"
${
CLIENT_REPO_TEMP
}
/kubernetes/import_known_versions.go"
mvfolder
"pkg/client/informers/informers_generated/externalversions"
informers
mvfolder
"pkg/client/listers"
listers
if
[
"
$(
find
"
${
CLIENT_REPO_TEMP
}
"
/pkg/client
-type
f
-name
"*.go"
)
"
]
;
then
...
...
staging/src/k8s.io/apiserver/pkg/endpoints/filters/BUILD
View file @
d978f22e
...
...
@@ -54,7 +54,8 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/server/httplog:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api
/v1
:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authentication:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library",
],
)
staging/src/k8s.io/apiserver/pkg/endpoints/filters/impersonation.go
View file @
d978f22e
...
...
@@ -30,8 +30,8 @@ import (
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
"k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/server/httplog"
"k8s.io/client-go/pkg/api"
authentication
api
"k8s.io/client-go/pkg/apis/authentication
"
"k8s.io/client-go/pkg/api
/v1
"
authentication
v1
"k8s.io/client-go/pkg/apis/authentication/v1
"
)
// WithImpersonation is a filter that will inspect and check requests that attempt to change the user.Info for their requests
...
...
@@ -61,7 +61,7 @@ func WithImpersonation(handler http.Handler, requestContextMapper request.Reques
// if groups are not specified, then we need to look them up differently depending on the type of user
// if they are specified, then they are the authority (including the inclusion of system:authenticated/system:unauthenticated groups)
groupsSpecified
:=
len
(
req
.
Header
[
authentication
api
.
ImpersonateGroupHeader
])
>
0
groupsSpecified
:=
len
(
req
.
Header
[
authentication
v1
.
ImpersonateGroupHeader
])
>
0
// make sure we're allowed to impersonate each thing we're requesting. While we're iterating through, start building username
// and group information
...
...
@@ -79,7 +79,7 @@ func WithImpersonation(handler http.Handler, requestContextMapper request.Reques
}
switch
impersonationRequest
.
GetObjectKind
()
.
GroupVersionKind
()
.
GroupKind
()
{
case
api
.
Kind
(
"ServiceAccount"
)
:
case
v1
.
SchemeGroupVersion
.
WithKind
(
"ServiceAccount"
)
.
GroupKind
(
)
:
actingAsAttributes
.
Resource
=
"serviceaccounts"
username
=
serviceaccount
.
MakeUsername
(
impersonationRequest
.
Namespace
,
impersonationRequest
.
Name
)
if
!
groupsSpecified
{
...
...
@@ -87,15 +87,15 @@ func WithImpersonation(handler http.Handler, requestContextMapper request.Reques
groups
=
serviceaccount
.
MakeGroupNames
(
impersonationRequest
.
Namespace
,
impersonationRequest
.
Name
)
}
case
api
.
Kind
(
"User"
)
:
case
v1
.
SchemeGroupVersion
.
WithKind
(
"User"
)
.
GroupKind
(
)
:
actingAsAttributes
.
Resource
=
"users"
username
=
impersonationRequest
.
Name
case
api
.
Kind
(
"Group"
)
:
case
v1
.
SchemeGroupVersion
.
WithKind
(
"Group"
)
.
GroupKind
(
)
:
actingAsAttributes
.
Resource
=
"groups"
groups
=
append
(
groups
,
impersonationRequest
.
Name
)
case
authentication
api
.
Kind
(
"UserExtra"
)
:
case
authentication
v1
.
SchemeGroupVersion
.
WithKind
(
"UserExtra"
)
.
GroupKind
(
)
:
extraKey
:=
impersonationRequest
.
FieldPath
extraValue
:=
impersonationRequest
.
Name
actingAsAttributes
.
Resource
=
"userextras"
...
...
@@ -143,10 +143,10 @@ func WithImpersonation(handler http.Handler, requestContextMapper request.Reques
httplog
.
LogOf
(
req
,
w
)
.
Addf
(
"%v is acting as %v"
,
oldUser
,
newUser
)
// clear all the impersonation headers from the request
req
.
Header
.
Del
(
authentication
api
.
ImpersonateUserHeader
)
req
.
Header
.
Del
(
authentication
api
.
ImpersonateGroupHeader
)
req
.
Header
.
Del
(
authentication
v1
.
ImpersonateUserHeader
)
req
.
Header
.
Del
(
authentication
v1
.
ImpersonateGroupHeader
)
for
headerName
:=
range
req
.
Header
{
if
strings
.
HasPrefix
(
headerName
,
authentication
api
.
ImpersonateUserExtraHeaderPrefix
)
{
if
strings
.
HasPrefix
(
headerName
,
authentication
v1
.
ImpersonateUserExtraHeaderPrefix
)
{
req
.
Header
.
Del
(
headerName
)
}
}
...
...
@@ -158,42 +158,42 @@ func WithImpersonation(handler http.Handler, requestContextMapper request.Reques
// buildImpersonationRequests returns a list of objectreferences that represent the different things we're requesting to impersonate.
// Also includes a map[string][]string representing user.Info.Extra
// Each request must be authorized against the current user before switching contexts.
func
buildImpersonationRequests
(
headers
http
.
Header
)
([]
api
.
ObjectReference
,
error
)
{
impersonationRequests
:=
[]
api
.
ObjectReference
{}
func
buildImpersonationRequests
(
headers
http
.
Header
)
([]
v1
.
ObjectReference
,
error
)
{
impersonationRequests
:=
[]
v1
.
ObjectReference
{}
requestedUser
:=
headers
.
Get
(
authentication
api
.
ImpersonateUserHeader
)
requestedUser
:=
headers
.
Get
(
authentication
v1
.
ImpersonateUserHeader
)
hasUser
:=
len
(
requestedUser
)
>
0
if
hasUser
{
if
namespace
,
name
,
err
:=
serviceaccount
.
SplitUsername
(
requestedUser
);
err
==
nil
{
impersonationRequests
=
append
(
impersonationRequests
,
api
.
ObjectReference
{
Kind
:
"ServiceAccount"
,
Namespace
:
namespace
,
Name
:
name
})
impersonationRequests
=
append
(
impersonationRequests
,
v1
.
ObjectReference
{
Kind
:
"ServiceAccount"
,
Namespace
:
namespace
,
Name
:
name
})
}
else
{
impersonationRequests
=
append
(
impersonationRequests
,
api
.
ObjectReference
{
Kind
:
"User"
,
Name
:
requestedUser
})
impersonationRequests
=
append
(
impersonationRequests
,
v1
.
ObjectReference
{
Kind
:
"User"
,
Name
:
requestedUser
})
}
}
hasGroups
:=
false
for
_
,
group
:=
range
headers
[
authentication
api
.
ImpersonateGroupHeader
]
{
for
_
,
group
:=
range
headers
[
authentication
v1
.
ImpersonateGroupHeader
]
{
hasGroups
=
true
impersonationRequests
=
append
(
impersonationRequests
,
api
.
ObjectReference
{
Kind
:
"Group"
,
Name
:
group
})
impersonationRequests
=
append
(
impersonationRequests
,
v1
.
ObjectReference
{
Kind
:
"Group"
,
Name
:
group
})
}
hasUserExtra
:=
false
for
headerName
,
values
:=
range
headers
{
if
!
strings
.
HasPrefix
(
headerName
,
authentication
api
.
ImpersonateUserExtraHeaderPrefix
)
{
if
!
strings
.
HasPrefix
(
headerName
,
authentication
v1
.
ImpersonateUserExtraHeaderPrefix
)
{
continue
}
hasUserExtra
=
true
extraKey
:=
strings
.
ToLower
(
headerName
[
len
(
authentication
api
.
ImpersonateUserExtraHeaderPrefix
)
:
])
extraKey
:=
strings
.
ToLower
(
headerName
[
len
(
authentication
v1
.
ImpersonateUserExtraHeaderPrefix
)
:
])
// make a separate request for each extra value they're trying to set
for
_
,
value
:=
range
values
{
impersonationRequests
=
append
(
impersonationRequests
,
api
.
ObjectReference
{
v1
.
ObjectReference
{
Kind
:
"UserExtra"
,
// we only parse out a group above, but the parsing will fail if there isn't SOME version
// using the internal version will help us fail if anyone starts using it
APIVersion
:
authentication
api
.
SchemeGroupVersion
.
String
(),
APIVersion
:
authentication
v1
.
SchemeGroupVersion
.
String
(),
Name
:
value
,
// ObjectReference doesn't have a subresource field. FieldPath is close and available, so we'll use that
// TODO fight the good fight for ObjectReference to refer to resources and subresources
...
...
staging/src/k8s.io/apiserver/pkg/registry/generic/rest/BUILD
View file @
d978f22e
...
...
@@ -28,7 +28,7 @@ go_test(
"//vendor/k8s.io/apiserver/pkg/features:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/proxy:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api
/v1
:go_default_library",
],
)
...
...
staging/src/k8s.io/apiserver/pkg/registry/generic/rest/response_checker_test.go
View file @
d978f22e
...
...
@@ -26,11 +26,11 @@ import (
"testing"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api
/v1
"
)
func
TestGenericHttpResponseChecker
(
t
*
testing
.
T
)
{
responseChecker
:=
NewGenericHttpResponseChecker
(
api
.
Resource
(
"pods"
),
"foo"
)
responseChecker
:=
NewGenericHttpResponseChecker
(
v1
.
Resource
(
"pods"
),
"foo"
)
tests
:=
[]
struct
{
resp
*
http
.
Response
expectError
bool
...
...
@@ -79,7 +79,7 @@ func TestGenericHttpResponseChecker(t *testing.T) {
}
func
TestGenericHttpResponseCheckerLimitReader
(
t
*
testing
.
T
)
{
responseChecker
:=
NewGenericHttpResponseChecker
(
api
.
Resource
(
"pods"
),
"foo"
)
responseChecker
:=
NewGenericHttpResponseChecker
(
v1
.
Resource
(
"pods"
),
"foo"
)
excessedString
:=
strings
.
Repeat
(
"a"
,
(
maxReadLength
+
10000
))
resp
:=
&
http
.
Response
{
Body
:
ioutil
.
NopCloser
(
bytes
.
NewBufferString
(
excessedString
)),
...
...
staging/src/k8s.io/apiserver/pkg/storage/BUILD
View file @
d978f22e
...
...
@@ -30,7 +30,8 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/clock:go_default_library",
],
...
...
staging/src/k8s.io/apiserver/pkg/storage/cacher_whitebox_test.go
View file @
d978f22e
...
...
@@ -24,7 +24,8 @@ import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/pkg/api/v1"
)
// verifies the cacheWatcher.process goroutine is properly cleaned up even if
...
...
@@ -39,12 +40,12 @@ func TestCacheWatcherCleanupNotBlockedByResult(t *testing.T) {
count
++
}
initEvents
:=
[]
*
watchCacheEvent
{
{
Object
:
&
api
.
Pod
{}},
{
Object
:
&
api
.
Pod
{}},
{
Object
:
&
v1
.
Pod
{}},
{
Object
:
&
v1
.
Pod
{}},
}
// set the size of the buffer of w.result to 0, so that the writes to
// w.result is blocked.
w
:=
newCacheWatcher
(
api
.
Scheme
,
0
,
0
,
initEvents
,
filter
,
forget
)
w
:=
newCacheWatcher
(
scheme
.
Scheme
,
0
,
0
,
initEvents
,
filter
,
forget
)
w
.
Stop
()
if
err
:=
wait
.
PollImmediate
(
1
*
time
.
Second
,
5
*
time
.
Second
,
func
()
(
bool
,
error
)
{
lock
.
RLock
()
...
...
staging/src/k8s.io/apiserver/pkg/storage/watch_cache_test.go
View file @
d978f22e
...
...
@@ -30,13 +30,13 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api
/v1
"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/clock"
)
func
makeTestPod
(
name
string
,
resourceVersion
uint64
)
*
api
.
Pod
{
return
&
api
.
Pod
{
func
makeTestPod
(
name
string
,
resourceVersion
uint64
)
*
v1
.
Pod
{
return
&
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
"ns"
,
Name
:
name
,
...
...
@@ -99,7 +99,7 @@ func TestWatchCacheBasic(t *testing.T) {
{
podNames
:=
sets
.
String
{}
for
_
,
item
:=
range
store
.
List
()
{
podNames
.
Insert
(
item
.
(
*
storeElement
)
.
Object
.
(
*
api
.
Pod
)
.
ObjectMeta
.
Name
)
podNames
.
Insert
(
item
.
(
*
storeElement
)
.
Object
.
(
*
v1
.
Pod
)
.
ObjectMeta
.
Name
)
}
if
!
podNames
.
HasAll
(
"pod1"
,
"pod2"
,
"pod3"
)
{
t
.
Errorf
(
"missing pods, found %v"
,
podNames
)
...
...
@@ -117,7 +117,7 @@ func TestWatchCacheBasic(t *testing.T) {
{
podNames
:=
sets
.
String
{}
for
_
,
item
:=
range
store
.
List
()
{
podNames
.
Insert
(
item
.
(
*
storeElement
)
.
Object
.
(
*
api
.
Pod
)
.
ObjectMeta
.
Name
)
podNames
.
Insert
(
item
.
(
*
storeElement
)
.
Object
.
(
*
v1
.
Pod
)
.
ObjectMeta
.
Name
)
}
if
!
podNames
.
HasAll
(
"pod4"
,
"pod5"
)
{
t
.
Errorf
(
"missing pods, found %v"
,
podNames
)
...
...
@@ -349,10 +349,10 @@ func TestReflectorForWatchCache(t *testing.T) {
return
fw
,
nil
},
ListFunc
:
func
(
options
metav1
.
ListOptions
)
(
runtime
.
Object
,
error
)
{
return
&
api
.
PodList
{
ListMeta
:
metav1
.
ListMeta
{
ResourceVersion
:
"10"
}},
nil
return
&
v1
.
PodList
{
ListMeta
:
metav1
.
ListMeta
{
ResourceVersion
:
"10"
}},
nil
},
}
r
:=
cache
.
NewReflector
(
lw
,
&
api
.
Pod
{},
store
,
0
)
r
:=
cache
.
NewReflector
(
lw
,
&
v1
.
Pod
{},
store
,
0
)
r
.
ListAndWatch
(
wait
.
NeverStop
)
{
...
...
staging/src/k8s.io/apiserver/pkg/util/webhook/BUILD
View file @
d978f22e
...
...
@@ -34,8 +34,9 @@ go_test(
tags = ["automanaged"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/
pkg/api
:go_default_library",
"//vendor/k8s.io/client-go/
kubernetes/scheme
:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library",
],
...
...
staging/src/k8s.io/apiserver/pkg/util/webhook/webhook_test.go
View file @
d978f22e
...
...
@@ -32,8 +32,9 @@ import (
"time"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/
pkg/api
"
"k8s.io/client-go/
kubernetes/scheme
"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd/api/v1"
)
...
...
@@ -73,7 +74,8 @@ var (
func
TestDisabledGroupVersion
(
t
*
testing
.
T
)
{
gv
:=
schema
.
GroupVersion
{
Group
:
"webhook.util.k8s.io"
,
Version
:
"v1"
}
gvs
:=
[]
schema
.
GroupVersion
{
gv
}
_
,
err
:=
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
"/some/path"
,
gvs
,
retryBackoff
)
registry
:=
registered
.
NewOrDie
(
gv
.
String
())
_
,
err
:=
NewGenericWebhook
(
registry
,
scheme
.
Codecs
,
"/some/path"
,
gvs
,
retryBackoff
)
if
err
==
nil
{
t
.
Errorf
(
"expected an error"
)
...
...
@@ -270,7 +272,7 @@ func TestKubeConfigFile(t *testing.T) {
if
err
==
nil
{
defer
os
.
Remove
(
kubeConfigFile
)
_
,
err
=
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
kubeConfigFile
,
groupVersions
,
retryBackoff
)
_
,
err
=
NewGenericWebhook
(
registered
.
NewOrDie
(
""
),
scheme
.
Codecs
,
kubeConfigFile
,
groupVersions
,
retryBackoff
)
}
return
err
...
...
@@ -293,7 +295,7 @@ func TestKubeConfigFile(t *testing.T) {
// TestMissingKubeConfigFile ensures that a kube config path to a missing file is handled properly
func
TestMissingKubeConfigFile
(
t
*
testing
.
T
)
{
kubeConfigPath
:=
"/some/missing/path"
_
,
err
:=
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
kubeConfigPath
,
groupVersions
,
retryBackoff
)
_
,
err
:=
NewGenericWebhook
(
registered
.
NewOrDie
(
""
),
scheme
.
Codecs
,
kubeConfigPath
,
groupVersions
,
retryBackoff
)
if
err
==
nil
{
t
.
Errorf
(
"creating the webhook should had failed"
)
...
...
@@ -405,7 +407,7 @@ func TestTLSConfig(t *testing.T) {
defer
os
.
Remove
(
configFile
)
wh
,
err
:=
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
configFile
,
groupVersions
,
retryBackoff
)
wh
,
err
:=
NewGenericWebhook
(
registered
.
NewOrDie
(
""
),
scheme
.
Codecs
,
configFile
,
groupVersions
,
retryBackoff
)
if
err
==
nil
{
err
=
wh
.
RestClient
.
Get
()
.
Do
()
.
Error
()
...
...
@@ -497,7 +499,7 @@ func TestWithExponentialBackoff(t *testing.T) {
defer
os
.
Remove
(
configFile
)
wh
,
err
:=
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
configFile
,
groupVersions
,
retryBackoff
)
wh
,
err
:=
NewGenericWebhook
(
registered
.
NewOrDie
(
""
),
scheme
.
Codecs
,
configFile
,
groupVersions
,
retryBackoff
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to create the webhook: %v"
,
err
)
...
...
staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/BUILD
View file @
d978f22e
...
...
@@ -29,14 +29,14 @@ go_library(
srcs = ["webhook.go"],
tags = ["automanaged"],
deps = [
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/authenticator:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/cache:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/webhook:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authentication/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library",
],
)
staging/src/k8s.io/apiserver/plugin/pkg/authenticator/token/webhook/webhook.go
View file @
d978f22e
...
...
@@ -18,18 +18,18 @@ limitations under the License.
package
webhook
import
(
"fmt"
"time"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/authentication/authenticator"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/util/cache"
"k8s.io/apiserver/pkg/util/webhook"
"k8s.io/client-go/kubernetes/scheme"
authenticationclient
"k8s.io/client-go/kubernetes/typed/authentication/v1beta1"
"k8s.io/client-go/pkg/api"
authentication
"k8s.io/client-go/pkg/apis/authentication/v1beta1"
_
"k8s.io/client-go/pkg/apis/authentication/install"
)
var
(
...
...
@@ -109,11 +109,24 @@ func (w *WebhookTokenAuthenticator) AuthenticateToken(token string) (user.Info,
},
true
,
nil
}
// NOTE: client-go doesn't provide a registry. client-go does registers the
// authentication/v1beta1. We construct a registry that acknowledges
// authentication/v1beta1 as an enabled version to pass a check enforced in
// NewGenericWebhook.
var
registry
=
registered
.
NewOrDie
(
""
)
func
init
()
{
registry
.
RegisterVersions
(
groupVersions
)
if
err
:=
registry
.
EnableVersions
(
groupVersions
...
);
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"failed to enable version %v"
,
groupVersions
))
}
}
// tokenReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
// and returns a TokenReviewInterface that uses that client. Note that the client submits TokenReview
// requests to the exact path specified in the kubeconfig file, so arbitrary non-API servers can be targeted.
func
tokenReviewInterfaceFromKubeconfig
(
kubeConfigFile
string
)
(
authenticationclient
.
TokenReviewInterface
,
error
)
{
gw
,
err
:=
webhook
.
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
kubeConfigFile
,
groupVersions
,
0
)
gw
,
err
:=
webhook
.
NewGenericWebhook
(
registry
,
scheme
.
Codecs
,
kubeConfigFile
,
groupVersions
,
0
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/BUILD
View file @
d978f22e
...
...
@@ -32,12 +32,13 @@ go_library(
tags = ["automanaged"],
deps = [
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/cache:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/webhook:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authorization/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library",
],
...
...
staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go
View file @
d978f22e
...
...
@@ -19,16 +19,18 @@ package webhook
import
(
"encoding/json"
"fmt"
"time"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apiserver/pkg/authorization/authorizer"
"k8s.io/apiserver/pkg/util/cache"
"k8s.io/apiserver/pkg/util/webhook"
"k8s.io/client-go/kubernetes/scheme"
authorizationclient
"k8s.io/client-go/kubernetes/typed/authorization/v1beta1"
"k8s.io/client-go/pkg/api"
authorization
"k8s.io/client-go/pkg/apis/authorization/v1beta1"
_
"k8s.io/client-go/pkg/apis/authorization/install"
...
...
@@ -207,11 +209,24 @@ func convertToSARExtra(extra map[string][]string) map[string]authorization.Extra
return
ret
}
// NOTE: client-go doesn't provide a registry. client-go does registers the
// authorization/v1beta1. We construct a registry that acknowledges
// authorization/v1beta1 as an enabled version to pass a check enforced in
// NewGenericWebhook.
var
registry
=
registered
.
NewOrDie
(
""
)
func
init
()
{
registry
.
RegisterVersions
(
groupVersions
)
if
err
:=
registry
.
EnableVersions
(
groupVersions
...
);
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"failed to enable version %v"
,
groupVersions
))
}
}
// subjectAccessReviewInterfaceFromKubeconfig builds a client from the specified kubeconfig file,
// and returns a SubjectAccessReviewInterface that uses that client. Note that the client submits SubjectAccessReview
// requests to the exact path specified in the kubeconfig file, so arbitrary non-API servers can be targeted.
func
subjectAccessReviewInterfaceFromKubeconfig
(
kubeConfigFile
string
)
(
authorizationclient
.
SubjectAccessReviewInterface
,
error
)
{
gw
,
err
:=
webhook
.
NewGenericWebhook
(
api
.
Registry
,
api
.
Codecs
,
kubeConfigFile
,
groupVersions
,
0
)
gw
,
err
:=
webhook
.
NewGenericWebhook
(
registry
,
scheme
.
Codecs
,
kubeConfigFile
,
groupVersions
,
0
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
staging/src/k8s.io/client-go/kubernetes/BUILD
View file @
d978f22e
...
...
@@ -12,7 +12,6 @@ go_library(
srcs = [
"clientset.go",
"doc.go",
"import_known_versions.go",
],
tags = ["automanaged"],
deps = [
...
...
@@ -36,19 +35,6 @@ go_library(
"//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/apps/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authentication/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/authorization/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/autoscaling/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/batch/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/certificates/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/extensions/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/policy/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/rbac/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/settings/install:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/storage/install:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
],
...
...
staging/src/k8s.io/client-go/kubernetes/import_known_versions.go
deleted
100644 → 0
View file @
2689f033
/*
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
kubernetes
// These imports are the API groups the client will support.
import
(
"fmt"
"k8s.io/client-go/pkg/api"
_
"k8s.io/client-go/pkg/api/install"
_
"k8s.io/client-go/pkg/apis/apps/install"
_
"k8s.io/client-go/pkg/apis/authentication/install"
_
"k8s.io/client-go/pkg/apis/authorization/install"
_
"k8s.io/client-go/pkg/apis/autoscaling/install"
_
"k8s.io/client-go/pkg/apis/batch/install"
_
"k8s.io/client-go/pkg/apis/certificates/install"
_
"k8s.io/client-go/pkg/apis/extensions/install"
_
"k8s.io/client-go/pkg/apis/policy/install"
_
"k8s.io/client-go/pkg/apis/rbac/install"
_
"k8s.io/client-go/pkg/apis/settings/install"
_
"k8s.io/client-go/pkg/apis/storage/install"
)
func
init
()
{
if
missingVersions
:=
api
.
Registry
.
ValidateEnvRequestedVersions
();
len
(
missingVersions
)
!=
0
{
panic
(
fmt
.
Sprintf
(
"KUBE_API_VERSIONS contains versions that are not installed: %q."
,
missingVersions
))
}
}
staging/src/k8s.io/client-go/pkg/apis/authentication/v1/types.go
View file @
d978f22e
...
...
@@ -22,6 +22,21 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
// ImpersonateUserHeader is used to impersonate a particular user during an API server request
ImpersonateUserHeader
=
"Impersonate-User"
// ImpersonateGroupHeader is used to impersonate a particular group during an API server request.
// It can be repeated multiplied times for multiple groups.
ImpersonateGroupHeader
=
"Impersonate-Group"
// ImpersonateUserExtraHeaderPrefix is a prefix for any header used to impersonate an entry in the
// extra map[string][]string for user.Info. The key will be every after the prefix.
// It can be repeated multiplied times for multiple map keys and the same key can be repeated multiple
// times to have multiple elements in the slice under a single key
ImpersonateUserExtraHeaderPrefix
=
"Impersonate-Extra-"
)
// +genclient=true
// +nonNamespaced=true
// +noMethods=true
...
...
staging/src/k8s.io/client-go/rest/BUILD
View file @
d978f22e
...
...
@@ -29,15 +29,16 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/labels: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/runtime/serializer/streaming:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/install:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1:go_default_library",
"//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
"//vendor/k8s.io/client-go/util/clock:go_default_library",
...
...
staging/src/k8s.io/client-go/rest/client_test.go
View file @
d978f22e
...
...
@@ -30,14 +30,13 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/s
chema
"
"k8s.io/apimachinery/pkg/runtime/s
erializer
"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/client-go/
pkg/api
"
"k8s.io/client-go/
kubernetes/scheme
"
"k8s.io/client-go/pkg/api/v1"
v1beta1
"k8s.io/client-go/pkg/apis/extensions/v1beta1"
utiltesting
"k8s.io/client-go/util/testing"
_
"k8s.io/client-go/pkg/api/install"
)
type
TestParam
struct
{
...
...
@@ -50,12 +49,13 @@ type TestParam struct {
testBodyErrorIsNotNil
bool
}
// TestSerializer makes sure that you're always able to decode
an unversioned API object
// TestSerializer makes sure that you're always able to decode
metav1.Status
func
TestSerializer
(
t
*
testing
.
T
)
{
gv
:=
v1beta1
.
SchemeGroupVersion
contentConfig
:=
ContentConfig
{
ContentType
:
"application/json"
,
GroupVersion
:
&
schema
.
GroupVersion
{
Group
:
"other"
,
Version
:
runtime
.
APIVersionInternal
}
,
NegotiatedSerializer
:
api
.
Codecs
,
GroupVersion
:
&
gv
,
NegotiatedSerializer
:
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
,
}
serializer
,
err
:=
createSerializers
(
contentConfig
)
...
...
@@ -93,7 +93,7 @@ func TestDoRequestFailed(t *testing.T) {
Message
:
"
\"\"
not found"
,
Details
:
&
metav1
.
StatusDetails
{},
}
expectedBody
,
_
:=
runtime
.
Encode
(
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
expectedBody
,
_
:=
runtime
.
Encode
(
scheme
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
fakeHandler
:=
utiltesting
.
FakeHandler
{
StatusCode
:
404
,
ResponseBody
:
string
(
expectedBody
),
...
...
@@ -132,7 +132,7 @@ func TestDoRawRequestFailed(t *testing.T) {
},
},
}
expectedBody
,
_
:=
runtime
.
Encode
(
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
expectedBody
,
_
:=
runtime
.
Encode
(
scheme
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
fakeHandler
:=
utiltesting
.
FakeHandler
{
StatusCode
:
404
,
ResponseBody
:
string
(
expectedBody
),
...
...
@@ -231,12 +231,13 @@ func validate(testParam TestParam, t *testing.T, body []byte, fakeHandler *utilt
t
.
Errorf
(
"Expected object not to be created"
)
}
}
statusOut
,
err
:=
runtime
.
Decode
(
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
body
)
statusOut
,
err
:=
runtime
.
Decode
(
scheme
.
Codecs
.
UniversalDeserializer
(
),
body
)
if
testParam
.
testBody
{
if
testParam
.
testBodyErrorIsNotNil
{
if
err
==
nil
{
t
.
Errorf
(
"Expected Error"
)
}
if
testParam
.
testBodyErrorIsNotNil
&&
err
==
nil
{
t
.
Errorf
(
"Expected Error"
)
}
if
!
testParam
.
testBodyErrorIsNotNil
&&
err
!=
nil
{
t
.
Errorf
(
"Unexpected Error: %v"
,
err
)
}
}
...
...
@@ -245,7 +246,7 @@ func validate(testParam TestParam, t *testing.T, body []byte, fakeHandler *utilt
t
.
Errorf
(
"Unexpected mis-match. Expected %#v. Saw %#v"
,
testParam
.
expStatus
,
statusOut
)
}
}
fakeHandler
.
ValidateRequest
(
t
,
"/"
+
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
.
String
()
+
"/test"
,
"GET"
,
nil
)
fakeHandler
.
ValidateRequest
(
t
,
"/"
+
v1
.
Scheme
GroupVersion
.
String
()
+
"/test"
,
"GET"
,
nil
)
}
...
...
@@ -317,8 +318,8 @@ func TestCreateBackoffManager(t *testing.T) {
}
func
testServerEnv
(
t
*
testing
.
T
,
statusCode
int
)
(
*
httptest
.
Server
,
*
utiltesting
.
FakeHandler
,
*
metav1
.
Status
)
{
status
:=
&
metav1
.
Status
{
Status
:
fmt
.
Sprintf
(
"%s"
,
metav1
.
StatusSuccess
)}
expectedBody
,
_
:=
runtime
.
Encode
(
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
status
:=
&
metav1
.
Status
{
TypeMeta
:
metav1
.
TypeMeta
{
APIVersion
:
"v1"
,
Kind
:
"Status"
},
Status
:
fmt
.
Sprintf
(
"%s"
,
metav1
.
StatusSuccess
)}
expectedBody
,
_
:=
runtime
.
Encode
(
scheme
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
status
)
fakeHandler
:=
utiltesting
.
FakeHandler
{
StatusCode
:
statusCode
,
ResponseBody
:
string
(
expectedBody
),
...
...
@@ -332,8 +333,8 @@ func restClient(testServer *httptest.Server) (*RESTClient, error) {
c
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
testServer
.
URL
,
ContentConfig
:
ContentConfig
{
GroupVersion
:
&
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
,
NegotiatedSerializer
:
api
.
Codecs
,
GroupVersion
:
&
v1
.
Scheme
GroupVersion
,
NegotiatedSerializer
:
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
,
},
Username
:
"user"
,
Password
:
"pass"
,
...
...
staging/src/k8s.io/client-go/rest/config_test.go
View file @
d978f22e
...
...
@@ -29,12 +29,12 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/pkg/api/v1"
clientcmdapi
"k8s.io/client-go/tools/clientcmd/api"
"k8s.io/client-go/util/flowcontrol"
"github.com/stretchr/testify/assert"
_
"k8s.io/client-go/pkg/api/install"
)
func
TestIsConfigTransportTLS
(
t
*
testing
.
T
)
{
...
...
@@ -139,13 +139,13 @@ func TestDefaultKubernetesUserAgent(t *testing.T) {
}
func
TestRESTClientRequires
(
t
*
testing
.
T
)
{
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
NegotiatedSerializer
:
api
.
Codecs
}});
err
==
nil
{
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
NegotiatedSerializer
:
scheme
.
Codecs
}});
err
==
nil
{
t
.
Errorf
(
"unexpected non-error"
)
}
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
GroupVersion
:
&
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
}});
err
==
nil
{
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
GroupVersion
:
&
v1
.
Scheme
GroupVersion
}});
err
==
nil
{
t
.
Errorf
(
"unexpected non-error"
)
}
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
GroupVersion
:
&
api
.
Registry
.
GroupOrDie
(
api
.
GroupName
)
.
GroupVersion
,
NegotiatedSerializer
:
api
.
Codecs
}});
err
!=
nil
{
if
_
,
err
:=
RESTClientFor
(
&
Config
{
Host
:
"127.0.0.1"
,
ContentConfig
:
ContentConfig
{
GroupVersion
:
&
v1
.
SchemeGroupVersion
,
NegotiatedSerializer
:
scheme
.
Codecs
}});
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
}
...
...
staging/src/k8s.io/client-go/rest/request_test.go
View file @
d978f22e
This diff is collapsed.
Click to expand it.
staging/src/k8s.io/client-go/rest/watch/BUILD
View file @
d978f22e
...
...
@@ -34,11 +34,12 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/install:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1:go_default_library",
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
],
...
...
staging/src/k8s.io/client-go/rest/watch/decoder_test.go
View file @
d978f22e
...
...
@@ -25,28 +25,35 @@ import (
apiequality
"k8s.io/apimachinery/pkg/api/equality"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
runtimejson
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/
pkg/api
"
"k8s.io/client-go/
kubernetes/scheme
"
"k8s.io/client-go/pkg/api/v1"
restclientwatch
"k8s.io/client-go/rest/watch"
_
"k8s.io/client-go/pkg/api/install"
)
// getDecoder mimics how k8s.io/client-go/rest.createSerializers creates a decoder
func
getDecoder
()
runtime
.
Decoder
{
jsonSerializer
:=
runtimejson
.
NewSerializer
(
runtimejson
.
DefaultMetaFactory
,
scheme
.
Scheme
,
scheme
.
Scheme
,
false
)
directCodecFactory
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
return
directCodecFactory
.
DecoderToVersion
(
jsonSerializer
,
v1
.
SchemeGroupVersion
)
}
func
TestDecoder
(
t
*
testing
.
T
)
{
table
:=
[]
watch
.
EventType
{
watch
.
Added
,
watch
.
Deleted
,
watch
.
Modified
,
watch
.
Error
}
for
_
,
eventType
:=
range
table
{
out
,
in
:=
io
.
Pipe
()
codec
:=
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
)
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
out
,
codec
),
codec
)
expect
:=
&
api
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}}
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
out
,
getDecoder
()),
getDecoder
())
expect
:=
&
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}}
encoder
:=
json
.
NewEncoder
(
in
)
go
func
()
{
data
,
err
:=
runtime
.
Encode
(
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
expect
)
data
,
err
:=
runtime
.
Encode
(
scheme
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
expect
)
if
err
!=
nil
{
t
.
Fatalf
(
"Unexpected error %v"
,
err
)
}
...
...
@@ -93,8 +100,7 @@ func TestDecoder(t *testing.T) {
func
TestDecoder_SourceClose
(
t
*
testing
.
T
)
{
out
,
in
:=
io
.
Pipe
()
codec
:=
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
)
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
out
,
codec
),
codec
)
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
out
,
getDecoder
()),
getDecoder
())
done
:=
make
(
chan
struct
{})
...
...
staging/src/k8s.io/client-go/rest/watch/encoder_test.go
View file @
d978f22e
...
...
@@ -24,49 +24,51 @@ import (
apiequality
"k8s.io/apimachinery/pkg/api/equality"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
runtimejson
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/
pkg/api
"
"k8s.io/client-go/
kubernetes/scheme
"
"k8s.io/client-go/pkg/api/v1"
restclientwatch
"k8s.io/client-go/rest/watch"
_
"k8s.io/client-go/pkg/api/install"
)
// getEncoder mimics how k8s.io/client-go/rest.createSerializers creates a encoder
func
getEncoder
()
runtime
.
Encoder
{
jsonSerializer
:=
runtimejson
.
NewSerializer
(
runtimejson
.
DefaultMetaFactory
,
scheme
.
Scheme
,
scheme
.
Scheme
,
false
)
directCodecFactory
:=
serializer
.
DirectCodecFactory
{
CodecFactory
:
scheme
.
Codecs
}
return
directCodecFactory
.
EncoderForVersion
(
jsonSerializer
,
v1
.
SchemeGroupVersion
)
}
func
TestEncodeDecodeRoundTrip
(
t
*
testing
.
T
)
{
testCases
:=
[]
struct
{
Type
watch
.
EventType
Object
runtime
.
Object
Codec
runtime
.
Codec
}{
{
watch
.
Added
,
&
api
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
&
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
},
{
watch
.
Modified
,
&
api
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
&
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
},
{
watch
.
Deleted
,
&
api
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
api
.
Codecs
.
LegacyCodec
(
v1
.
SchemeGroupVersion
),
&
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"foo"
}},
},
}
for
i
,
testCase
:=
range
testCases
{
buf
:=
&
bytes
.
Buffer
{}
codec
:=
testCase
.
Codec
encoder
:=
restclientwatch
.
NewEncoder
(
streaming
.
NewEncoder
(
buf
,
codec
),
codec
)
encoder
:=
restclientwatch
.
NewEncoder
(
streaming
.
NewEncoder
(
buf
,
getEncoder
()),
getEncoder
())
if
err
:=
encoder
.
Encode
(
&
watch
.
Event
{
Type
:
testCase
.
Type
,
Object
:
testCase
.
Object
});
err
!=
nil
{
t
.
Errorf
(
"%d: unexpected error: %v"
,
i
,
err
)
continue
}
rc
:=
ioutil
.
NopCloser
(
buf
)
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
rc
,
codec
),
codec
)
decoder
:=
restclientwatch
.
NewDecoder
(
streaming
.
NewDecoder
(
rc
,
getDecoder
()),
getDecoder
()
)
event
,
obj
,
err
:=
decoder
.
Decode
()
if
err
!=
nil
{
t
.
Errorf
(
"%d: unexpected error: %v"
,
i
,
err
)
...
...
staging/src/k8s.io/client-go/tools/record/BUILD
View file @
d978f22e
...
...
@@ -22,8 +22,7 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/install:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1/ref:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
...
...
staging/src/k8s.io/client-go/tools/record/event_test.go
View file @
d978f22e
...
...
@@ -29,8 +29,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
k8sruntime
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/pkg/api"
_
"k8s.io/client-go/pkg/api/install"
// To register api.Pod used in tests below
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/pkg/api/v1/ref"
restclient
"k8s.io/client-go/rest"
...
...
@@ -120,8 +119,8 @@ func TestEventf(t *testing.T) {
UID
:
"differentUid"
,
},
}
testRef
,
err
:=
ref
.
GetPartialReference
(
api
.
Scheme
,
testPod
,
"spec.containers[2]"
)
testRef2
,
err
:=
ref
.
GetPartialReference
(
api
.
Scheme
,
testPod2
,
"spec.containers[3]"
)
testRef
,
err
:=
ref
.
GetPartialReference
(
scheme
.
Scheme
,
testPod
,
"spec.containers[2]"
)
testRef2
,
err
:=
ref
.
GetPartialReference
(
scheme
.
Scheme
,
testPod2
,
"spec.containers[3]"
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
@@ -376,7 +375,7 @@ func TestEventf(t *testing.T) {
}
func
recorderWithFakeClock
(
eventSource
v1
.
EventSource
,
eventBroadcaster
EventBroadcaster
,
clock
clock
.
Clock
)
EventRecorder
{
return
&
recorderImpl
{
api
.
Scheme
,
eventSource
,
eventBroadcaster
.
(
*
eventBroadcasterImpl
)
.
Broadcaster
,
clock
}
return
&
recorderImpl
{
scheme
.
Scheme
,
eventSource
,
eventBroadcaster
.
(
*
eventBroadcasterImpl
)
.
Broadcaster
,
clock
}
}
func
TestWriteEventError
(
t
*
testing
.
T
)
{
...
...
@@ -497,7 +496,7 @@ func TestLotsOfEvents(t *testing.T) {
logWatcher
:=
eventBroadcaster
.
StartLogging
(
func
(
formatter
string
,
args
...
interface
{})
{
loggerCalled
<-
struct
{}{}
})
recorder
:=
eventBroadcaster
.
NewRecorder
(
api
.
Scheme
,
v1
.
EventSource
{
Component
:
"eventTest"
})
recorder
:=
eventBroadcaster
.
NewRecorder
(
scheme
.
Scheme
,
v1
.
EventSource
{
Component
:
"eventTest"
})
ref
:=
&
v1
.
ObjectReference
{
Kind
:
"Pod"
,
Name
:
"foo"
,
...
...
@@ -532,7 +531,7 @@ func TestEventfNoNamespace(t *testing.T) {
UID
:
"bar"
,
},
}
testRef
,
err
:=
ref
.
GetPartialReference
(
api
.
Scheme
,
testPod
,
"spec.containers[2]"
)
testRef
,
err
:=
ref
.
GetPartialReference
(
scheme
.
Scheme
,
testPod
,
"spec.containers[2]"
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
@@ -638,8 +637,8 @@ func TestMultiSinkCache(t *testing.T) {
UID
:
"differentUid"
,
},
}
testRef
,
err
:=
ref
.
GetPartialReference
(
api
.
Scheme
,
testPod
,
"spec.containers[2]"
)
testRef2
,
err
:=
ref
.
GetPartialReference
(
api
.
Scheme
,
testPod2
,
"spec.containers[3]"
)
testRef
,
err
:=
ref
.
GetPartialReference
(
scheme
.
Scheme
,
testPod
,
"spec.containers[2]"
)
testRef2
,
err
:=
ref
.
GetPartialReference
(
scheme
.
Scheme
,
testPod2
,
"spec.containers[3]"
)
if
err
!=
nil
{
t
.
Fatal
(
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