From 53f2c2753fa6f28c3a748e240451a3be4e3b3bc6 Mon Sep 17 00:00:00 2001 From: xilabao Date: Tue, 28 Feb 2017 09:37:05 +0800 Subject: [PATCH] add a warning to the resource check --- pkg/kubectl/cmd/auth/cani.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pkg/kubectl/cmd/auth/cani.go b/pkg/kubectl/cmd/auth/cani.go index 44891867401..14a58409c2c 100644 --- a/pkg/kubectl/cmd/auth/cani.go +++ b/pkg/kubectl/cmd/auth/cani.go @@ -104,12 +104,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] } @@ -132,10 +136,6 @@ func (o *CanIOptions) Complete(f cmdutil.Factory, args []string) error { } } - if o.Quiet { - o.Out = ioutil.Discard - } - return nil } @@ -178,7 +178,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 { @@ -188,6 +188,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} } }