mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
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:
commit
d2733394ca
@ -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}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user