Merge pull request #42144 from xilabao/add-resource-validate

Automatic merge from submit-queue

add validate to resource in can-i

```
#kubectl auth can-i get xxx
the server doesn't have a resource type "xxx"
```
This commit is contained in:
Kubernetes Submit Queue 2017-04-13 11:43:05 -07:00 committed by GitHub
commit d2733394ca

View File

@ -105,12 +105,16 @@ func NewCmdCanI(f cmdutil.Factory, out, err io.Writer) *cobra.Command {
}
func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error {
if o.Quiet {
o.Out = ioutil.Discard
}
switch len(args) {
case 2:
resourceTokens := strings.SplitN(args[1], "/", 2)
restMapper, _ := f.Object()
o.Verb = args[0]
o.Resource = resourceFor(restMapper, resourceTokens[0])
o.Resource = o.resourceFor(restMapper, resourceTokens[0])
if len(resourceTokens) > 1 {
o.ResourceName = resourceTokens[1]
}
@ -133,10 +137,6 @@ func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error {
}
}
if o.Quiet {
o.Out = ioutil.Discard
}
return nil
}
@ -179,7 +179,7 @@ func (o *CanIOptions) RunAccessCheck() (bool, error) {
return response.Status.Allowed, nil
}
func resourceFor(mapper meta.RESTMapper, resourceArg string) schema.GroupVersionResource {
func (o *CanIOptions) resourceFor(mapper meta.RESTMapper, resourceArg string) schema.GroupVersionResource {
fullySpecifiedGVR, groupResource := schema.ParseResourceArg(strings.ToLower(resourceArg))
gvr := schema.GroupVersionResource{}
if fullySpecifiedGVR != nil {
@ -189,6 +189,11 @@ func resourceFor(mapper meta.RESTMapper, resourceArg string) schema.GroupVersion
var err error
gvr, err = mapper.ResourceFor(groupResource.WithVersion(""))
if err != nil {
if len(groupResource.Group) == 0 {
fmt.Fprintf(o.Err, "Warning: the server doesn't have a resource type '%s'\n", groupResource.Resource)
} else {
fmt.Fprintf(o.Err, "Warning: the server doesn't have a resource type '%s' in group '%s'\n", groupResource.Resource, groupResource.Group)
}
return schema.GroupVersionResource{Resource: resourceArg}
}
}