mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Add a better help message for kubectl describe
When resource type isn't given in the command, print the possible resource types. Also added the resource type description in help strings.
This commit is contained in:
parent
c6161824db
commit
6dd8a1dfa4
@ -26,6 +26,12 @@ $ kubectl describe RESOURCE NAME\_PREFIX
|
|||||||
will first check for an exact match on RESOURCE and NAME\_PREFIX. If no such resource
|
will first check for an exact match on RESOURCE and NAME\_PREFIX. If no such resource
|
||||||
exists, it will output details for every resource that has a name prefixed with NAME\_PREFIX
|
exists, it will output details for every resource that has a name prefixed with NAME\_PREFIX
|
||||||
|
|
||||||
|
.PP
|
||||||
|
Possible resources include pods (po), replicationcontrollers (rc), services
|
||||||
|
(svc), nodes (no), events (ev), componentstatuses (cs), limitRanges (limits),
|
||||||
|
persistentVolumes (pv), persistentVolumeClaims (pvc), resourceQuotas (quota)
|
||||||
|
or secrets.
|
||||||
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.PP
|
.PP
|
||||||
|
@ -29,6 +29,11 @@ $ kubectl describe RESOURCE NAME_PREFIX
|
|||||||
will first check for an exact match on RESOURCE and NAME_PREFIX. If no such resource
|
will first check for an exact match on RESOURCE and NAME_PREFIX. If no such resource
|
||||||
exists, it will output details for every resource that has a name prefixed with NAME_PREFIX
|
exists, it will output details for every resource that has a name prefixed with NAME_PREFIX
|
||||||
|
|
||||||
|
Possible resources include pods (po), replicationcontrollers (rc), services
|
||||||
|
(svc), nodes (no), events (ev), componentstatuses (cs), limitRanges (limits),
|
||||||
|
persistentVolumes (pv), persistentVolumeClaims (pvc), resourceQuotas (quota)
|
||||||
|
or secrets.
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl describe (RESOURCE NAME_PREFIX | RESOURCE/NAME)
|
kubectl describe (RESOURCE NAME_PREFIX | RESOURCE/NAME)
|
||||||
```
|
```
|
||||||
@ -89,7 +94,7 @@ $ kubectl describe pods frontend
|
|||||||
### SEE ALSO
|
### SEE ALSO
|
||||||
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
||||||
|
|
||||||
###### Auto generated by spf13/cobra at 2015-07-14 00:11:42.955631296 +0000 UTC
|
###### Auto generated by spf13/cobra at 2015-07-14 08:21:33.374469932 +0000 UTC
|
||||||
|
|
||||||
|
|
||||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||||
|
@ -90,6 +90,18 @@ __custom_func() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
`
|
||||||
|
valid_resources = `Valid resource types include:
|
||||||
|
* pods (aka 'po')
|
||||||
|
* replicationcontrollers (aka 'rc')
|
||||||
|
* services (aka 'svc')
|
||||||
|
* nodes (aka 'no')
|
||||||
|
* events (aka 'ev')
|
||||||
|
* secrets
|
||||||
|
* limits
|
||||||
|
* persistentVolumes (aka 'pv')
|
||||||
|
* persistentVolumeClaims (aka 'pvc')
|
||||||
|
* quota
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
|
apierrors "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl"
|
||||||
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
|
||||||
@ -40,7 +40,12 @@ given resource or group of resources.
|
|||||||
$ kubectl describe RESOURCE NAME_PREFIX
|
$ kubectl describe RESOURCE NAME_PREFIX
|
||||||
|
|
||||||
will first check for an exact match on RESOURCE and NAME_PREFIX. If no such resource
|
will first check for an exact match on RESOURCE and NAME_PREFIX. If no such resource
|
||||||
exists, it will output details for every resource that has a name prefixed with NAME_PREFIX`
|
exists, it will output details for every resource that has a name prefixed with NAME_PREFIX
|
||||||
|
|
||||||
|
Possible resources include pods (po), replicationcontrollers (rc), services
|
||||||
|
(svc), nodes (no), events (ev), componentstatuses (cs), limitRanges (limits),
|
||||||
|
persistentVolumes (pv), persistentVolumeClaims (pvc), resourceQuotas (quota)
|
||||||
|
or secrets.`
|
||||||
describe_example = `// Describe a node
|
describe_example = `// Describe a node
|
||||||
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
|
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
|
||||||
|
|
||||||
@ -78,6 +83,11 @@ func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(args) == 0 {
|
||||||
|
fmt.Fprint(out, "You must specify the type of resource to describe. ", valid_resources)
|
||||||
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
|
}
|
||||||
|
|
||||||
mapper, typer := f.Object()
|
mapper, typer := f.Object()
|
||||||
r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()).
|
r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
@ -101,7 +111,7 @@ func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
|||||||
}
|
}
|
||||||
infos, err := r.Infos()
|
infos, err := r.Infos()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.IsNotFound(err) && len(args) == 2 {
|
if apierrors.IsNotFound(err) && len(args) == 2 {
|
||||||
return DescribeMatchingResources(mapper, typer, describer, f, cmdNamespace, args[0], args[1], out)
|
return DescribeMatchingResources(mapper, typer, describer, f, cmdNamespace, args[0], args[1], out)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
@ -17,7 +17,6 @@ limitations under the License.
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
@ -101,25 +100,8 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
fmt.Fprint(out, `
|
fmt.Fprint(out, "You must specify the type of resource to get. ", valid_resources)
|
||||||
You must specify the type of resource to get. Valid resource types include:
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
* componentStatuses (aka 'cs')
|
|
||||||
* endpoints (aka 'ep')
|
|
||||||
* events (aka 'ev')
|
|
||||||
* limits
|
|
||||||
* namespaces
|
|
||||||
* nodes (aka 'no')
|
|
||||||
* persistentVolumeClaims (aka 'pvc')
|
|
||||||
* persistentVolumes (aka 'pv')
|
|
||||||
* pods (aka 'po')
|
|
||||||
* podTemplates
|
|
||||||
* quota
|
|
||||||
* replicationcontrollers (aka 'rc')
|
|
||||||
* secrets
|
|
||||||
* serviceAccounts
|
|
||||||
* services
|
|
||||||
`)
|
|
||||||
return errors.New("Required resource not specified.")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle watch separately since we cannot watch multiple resource types
|
// handle watch separately since we cannot watch multiple resource types
|
||||||
|
Loading…
Reference in New Issue
Block a user