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
08c2cba2
Commit
08c2cba2
authored
Dec 17, 2015
by
Abhi Shah
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #18874 from ArtfulCoder/revert18442
Reverting 18442
parents
cbcb3c04
6f638751
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
71 additions
and
145 deletions
+71
-145
install_test.go
pkg/api/install/install_test.go
+1
-1
interfaces.go
pkg/api/meta/interfaces.go
+3
-14
restmapper.go
pkg/api/meta/restmapper.go
+0
-0
restmapper_test.go
pkg/api/meta/restmapper_test.go
+0
-0
group_version.go
pkg/api/unversioned/group_version.go
+0
-4
install_test.go
pkg/apis/componentconfig/install/install_test.go
+1
-1
install_test.go
pkg/apis/extensions/install/install_test.go
+1
-1
scale.go
pkg/client/unversioned/scale.go
+4
-13
fixture.go
pkg/client/unversioned/testclient/fixture.go
+7
-7
explain.go
pkg/kubectl/cmd/explain.go
+1
-1
rollingupdate.go
pkg/kubectl/cmd/rollingupdate.go
+3
-3
factory.go
pkg/kubectl/cmd/util/factory.go
+5
-1
explain.go
pkg/kubectl/explain.go
+1
-1
kubectl.go
pkg/kubectl/kubectl.go
+20
-21
builder.go
pkg/kubectl/resource/builder.go
+2
-3
resource_printer.go
pkg/kubectl/resource_printer.go
+6
-19
codec.go
pkg/registry/thirdpartyresourcedata/codec.go
+7
-47
codec_test.go
pkg/registry/thirdpartyresourcedata/codec_test.go
+2
-2
admission.go
plugin/pkg/admission/namespace/autoprovision/admission.go
+2
-2
admission.go
plugin/pkg/admission/namespace/exists/admission.go
+2
-2
admission.go
plugin/pkg/admission/namespace/lifecycle/admission.go
+3
-2
No files found.
pkg/api/install/install_test.go
View file @
08c2cba2
...
@@ -78,7 +78,7 @@ func TestRESTMapper(t *testing.T) {
...
@@ -78,7 +78,7 @@ func TestRESTMapper(t *testing.T) {
rcGVK
:=
gv
.
WithKind
(
"ReplicationController"
)
rcGVK
:=
gv
.
WithKind
(
"ReplicationController"
)
podTemplateGVK
:=
gv
.
WithKind
(
"PodTemplate"
)
podTemplateGVK
:=
gv
.
WithKind
(
"PodTemplate"
)
if
gvk
,
err
:=
latest
.
GroupOrDie
(
internal
.
GroupName
)
.
RESTMapper
.
KindFor
(
internal
.
SchemeGroupVersion
.
WithResource
(
"replicationcontrollers"
)
);
err
!=
nil
||
gvk
!=
rcGVK
{
if
gvk
,
err
:=
latest
.
GroupOrDie
(
internal
.
GroupName
)
.
RESTMapper
.
KindFor
(
"replicationcontrollers"
);
err
!=
nil
||
gvk
!=
rcGVK
{
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
}
}
...
...
pkg/api/meta/interfaces.go
View file @
08c2cba2
...
@@ -158,23 +158,12 @@ type RESTMapping struct {
...
@@ -158,23 +158,12 @@ type RESTMapping struct {
// TODO(caesarxuchao): Add proper multi-group support so that kinds & resources are
// TODO(caesarxuchao): Add proper multi-group support so that kinds & resources are
// scoped to groups. See http://issues.k8s.io/12413 and http://issues.k8s.io/10009.
// scoped to groups. See http://issues.k8s.io/12413 and http://issues.k8s.io/10009.
type
RESTMapper
interface
{
type
RESTMapper
interface
{
// KindFor takes a partial resource and returns back the single match. Returns an error if there are multiple matches
// KindFor takes a resource and returns back the unambiguous Kind (GroupVersionKind)
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionKind
,
error
)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
// KindsFor takes a partial resource and returns back the list of potential kinds in priority order
KindsFor
(
resource
unversioned
.
GroupVersionResource
)
([]
unversioned
.
GroupVersionKind
,
error
)
// ResourceFor takes a partial resource and returns back the single match. Returns an error if there are multiple matches
ResourceFor
(
input
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionResource
,
error
)
// ResourcesFor takes a partial resource and returns back the list of potential resource in priority order
ResourcesFor
(
input
unversioned
.
GroupVersionResource
)
([]
unversioned
.
GroupVersionResource
,
error
)
RESTMapping
(
gk
unversioned
.
GroupKind
,
versions
...
string
)
(
*
RESTMapping
,
error
)
RESTMapping
(
gk
unversioned
.
GroupKind
,
versions
...
string
)
(
*
RESTMapping
,
error
)
AliasesForResource
(
resource
string
)
([]
string
,
bool
)
AliasesForResource
(
resource
string
)
([]
string
,
bool
)
ResourceSingularizer
(
resource
string
)
(
singular
string
,
err
error
)
ResourceSingularizer
(
resource
string
)
(
singular
string
,
err
error
)
ResourceIsValid
(
resource
string
)
bool
// ResourceIsValid takes a partial resource and returns back whether or not the resource matches at least one kind
ResourceIsValid
(
resource
unversioned
.
GroupVersionResource
)
bool
}
}
pkg/api/meta/restmapper.go
View file @
08c2cba2
This diff is collapsed.
Click to expand it.
pkg/api/meta/restmapper_test.go
View file @
08c2cba2
This diff is collapsed.
Click to expand it.
pkg/api/unversioned/group_version.go
View file @
08c2cba2
...
@@ -29,10 +29,6 @@ type GroupResource struct {
...
@@ -29,10 +29,6 @@ type GroupResource struct {
Resource
string
Resource
string
}
}
func
(
gr
GroupResource
)
WithVersion
(
version
string
)
GroupVersionResource
{
return
GroupVersionResource
{
Group
:
gr
.
Group
,
Version
:
version
,
Resource
:
gr
.
Resource
}
}
func
(
gr
GroupResource
)
IsEmpty
()
bool
{
func
(
gr
GroupResource
)
IsEmpty
()
bool
{
return
len
(
gr
.
Group
)
==
0
&&
len
(
gr
.
Resource
)
==
0
return
len
(
gr
.
Group
)
==
0
&&
len
(
gr
.
Resource
)
==
0
}
}
...
...
pkg/apis/componentconfig/install/install_test.go
View file @
08c2cba2
...
@@ -57,7 +57,7 @@ func TestRESTMapper(t *testing.T) {
...
@@ -57,7 +57,7 @@ func TestRESTMapper(t *testing.T) {
gv
:=
unversioned
.
GroupVersion
{
Group
:
componentconfig
.
GroupName
,
Version
:
"v1alpha1"
}
gv
:=
unversioned
.
GroupVersion
{
Group
:
componentconfig
.
GroupName
,
Version
:
"v1alpha1"
}
proxyGVK
:=
gv
.
WithKind
(
"KubeProxyConfiguration"
)
proxyGVK
:=
gv
.
WithKind
(
"KubeProxyConfiguration"
)
if
gvk
,
err
:=
latest
.
GroupOrDie
(
componentconfig
.
GroupName
)
.
RESTMapper
.
KindFor
(
gv
.
WithResource
(
"kubeproxyconfiguration"
)
);
err
!=
nil
||
gvk
!=
proxyGVK
{
if
gvk
,
err
:=
latest
.
GroupOrDie
(
componentconfig
.
GroupName
)
.
RESTMapper
.
KindFor
(
"kubeproxyconfiguration"
);
err
!=
nil
||
gvk
!=
proxyGVK
{
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
}
}
...
...
pkg/apis/extensions/install/install_test.go
View file @
08c2cba2
...
@@ -80,7 +80,7 @@ func TestRESTMapper(t *testing.T) {
...
@@ -80,7 +80,7 @@ func TestRESTMapper(t *testing.T) {
hpaGVK
:=
gv
.
WithKind
(
"HorizontalPodAutoscaler"
)
hpaGVK
:=
gv
.
WithKind
(
"HorizontalPodAutoscaler"
)
daemonSetGVK
:=
gv
.
WithKind
(
"DaemonSet"
)
daemonSetGVK
:=
gv
.
WithKind
(
"DaemonSet"
)
if
gvk
,
err
:=
latest
.
GroupOrDie
(
extensions
.
GroupName
)
.
RESTMapper
.
KindFor
(
gv
.
WithResource
(
"horizontalpodautoscalers"
)
);
err
!=
nil
||
gvk
!=
hpaGVK
{
if
gvk
,
err
:=
latest
.
GroupOrDie
(
extensions
.
GroupName
)
.
RESTMapper
.
KindFor
(
"horizontalpodautoscalers"
);
err
!=
nil
||
gvk
!=
hpaGVK
{
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
t
.
Errorf
(
"unexpected version mapping: %v %v"
,
gvk
,
err
)
}
}
...
...
pkg/client/unversioned/scale.go
View file @
08c2cba2
...
@@ -18,7 +18,6 @@ package unversioned
...
@@ -18,7 +18,6 @@ package unversioned
import
(
import
(
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
)
)
...
@@ -49,25 +48,17 @@ func newScales(c *ExtensionsClient, namespace string) *scales {
...
@@ -49,25 +48,17 @@ func newScales(c *ExtensionsClient, namespace string) *scales {
// Get takes the reference to scale subresource and returns the subresource or error, if one occurs.
// Get takes the reference to scale subresource and returns the subresource or error, if one occurs.
func
(
c
*
scales
)
Get
(
kind
string
,
name
string
)
(
result
*
extensions
.
Scale
,
err
error
)
{
func
(
c
*
scales
)
Get
(
kind
string
,
name
string
)
(
result
*
extensions
.
Scale
,
err
error
)
{
result
=
&
extensions
.
Scale
{}
result
=
&
extensions
.
Scale
{}
resource
,
_
:=
meta
.
KindToResource
(
kind
,
false
)
// TODO this method needs to take a proper unambiguous kind
err
=
c
.
client
.
Get
()
.
Namespace
(
c
.
ns
)
.
Resource
(
resource
)
.
Name
(
name
)
.
SubResource
(
"scale"
)
.
Do
()
.
Into
(
result
)
fullyQualifiedKind
:=
unversioned
.
GroupVersionKind
{
Kind
:
kind
}
resource
,
_
:=
meta
.
KindToResource
(
fullyQualifiedKind
,
false
)
err
=
c
.
client
.
Get
()
.
Namespace
(
c
.
ns
)
.
Resource
(
resource
.
Resource
)
.
Name
(
name
)
.
SubResource
(
"scale"
)
.
Do
()
.
Into
(
result
)
return
return
}
}
func
(
c
*
scales
)
Update
(
kind
string
,
scale
*
extensions
.
Scale
)
(
result
*
extensions
.
Scale
,
err
error
)
{
func
(
c
*
scales
)
Update
(
kind
string
,
scale
*
extensions
.
Scale
)
(
result
*
extensions
.
Scale
,
err
error
)
{
result
=
&
extensions
.
Scale
{}
result
=
&
extensions
.
Scale
{}
resource
,
_
:=
meta
.
KindToResource
(
kind
,
false
)
// TODO this method needs to take a proper unambiguous kind
fullyQualifiedKind
:=
unversioned
.
GroupVersionKind
{
Kind
:
kind
}
resource
,
_
:=
meta
.
KindToResource
(
fullyQualifiedKind
,
false
)
err
=
c
.
client
.
Put
()
.
err
=
c
.
client
.
Put
()
.
Namespace
(
scale
.
Namespace
)
.
Namespace
(
scale
.
Namespace
)
.
Resource
(
resource
.
Resource
)
.
Resource
(
resource
)
.
Name
(
scale
.
Name
)
.
Name
(
scale
.
Name
)
.
SubResource
(
"scale"
)
.
SubResource
(
"scale"
)
.
Body
(
scale
)
.
Body
(
scale
)
.
...
...
pkg/client/unversioned/testclient/fixture.go
View file @
08c2cba2
...
@@ -59,7 +59,7 @@ type ObjectScheme interface {
...
@@ -59,7 +59,7 @@ type ObjectScheme interface {
func
ObjectReaction
(
o
ObjectRetriever
,
mapper
meta
.
RESTMapper
)
ReactionFunc
{
func
ObjectReaction
(
o
ObjectRetriever
,
mapper
meta
.
RESTMapper
)
ReactionFunc
{
return
func
(
action
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
return
func
(
action
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
kind
,
err
:=
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
action
.
GetResource
()}
)
gvk
,
err
:=
mapper
.
KindFor
(
action
.
GetResource
()
)
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
nil
,
fmt
.
Errorf
(
"unrecognized action %s: %v"
,
action
.
GetResource
(),
err
)
return
false
,
nil
,
fmt
.
Errorf
(
"unrecognized action %s: %v"
,
action
.
GetResource
(),
err
)
}
}
...
@@ -67,16 +67,16 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
...
@@ -67,16 +67,16 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
// TODO: have mapper return a Kind for a subresource?
// TODO: have mapper return a Kind for a subresource?
switch
castAction
:=
action
.
(
type
)
{
switch
castAction
:=
action
.
(
type
)
{
case
ListAction
:
case
ListAction
:
kind
.
Kind
+=
"List"
gvk
.
Kind
+=
"List"
resource
,
err
:=
o
.
Kind
(
kind
,
""
)
resource
,
err
:=
o
.
Kind
(
gvk
,
""
)
return
true
,
resource
,
err
return
true
,
resource
,
err
case
GetAction
:
case
GetAction
:
resource
,
err
:=
o
.
Kind
(
kind
,
castAction
.
GetName
())
resource
,
err
:=
o
.
Kind
(
gvk
,
castAction
.
GetName
())
return
true
,
resource
,
err
return
true
,
resource
,
err
case
DeleteAction
:
case
DeleteAction
:
resource
,
err
:=
o
.
Kind
(
kind
,
castAction
.
GetName
())
resource
,
err
:=
o
.
Kind
(
gvk
,
castAction
.
GetName
())
return
true
,
resource
,
err
return
true
,
resource
,
err
case
CreateAction
:
case
CreateAction
:
...
@@ -84,7 +84,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
...
@@ -84,7 +84,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
if
err
!=
nil
{
if
err
!=
nil
{
return
true
,
nil
,
err
return
true
,
nil
,
err
}
}
resource
,
err
:=
o
.
Kind
(
kind
,
meta
.
Name
)
resource
,
err
:=
o
.
Kind
(
gvk
,
meta
.
Name
)
return
true
,
resource
,
err
return
true
,
resource
,
err
case
UpdateAction
:
case
UpdateAction
:
...
@@ -92,7 +92,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
...
@@ -92,7 +92,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
if
err
!=
nil
{
if
err
!=
nil
{
return
true
,
nil
,
err
return
true
,
nil
,
err
}
}
resource
,
err
:=
o
.
Kind
(
kind
,
meta
.
Name
)
resource
,
err
:=
o
.
Kind
(
gvk
,
meta
.
Name
)
return
true
,
resource
,
err
return
true
,
resource
,
err
default
:
default
:
...
...
pkg/kubectl/cmd/explain.go
View file @
08c2cba2
...
@@ -84,7 +84,7 @@ func RunExplain(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []st
...
@@ -84,7 +84,7 @@ func RunExplain(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []st
}
}
// TODO: We should deduce the group for a resource by discovering the supported resources at server.
// TODO: We should deduce the group for a resource by discovering the supported resources at server.
gvk
,
err
:=
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
inModel
}
)
gvk
,
err
:=
mapper
.
KindFor
(
inModel
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
pkg/kubectl/cmd/rollingupdate.go
View file @
08c2cba2
...
@@ -360,12 +360,12 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
...
@@ -360,12 +360,12 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
if
outputFormat
!=
""
{
if
outputFormat
!=
""
{
return
f
.
PrintObject
(
cmd
,
newRc
,
out
)
return
f
.
PrintObject
(
cmd
,
newRc
,
out
)
}
}
kind
,
err
:=
api
.
Scheme
.
ObjectKind
(
newRc
)
gvk
,
err
:=
api
.
Scheme
.
ObjectKind
(
newRc
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
_
,
res
:=
meta
.
KindToResource
(
k
ind
,
false
)
_
,
res
:=
meta
.
KindToResource
(
gvk
.
K
ind
,
false
)
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
res
.
Resource
,
oldName
,
message
)
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
res
,
oldName
,
message
)
return
nil
return
nil
}
}
...
...
pkg/kubectl/cmd/util/factory.go
View file @
08c2cba2
...
@@ -175,12 +175,16 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
...
@@ -175,12 +175,16 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
return
clients
.
ClientConfigForVersion
(
nil
)
return
clients
.
ClientConfigForVersion
(
nil
)
},
},
RESTClient
:
func
(
mapping
*
meta
.
RESTMapping
)
(
resource
.
RESTClient
,
error
)
{
RESTClient
:
func
(
mapping
*
meta
.
RESTMapping
)
(
resource
.
RESTClient
,
error
)
{
gvk
,
err
:=
api
.
RESTMapper
.
KindFor
(
mapping
.
Resource
)
if
err
!=
nil
{
return
nil
,
err
}
mappingVersion
:=
mapping
.
GroupVersionKind
.
GroupVersion
()
mappingVersion
:=
mapping
.
GroupVersionKind
.
GroupVersion
()
client
,
err
:=
clients
.
ClientForVersion
(
&
mappingVersion
)
client
,
err
:=
clients
.
ClientForVersion
(
&
mappingVersion
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
switch
mapping
.
GroupVersionKind
.
Group
{
switch
gvk
.
Group
{
case
api
.
GroupName
:
case
api
.
GroupName
:
return
client
.
RESTClient
,
nil
return
client
.
RESTClient
,
nil
case
extensions
.
GroupName
:
case
extensions
.
GroupName
:
...
...
pkg/kubectl/explain.go
View file @
08c2cba2
...
@@ -44,7 +44,7 @@ func GetSwaggerSchema(version unversioned.GroupVersion, kubeClient client.Interf
...
@@ -44,7 +44,7 @@ func GetSwaggerSchema(version unversioned.GroupVersion, kubeClient client.Interf
// SplitAndParseResourceRequest separates the users input into a model and fields
// SplitAndParseResourceRequest separates the users input into a model and fields
func
SplitAndParseResourceRequest
(
inResource
string
,
mapper
meta
.
RESTMapper
)
(
string
,
[]
string
,
error
)
{
func
SplitAndParseResourceRequest
(
inResource
string
,
mapper
meta
.
RESTMapper
)
(
string
,
[]
string
,
error
)
{
inResource
,
fieldsPath
:=
splitDotNotation
(
inResource
)
inResource
,
fieldsPath
:=
splitDotNotation
(
inResource
)
inResource
,
_
=
mapper
.
ResourceSingularizer
(
expandResourceShortcut
(
unversioned
.
GroupVersionResource
{
Resource
:
inResource
})
.
Resource
)
inResource
,
_
=
mapper
.
ResourceSingularizer
(
expandResourceShortcut
(
inResource
)
)
return
inResource
,
fieldsPath
,
nil
return
inResource
,
fieldsPath
,
nil
}
}
...
...
pkg/kubectl/kubectl.go
View file @
08c2cba2
...
@@ -23,7 +23,6 @@ import (
...
@@ -23,7 +23,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
)
)
const
kubectlAnnotationPrefix
=
"kubectl.kubernetes.io/"
const
kubectlAnnotationPrefix
=
"kubectl.kubernetes.io/"
...
@@ -81,40 +80,40 @@ var _ meta.RESTMapper = &ShortcutExpander{}
...
@@ -81,40 +80,40 @@ var _ meta.RESTMapper = &ShortcutExpander{}
// KindFor implements meta.RESTMapper. It expands the resource first, then invokes the wrapped
// KindFor implements meta.RESTMapper. It expands the resource first, then invokes the wrapped
// mapper.
// mapper.
func
(
e
ShortcutExpander
)
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionKind
,
error
)
{
func
(
e
ShortcutExpander
)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
{
resource
=
expandResourceShortcut
(
resource
)
resource
=
expandResourceShortcut
(
resource
)
return
e
.
RESTMapper
.
KindFor
(
resource
)
return
e
.
RESTMapper
.
KindFor
(
resource
)
}
}
// ResourceIsValid takes a string (kind) and checks if it's a valid resource.
// ResourceIsValid takes a string (kind) and checks if it's a valid resource.
// It expands the resource first, then invokes the wrapped mapper.
// It expands the resource first, then invokes the wrapped mapper.
func
(
e
ShortcutExpander
)
ResourceIsValid
(
resource
unversioned
.
GroupVersionResource
)
bool
{
func
(
e
ShortcutExpander
)
ResourceIsValid
(
resource
string
)
bool
{
return
e
.
RESTMapper
.
ResourceIsValid
(
expandResourceShortcut
(
resource
))
return
e
.
RESTMapper
.
ResourceIsValid
(
expandResourceShortcut
(
resource
))
}
}
// expandResourceShortcut will return the expanded version of resource
// expandResourceShortcut will return the expanded version of resource
// (something that a pkg/api/meta.RESTMapper can understand), if it is
// (something that a pkg/api/meta.RESTMapper can understand), if it is
// indeed a shortcut. Otherwise, will return resource unmodified.
// indeed a shortcut. Otherwise, will return resource unmodified.
func
expandResourceShortcut
(
resource
unversioned
.
GroupVersionResource
)
unversioned
.
GroupVersionResource
{
func
expandResourceShortcut
(
resource
string
)
string
{
shortForms
:=
map
[
string
]
unversioned
.
GroupVersionResource
{
shortForms
:=
map
[
string
]
string
{
// Please keep this alphabetized
// Please keep this alphabetized
"cs"
:
api
.
SchemeGroupVersion
.
WithResource
(
"componentstatuses"
)
,
"cs"
:
"componentstatuses"
,
"ds"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"daemonsets"
)
,
"ds"
:
"daemonsets"
,
"ep"
:
api
.
SchemeGroupVersion
.
WithResource
(
"endpoints"
)
,
"ep"
:
"endpoints"
,
"ev"
:
api
.
SchemeGroupVersion
.
WithResource
(
"events"
)
,
"ev"
:
"events"
,
"hpa"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"horizontalpodautoscalers"
)
,
"hpa"
:
"horizontalpodautoscalers"
,
"ing"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"ingresses"
)
,
"ing"
:
"ingresses"
,
"limits"
:
api
.
SchemeGroupVersion
.
WithResource
(
"limitranges"
)
,
"limits"
:
"limitranges"
,
"no"
:
api
.
SchemeGroupVersion
.
WithResource
(
"nodes"
)
,
"no"
:
"nodes"
,
"ns"
:
api
.
SchemeGroupVersion
.
WithResource
(
"namespaces"
)
,
"ns"
:
"namespaces"
,
"po"
:
api
.
SchemeGroupVersion
.
WithResource
(
"pods"
)
,
"po"
:
"pods"
,
"pvc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"persistentvolumeclaims"
)
,
"pvc"
:
"persistentvolumeclaims"
,
"pv"
:
api
.
SchemeGroupVersion
.
WithResource
(
"persistentvolumes"
)
,
"pv"
:
"persistentvolumes"
,
"quota"
:
api
.
SchemeGroupVersion
.
WithResource
(
"resourcequotas"
)
,
"quota"
:
"resourcequotas"
,
"rc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"replicationcontrollers"
)
,
"rc"
:
"replicationcontrollers"
,
"svc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"services"
)
,
"svc"
:
"services"
,
}
}
if
expanded
,
ok
:=
shortForms
[
resource
.
Resource
];
ok
{
if
expanded
,
ok
:=
shortForms
[
resource
];
ok
{
return
expanded
return
expanded
}
}
return
resource
return
resource
...
...
pkg/kubectl/resource/builder.go
View file @
08c2cba2
...
@@ -25,7 +25,6 @@ import (
...
@@ -25,7 +25,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
...
@@ -427,7 +426,7 @@ func (b *Builder) resourceMappings() ([]*meta.RESTMapping, error) {
...
@@ -427,7 +426,7 @@ func (b *Builder) resourceMappings() ([]*meta.RESTMapping, error) {
}
}
mappings
:=
[]
*
meta
.
RESTMapping
{}
mappings
:=
[]
*
meta
.
RESTMapping
{}
for
_
,
r
:=
range
b
.
resources
{
for
_
,
r
:=
range
b
.
resources
{
gvk
,
err
:=
b
.
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
r
}
)
gvk
,
err
:=
b
.
mapper
.
KindFor
(
r
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -447,7 +446,7 @@ func (b *Builder) resourceTupleMappings() (map[string]*meta.RESTMapping, error)
...
@@ -447,7 +446,7 @@ func (b *Builder) resourceTupleMappings() (map[string]*meta.RESTMapping, error)
if
_
,
ok
:=
mappings
[
r
.
Resource
];
ok
{
if
_
,
ok
:=
mappings
[
r
.
Resource
];
ok
{
continue
continue
}
}
gvk
,
err
:=
b
.
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
r
.
Resource
}
)
gvk
,
err
:=
b
.
mapper
.
KindFor
(
r
.
Resource
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
pkg/kubectl/resource_printer.go
View file @
08c2cba2
...
@@ -203,24 +203,11 @@ type NamePrinter struct {
...
@@ -203,24 +203,11 @@ type NamePrinter struct {
// and print "resource/name" pair. If the object is a List, print all items in it.
// and print "resource/name" pair. If the object is a List, print all items in it.
func
(
p
*
NamePrinter
)
PrintObj
(
obj
runtime
.
Object
,
w
io
.
Writer
)
error
{
func
(
p
*
NamePrinter
)
PrintObj
(
obj
runtime
.
Object
,
w
io
.
Writer
)
error
{
objvalue
:=
reflect
.
ValueOf
(
obj
)
.
Elem
()
objvalue
:=
reflect
.
ValueOf
(
obj
)
.
Elem
()
kindString
:=
objvalue
.
FieldByName
(
"Kind"
)
kind
:=
objvalue
.
FieldByName
(
"Kind"
)
groupVersionString
:=
objvalue
.
FieldByName
(
"APIVersion"
)
if
!
kind
.
IsValid
()
{
kind
:=
unversioned
.
GroupVersionKind
{}
kind
=
reflect
.
ValueOf
(
"<unknown>"
)
if
!
kindString
.
IsValid
()
{
kindString
=
reflect
.
ValueOf
(
"<unknown>"
)
}
}
kind
.
Kind
=
kindString
.
String
()
if
kind
.
String
()
==
"List"
{
if
!
groupVersionString
.
IsValid
()
{
groupVersionString
=
reflect
.
ValueOf
(
"<unknown>/<unknown>"
)
}
gv
,
err
:=
unversioned
.
ParseGroupVersion
(
groupVersionString
.
String
())
if
err
!=
nil
{
kind
.
Group
=
gv
.
Group
kind
.
Version
=
gv
.
Version
}
if
kind
.
Kind
==
"List"
{
items
:=
objvalue
.
FieldByName
(
"Items"
)
items
:=
objvalue
.
FieldByName
(
"Items"
)
if
items
.
Type
()
.
String
()
==
"[]runtime.RawExtension"
{
if
items
.
Type
()
.
String
()
==
"[]runtime.RawExtension"
{
for
i
:=
0
;
i
<
items
.
Len
();
i
++
{
for
i
:=
0
;
i
<
items
.
Len
();
i
++
{
...
@@ -250,9 +237,9 @@ func (p *NamePrinter) PrintObj(obj runtime.Object, w io.Writer) error {
...
@@ -250,9 +237,9 @@ func (p *NamePrinter) PrintObj(obj runtime.Object, w io.Writer) error {
if
!
name
.
IsValid
()
{
if
!
name
.
IsValid
()
{
name
=
reflect
.
ValueOf
(
"<unknown>"
)
name
=
reflect
.
ValueOf
(
"<unknown>"
)
}
}
_
,
resource
:=
meta
.
KindToResource
(
kind
,
false
)
_
,
resource
:=
meta
.
KindToResource
(
kind
.
String
()
,
false
)
fmt
.
Fprintf
(
w
,
"%s/%s
\n
"
,
resource
.
Resource
,
name
)
fmt
.
Fprintf
(
w
,
"%s/%s
\n
"
,
resource
,
name
)
}
}
return
nil
return
nil
...
...
pkg/registry/thirdpartyresourcedata/codec.go
View file @
08c2cba2
...
@@ -41,55 +41,14 @@ type thirdPartyResourceDataMapper struct {
...
@@ -41,55 +41,14 @@ type thirdPartyResourceDataMapper struct {
var
_
meta
.
RESTMapper
=
&
thirdPartyResourceDataMapper
{}
var
_
meta
.
RESTMapper
=
&
thirdPartyResourceDataMapper
{}
func
(
t
*
thirdPartyResourceDataMapper
)
getResource
()
unversioned
.
GroupVersionResource
{
func
(
t
*
thirdPartyResourceDataMapper
)
isThirdPartyResource
(
resource
string
)
bool
{
plural
,
_
:=
meta
.
KindToResource
(
t
.
getKind
(),
false
)
plural
,
_
:=
meta
.
KindToResource
(
t
.
kind
,
false
)
return
resource
==
plural
return
plural
}
func
(
t
*
thirdPartyResourceDataMapper
)
getKind
()
unversioned
.
GroupVersionKind
{
return
unversioned
.
GroupVersionKind
{
Group
:
t
.
group
,
Version
:
t
.
version
,
Kind
:
t
.
kind
}
}
func
(
t
*
thirdPartyResourceDataMapper
)
isThirdPartyResource
(
partialResource
unversioned
.
GroupVersionResource
)
bool
{
actualResource
:=
t
.
getResource
()
if
strings
.
ToLower
(
partialResource
.
Resource
)
!=
strings
.
ToLower
(
actualResource
.
Resource
)
{
return
false
}
if
len
(
partialResource
.
Group
)
!=
0
&&
partialResource
.
Group
!=
actualResource
.
Group
{
return
false
}
if
len
(
partialResource
.
Version
)
!=
0
&&
partialResource
.
Version
!=
actualResource
.
Version
{
return
false
}
return
true
}
func
(
t
*
thirdPartyResourceDataMapper
)
ResourcesFor
(
resource
unversioned
.
GroupVersionResource
)
([]
unversioned
.
GroupVersionResource
,
error
)
{
if
t
.
isThirdPartyResource
(
resource
)
{
return
[]
unversioned
.
GroupVersionResource
{
t
.
getResource
()},
nil
}
return
t
.
mapper
.
ResourcesFor
(
resource
)
}
func
(
t
*
thirdPartyResourceDataMapper
)
KindsFor
(
resource
unversioned
.
GroupVersionResource
)
([]
unversioned
.
GroupVersionKind
,
error
)
{
if
t
.
isThirdPartyResource
(
resource
)
{
return
[]
unversioned
.
GroupVersionKind
{
t
.
getKind
()},
nil
}
return
t
.
mapper
.
KindsFor
(
resource
)
}
func
(
t
*
thirdPartyResourceDataMapper
)
ResourceFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionResource
,
error
)
{
if
t
.
isThirdPartyResource
(
resource
)
{
return
t
.
getResource
(),
nil
}
return
t
.
mapper
.
ResourceFor
(
resource
)
}
}
func
(
t
*
thirdPartyResourceDataMapper
)
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionKind
,
error
)
{
func
(
t
*
thirdPartyResourceDataMapper
)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
{
if
t
.
isThirdPartyResource
(
resource
)
{
if
t
.
isThirdPartyResource
(
resource
)
{
return
t
.
getKind
()
,
nil
return
unversioned
.
GroupVersionKind
{
Group
:
t
.
group
,
Version
:
t
.
version
,
Kind
:
t
.
kind
}
,
nil
}
}
return
t
.
mapper
.
KindFor
(
resource
)
return
t
.
mapper
.
KindFor
(
resource
)
}
}
...
@@ -127,7 +86,8 @@ func (t *thirdPartyResourceDataMapper) ResourceSingularizer(resource string) (si
...
@@ -127,7 +86,8 @@ func (t *thirdPartyResourceDataMapper) ResourceSingularizer(resource string) (si
return
t
.
mapper
.
ResourceSingularizer
(
resource
)
return
t
.
mapper
.
ResourceSingularizer
(
resource
)
}
}
func
(
t
*
thirdPartyResourceDataMapper
)
ResourceIsValid
(
resource
unversioned
.
GroupVersionResource
)
bool
{
// ResourceIsValid takes a string (kind) and checks if it's a valid resource
func
(
t
*
thirdPartyResourceDataMapper
)
ResourceIsValid
(
resource
string
)
bool
{
return
t
.
isThirdPartyResource
(
resource
)
||
t
.
mapper
.
ResourceIsValid
(
resource
)
return
t
.
isThirdPartyResource
(
resource
)
||
t
.
mapper
.
ResourceIsValid
(
resource
)
}
}
...
...
pkg/registry/thirdpartyresourcedata/codec_test.go
View file @
08c2cba2
...
@@ -212,9 +212,9 @@ func TestResourceIsValid(t *testing.T) {
...
@@ -212,9 +212,9 @@ func TestResourceIsValid(t *testing.T) {
for
_
,
test
:=
range
tests
{
for
_
,
test
:=
range
tests
{
mapper
:=
&
thirdPartyResourceDataMapper
{
kind
:
test
.
kind
}
mapper
:=
&
thirdPartyResourceDataMapper
{
kind
:
test
.
kind
}
mapper
.
mapper
=
api
.
RESTMapper
mapper
.
mapper
=
api
.
RESTMapper
valid
:=
mapper
.
ResourceIsValid
(
unversioned
.
GroupVersionResource
{
Resource
:
test
.
resource
}
)
valid
:=
mapper
.
ResourceIsValid
(
test
.
resource
)
if
valid
!=
test
.
valid
{
if
valid
!=
test
.
valid
{
t
.
Errorf
(
"
%s: expected: %v, actual: %v"
,
test
.
name
,
test
.
valid
,
valid
)
t
.
Errorf
(
"
expected: %v, saw: %v for %s"
,
test
.
valid
,
valid
,
test
.
name
)
}
}
}
}
}
}
plugin/pkg/admission/namespace/autoprovision/admission.go
View file @
08c2cba2
...
@@ -45,11 +45,11 @@ type provision struct {
...
@@ -45,11 +45,11 @@ type provision struct {
}
}
func
(
p
*
provision
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
func
(
p
*
provision
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
kind
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
WithVersion
(
""
)
)
gvk
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
Resource
)
if
err
!=
nil
{
if
err
!=
nil
{
return
admission
.
NewForbidden
(
a
,
err
)
return
admission
.
NewForbidden
(
a
,
err
)
}
}
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
kind
.
GroupKind
(),
kind
.
Version
)
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
gvk
.
GroupKind
(),
gvk
.
Version
)
if
err
!=
nil
{
if
err
!=
nil
{
return
admission
.
NewForbidden
(
a
,
err
)
return
admission
.
NewForbidden
(
a
,
err
)
}
}
...
...
plugin/pkg/admission/namespace/exists/admission.go
View file @
08c2cba2
...
@@ -46,11 +46,11 @@ type exists struct {
...
@@ -46,11 +46,11 @@ type exists struct {
}
}
func
(
e
*
exists
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
func
(
e
*
exists
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
kind
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
WithVersion
(
""
)
)
gvk
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
Resource
)
if
err
!=
nil
{
if
err
!=
nil
{
return
errors
.
NewInternalError
(
err
)
return
errors
.
NewInternalError
(
err
)
}
}
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
kind
.
GroupKind
(),
kind
.
Version
)
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
gvk
.
GroupKind
(),
gvk
.
Version
)
if
err
!=
nil
{
if
err
!=
nil
{
return
errors
.
NewInternalError
(
err
)
return
errors
.
NewInternalError
(
err
)
}
}
...
...
plugin/pkg/admission/namespace/lifecycle/admission.go
View file @
08c2cba2
...
@@ -48,16 +48,17 @@ type lifecycle struct {
...
@@ -48,16 +48,17 @@ type lifecycle struct {
}
}
func
(
l
*
lifecycle
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
func
(
l
*
lifecycle
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
// prevent deletion of immortal namespaces
// prevent deletion of immortal namespaces
if
a
.
GetOperation
()
==
admission
.
Delete
&&
a
.
GetKind
()
==
api
.
Kind
(
"Namespace"
)
&&
l
.
immortalNamespaces
.
Has
(
a
.
GetName
())
{
if
a
.
GetOperation
()
==
admission
.
Delete
&&
a
.
GetKind
()
==
api
.
Kind
(
"Namespace"
)
&&
l
.
immortalNamespaces
.
Has
(
a
.
GetName
())
{
return
errors
.
NewForbidden
(
a
.
GetResource
(),
a
.
GetName
(),
fmt
.
Errorf
(
"this namespace may not be deleted"
))
return
errors
.
NewForbidden
(
a
.
GetResource
(),
a
.
GetName
(),
fmt
.
Errorf
(
"this namespace may not be deleted"
))
}
}
kind
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
WithVersion
(
""
)
)
gvk
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
Resource
)
if
err
!=
nil
{
if
err
!=
nil
{
return
errors
.
NewInternalError
(
err
)
return
errors
.
NewInternalError
(
err
)
}
}
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
kind
.
GroupKind
(),
kind
.
Version
)
mapping
,
err
:=
api
.
RESTMapper
.
RESTMapping
(
gvk
.
GroupKind
(),
gvk
.
Version
)
if
err
!=
nil
{
if
err
!=
nil
{
return
errors
.
NewInternalError
(
err
)
return
errors
.
NewInternalError
(
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