Merge pull request #10806 from hurf/help_describe

Add a better help message for kubectl describe
This commit is contained in:
Eric Tune 2015-07-14 12:15:39 -07:00
commit eff5f17b1e
5 changed files with 39 additions and 24 deletions

View File

@ -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
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
.PP

View File

@ -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
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)
```
@ -89,7 +94,7 @@ $ kubectl describe pods frontend
### SEE ALSO
* [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 -->

View File

@ -90,6 +90,18 @@ __custom_func() {
;;
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
`
)

View File

@ -23,7 +23,7 @@ import (
"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/kubectl"
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
@ -40,7 +40,12 @@ given resource or group of resources.
$ kubectl describe RESOURCE NAME_PREFIX
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
$ 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
}
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()
r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()).
ContinueOnError().
@ -101,7 +111,7 @@ func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
}
infos, err := r.Infos()
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 err

View File

@ -17,7 +17,6 @@ limitations under the License.
package cmd
import (
"errors"
"fmt"
"io"
@ -101,25 +100,8 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
}
if len(args) == 0 {
fmt.Fprint(out, `
You must specify the type of resource to get. Valid resource types include:
* 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.")
fmt.Fprint(out, "You must specify the type of resource to get. ", valid_resources)
return cmdutil.UsageError(cmd, "Required resource not specified.")
}
// handle watch separately since we cannot watch multiple resource types