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
6f638751
Commit
6f638751
authored
Dec 17, 2015
by
Abhishek Shah
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reverting 18442
parent
7ec24ffa
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 @
6f638751
...
...
@@ -78,7 +78,7 @@ func TestRESTMapper(t *testing.T) {
rcGVK
:=
gv
.
WithKind
(
"ReplicationController"
)
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
)
}
...
...
pkg/api/meta/interfaces.go
View file @
6f638751
...
...
@@ -158,23 +158,12 @@ type RESTMapping struct {
// 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.
type
RESTMapper
interface
{
// KindFor takes a partial resource and returns back the single match. Returns an error if there are multiple matches
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
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
)
// KindFor takes a resource and returns back the unambiguous Kind (GroupVersionKind)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
RESTMapping
(
gk
unversioned
.
GroupKind
,
versions
...
string
)
(
*
RESTMapping
,
error
)
AliasesForResource
(
resource
string
)
([]
string
,
bool
)
ResourceSingularizer
(
resource
string
)
(
singular
string
,
err
error
)
// ResourceIsValid takes a partial resource and returns back whether or not the resource matches at least one kind
ResourceIsValid
(
resource
unversioned
.
GroupVersionResource
)
bool
ResourceIsValid
(
resource
string
)
bool
}
pkg/api/meta/restmapper.go
View file @
6f638751
This diff is collapsed.
Click to expand it.
pkg/api/meta/restmapper_test.go
View file @
6f638751
This diff is collapsed.
Click to expand it.
pkg/api/unversioned/group_version.go
View file @
6f638751
...
...
@@ -29,10 +29,6 @@ type GroupResource struct {
Resource
string
}
func
(
gr
GroupResource
)
WithVersion
(
version
string
)
GroupVersionResource
{
return
GroupVersionResource
{
Group
:
gr
.
Group
,
Version
:
version
,
Resource
:
gr
.
Resource
}
}
func
(
gr
GroupResource
)
IsEmpty
()
bool
{
return
len
(
gr
.
Group
)
==
0
&&
len
(
gr
.
Resource
)
==
0
}
...
...
pkg/apis/componentconfig/install/install_test.go
View file @
6f638751
...
...
@@ -57,7 +57,7 @@ func TestRESTMapper(t *testing.T) {
gv
:=
unversioned
.
GroupVersion
{
Group
:
componentconfig
.
GroupName
,
Version
:
"v1alpha1"
}
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
)
}
...
...
pkg/apis/extensions/install/install_test.go
View file @
6f638751
...
...
@@ -80,7 +80,7 @@ func TestRESTMapper(t *testing.T) {
hpaGVK
:=
gv
.
WithKind
(
"HorizontalPodAutoscaler"
)
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
)
}
...
...
pkg/client/unversioned/scale.go
View file @
6f638751
...
...
@@ -18,7 +18,6 @@ package unversioned
import
(
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
)
...
...
@@ -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.
func
(
c
*
scales
)
Get
(
kind
string
,
name
string
)
(
result
*
extensions
.
Scale
,
err
error
)
{
result
=
&
extensions
.
Scale
{}
// TODO this method needs to take a proper unambiguous kind
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
)
resource
,
_
:=
meta
.
KindToResource
(
kind
,
false
)
err
=
c
.
client
.
Get
()
.
Namespace
(
c
.
ns
)
.
Resource
(
resource
)
.
Name
(
name
)
.
SubResource
(
"scale"
)
.
Do
()
.
Into
(
result
)
return
}
func
(
c
*
scales
)
Update
(
kind
string
,
scale
*
extensions
.
Scale
)
(
result
*
extensions
.
Scale
,
err
error
)
{
result
=
&
extensions
.
Scale
{}
// TODO this method needs to take a proper unambiguous kind
fullyQualifiedKind
:=
unversioned
.
GroupVersionKind
{
Kind
:
kind
}
resource
,
_
:=
meta
.
KindToResource
(
fullyQualifiedKind
,
false
)
resource
,
_
:=
meta
.
KindToResource
(
kind
,
false
)
err
=
c
.
client
.
Put
()
.
Namespace
(
scale
.
Namespace
)
.
Resource
(
resource
.
Resource
)
.
Resource
(
resource
)
.
Name
(
scale
.
Name
)
.
SubResource
(
"scale"
)
.
Body
(
scale
)
.
...
...
pkg/client/unversioned/testclient/fixture.go
View file @
6f638751
...
...
@@ -59,7 +59,7 @@ type ObjectScheme interface {
func
ObjectReaction
(
o
ObjectRetriever
,
mapper
meta
.
RESTMapper
)
ReactionFunc
{
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
{
return
false
,
nil
,
fmt
.
Errorf
(
"unrecognized action %s: %v"
,
action
.
GetResource
(),
err
)
}
...
...
@@ -67,16 +67,16 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
// TODO: have mapper return a Kind for a subresource?
switch
castAction
:=
action
.
(
type
)
{
case
ListAction
:
kind
.
Kind
+=
"List"
resource
,
err
:=
o
.
Kind
(
kind
,
""
)
gvk
.
Kind
+=
"List"
resource
,
err
:=
o
.
Kind
(
gvk
,
""
)
return
true
,
resource
,
err
case
GetAction
:
resource
,
err
:=
o
.
Kind
(
kind
,
castAction
.
GetName
())
resource
,
err
:=
o
.
Kind
(
gvk
,
castAction
.
GetName
())
return
true
,
resource
,
err
case
DeleteAction
:
resource
,
err
:=
o
.
Kind
(
kind
,
castAction
.
GetName
())
resource
,
err
:=
o
.
Kind
(
gvk
,
castAction
.
GetName
())
return
true
,
resource
,
err
case
CreateAction
:
...
...
@@ -84,7 +84,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
if
err
!=
nil
{
return
true
,
nil
,
err
}
resource
,
err
:=
o
.
Kind
(
kind
,
meta
.
Name
)
resource
,
err
:=
o
.
Kind
(
gvk
,
meta
.
Name
)
return
true
,
resource
,
err
case
UpdateAction
:
...
...
@@ -92,7 +92,7 @@ func ObjectReaction(o ObjectRetriever, mapper meta.RESTMapper) ReactionFunc {
if
err
!=
nil
{
return
true
,
nil
,
err
}
resource
,
err
:=
o
.
Kind
(
kind
,
meta
.
Name
)
resource
,
err
:=
o
.
Kind
(
gvk
,
meta
.
Name
)
return
true
,
resource
,
err
default
:
...
...
pkg/kubectl/cmd/explain.go
View file @
6f638751
...
...
@@ -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.
gvk
,
err
:=
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
inModel
}
)
gvk
,
err
:=
mapper
.
KindFor
(
inModel
)
if
err
!=
nil
{
return
err
}
...
...
pkg/kubectl/cmd/rollingupdate.go
View file @
6f638751
...
...
@@ -360,12 +360,12 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
if
outputFormat
!=
""
{
return
f
.
PrintObject
(
cmd
,
newRc
,
out
)
}
kind
,
err
:=
api
.
Scheme
.
ObjectKind
(
newRc
)
gvk
,
err
:=
api
.
Scheme
.
ObjectKind
(
newRc
)
if
err
!=
nil
{
return
err
}
_
,
res
:=
meta
.
KindToResource
(
k
ind
,
false
)
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
res
.
Resource
,
oldName
,
message
)
_
,
res
:=
meta
.
KindToResource
(
gvk
.
K
ind
,
false
)
cmdutil
.
PrintSuccess
(
mapper
,
false
,
out
,
res
,
oldName
,
message
)
return
nil
}
...
...
pkg/kubectl/cmd/util/factory.go
View file @
6f638751
...
...
@@ -175,12 +175,16 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
return
clients
.
ClientConfigForVersion
(
nil
)
},
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
()
client
,
err
:=
clients
.
ClientForVersion
(
&
mappingVersion
)
if
err
!=
nil
{
return
nil
,
err
}
switch
mapping
.
GroupVersionKind
.
Group
{
switch
gvk
.
Group
{
case
api
.
GroupName
:
return
client
.
RESTClient
,
nil
case
extensions
.
GroupName
:
...
...
pkg/kubectl/explain.go
View file @
6f638751
...
...
@@ -44,7 +44,7 @@ func GetSwaggerSchema(version unversioned.GroupVersion, kubeClient client.Interf
// SplitAndParseResourceRequest separates the users input into a model and fields
func
SplitAndParseResourceRequest
(
inResource
string
,
mapper
meta
.
RESTMapper
)
(
string
,
[]
string
,
error
)
{
inResource
,
fieldsPath
:=
splitDotNotation
(
inResource
)
inResource
,
_
=
mapper
.
ResourceSingularizer
(
expandResourceShortcut
(
unversioned
.
GroupVersionResource
{
Resource
:
inResource
})
.
Resource
)
inResource
,
_
=
mapper
.
ResourceSingularizer
(
expandResourceShortcut
(
inResource
)
)
return
inResource
,
fieldsPath
,
nil
}
...
...
pkg/kubectl/kubectl.go
View file @
6f638751
...
...
@@ -23,7 +23,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
)
const
kubectlAnnotationPrefix
=
"kubectl.kubernetes.io/"
...
...
@@ -81,40 +80,40 @@ var _ meta.RESTMapper = &ShortcutExpander{}
// KindFor implements meta.RESTMapper. It expands the resource first, then invokes the wrapped
// mapper.
func
(
e
ShortcutExpander
)
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionKind
,
error
)
{
func
(
e
ShortcutExpander
)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
{
resource
=
expandResourceShortcut
(
resource
)
return
e
.
RESTMapper
.
KindFor
(
resource
)
}
// ResourceIsValid takes a string (kind) and checks if it's a valid resource.
// 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
))
}
// expandResourceShortcut will return the expanded version of resource
// (something that a pkg/api/meta.RESTMapper can understand), if it is
// indeed a shortcut. Otherwise, will return resource unmodified.
func
expandResourceShortcut
(
resource
unversioned
.
GroupVersionResource
)
unversioned
.
GroupVersionResource
{
shortForms
:=
map
[
string
]
unversioned
.
GroupVersionResource
{
func
expandResourceShortcut
(
resource
string
)
string
{
shortForms
:=
map
[
string
]
string
{
// Please keep this alphabetized
"cs"
:
api
.
SchemeGroupVersion
.
WithResource
(
"componentstatuses"
)
,
"ds"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"daemonsets"
)
,
"ep"
:
api
.
SchemeGroupVersion
.
WithResource
(
"endpoints"
)
,
"ev"
:
api
.
SchemeGroupVersion
.
WithResource
(
"events"
)
,
"hpa"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"horizontalpodautoscalers"
)
,
"ing"
:
extensions
.
SchemeGroupVersion
.
WithResource
(
"ingresses"
)
,
"limits"
:
api
.
SchemeGroupVersion
.
WithResource
(
"limitranges"
)
,
"no"
:
api
.
SchemeGroupVersion
.
WithResource
(
"nodes"
)
,
"ns"
:
api
.
SchemeGroupVersion
.
WithResource
(
"namespaces"
)
,
"po"
:
api
.
SchemeGroupVersion
.
WithResource
(
"pods"
)
,
"pvc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"persistentvolumeclaims"
)
,
"pv"
:
api
.
SchemeGroupVersion
.
WithResource
(
"persistentvolumes"
)
,
"quota"
:
api
.
SchemeGroupVersion
.
WithResource
(
"resourcequotas"
)
,
"rc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"replicationcontrollers"
)
,
"svc"
:
api
.
SchemeGroupVersion
.
WithResource
(
"services"
)
,
"cs"
:
"componentstatuses"
,
"ds"
:
"daemonsets"
,
"ep"
:
"endpoints"
,
"ev"
:
"events"
,
"hpa"
:
"horizontalpodautoscalers"
,
"ing"
:
"ingresses"
,
"limits"
:
"limitranges"
,
"no"
:
"nodes"
,
"ns"
:
"namespaces"
,
"po"
:
"pods"
,
"pvc"
:
"persistentvolumeclaims"
,
"pv"
:
"persistentvolumes"
,
"quota"
:
"resourcequotas"
,
"rc"
:
"replicationcontrollers"
,
"svc"
:
"services"
,
}
if
expanded
,
ok
:=
shortForms
[
resource
.
Resource
];
ok
{
if
expanded
,
ok
:=
shortForms
[
resource
];
ok
{
return
expanded
}
return
resource
...
...
pkg/kubectl/resource/builder.go
View file @
6f638751
...
...
@@ -25,7 +25,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
...
...
@@ -427,7 +426,7 @@ func (b *Builder) resourceMappings() ([]*meta.RESTMapping, error) {
}
mappings
:=
[]
*
meta
.
RESTMapping
{}
for
_
,
r
:=
range
b
.
resources
{
gvk
,
err
:=
b
.
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
r
}
)
gvk
,
err
:=
b
.
mapper
.
KindFor
(
r
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -447,7 +446,7 @@ func (b *Builder) resourceTupleMappings() (map[string]*meta.RESTMapping, error)
if
_
,
ok
:=
mappings
[
r
.
Resource
];
ok
{
continue
}
gvk
,
err
:=
b
.
mapper
.
KindFor
(
unversioned
.
GroupVersionResource
{
Resource
:
r
.
Resource
}
)
gvk
,
err
:=
b
.
mapper
.
KindFor
(
r
.
Resource
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
pkg/kubectl/resource_printer.go
View file @
6f638751
...
...
@@ -203,24 +203,11 @@ type NamePrinter struct {
// 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
{
objvalue
:=
reflect
.
ValueOf
(
obj
)
.
Elem
()
kindString
:=
objvalue
.
FieldByName
(
"Kind"
)
groupVersionString
:=
objvalue
.
FieldByName
(
"APIVersion"
)
kind
:=
unversioned
.
GroupVersionKind
{}
if
!
kindString
.
IsValid
()
{
kindString
=
reflect
.
ValueOf
(
"<unknown>"
)
kind
:=
objvalue
.
FieldByName
(
"Kind"
)
if
!
kind
.
IsValid
()
{
kind
=
reflect
.
ValueOf
(
"<unknown>"
)
}
kind
.
Kind
=
kindString
.
String
()
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"
{
if
kind
.
String
()
==
"List"
{
items
:=
objvalue
.
FieldByName
(
"Items"
)
if
items
.
Type
()
.
String
()
==
"[]runtime.RawExtension"
{
for
i
:=
0
;
i
<
items
.
Len
();
i
++
{
...
...
@@ -250,9 +237,9 @@ func (p *NamePrinter) PrintObj(obj runtime.Object, w io.Writer) error {
if
!
name
.
IsValid
()
{
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
...
...
pkg/registry/thirdpartyresourcedata/codec.go
View file @
6f638751
...
...
@@ -41,55 +41,14 @@ type thirdPartyResourceDataMapper struct {
var
_
meta
.
RESTMapper
=
&
thirdPartyResourceDataMapper
{}
func
(
t
*
thirdPartyResourceDataMapper
)
getResource
()
unversioned
.
GroupVersionResource
{
plural
,
_
:=
meta
.
KindToResource
(
t
.
getKind
(),
false
)
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
)
isThirdPartyResource
(
resource
string
)
bool
{
plural
,
_
:=
meta
.
KindToResource
(
t
.
kind
,
false
)
return
resource
==
plural
}
func
(
t
*
thirdPartyResourceDataMapper
)
KindFor
(
resource
unversioned
.
GroupVersionResource
)
(
unversioned
.
GroupVersionKind
,
error
)
{
func
(
t
*
thirdPartyResourceDataMapper
)
KindFor
(
resource
string
)
(
unversioned
.
GroupVersionKind
,
error
)
{
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
)
}
...
...
@@ -127,7 +86,8 @@ func (t *thirdPartyResourceDataMapper) ResourceSingularizer(resource string) (si
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
)
}
...
...
pkg/registry/thirdpartyresourcedata/codec_test.go
View file @
6f638751
...
...
@@ -212,9 +212,9 @@ func TestResourceIsValid(t *testing.T) {
for
_
,
test
:=
range
tests
{
mapper
:=
&
thirdPartyResourceDataMapper
{
kind
:
test
.
kind
}
mapper
.
mapper
=
api
.
RESTMapper
valid
:=
mapper
.
ResourceIsValid
(
unversioned
.
GroupVersionResource
{
Resource
:
test
.
resource
}
)
valid
:=
mapper
.
ResourceIsValid
(
test
.
resource
)
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 @
6f638751
...
...
@@ -45,11 +45,11 @@ type provision struct {
}
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
{
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
{
return
admission
.
NewForbidden
(
a
,
err
)
}
...
...
plugin/pkg/admission/namespace/exists/admission.go
View file @
6f638751
...
...
@@ -46,11 +46,11 @@ type exists struct {
}
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
{
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
{
return
errors
.
NewInternalError
(
err
)
}
...
...
plugin/pkg/admission/namespace/lifecycle/admission.go
View file @
6f638751
...
...
@@ -48,16 +48,17 @@ type lifecycle struct {
}
func
(
l
*
lifecycle
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
// prevent deletion of immortal namespaces
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"
))
}
kind
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
WithVersion
(
""
)
)
gvk
,
err
:=
api
.
RESTMapper
.
KindFor
(
a
.
GetResource
()
.
Resource
)
if
err
!=
nil
{
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
{
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