mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Add label support for kubectl describe
Add -l option to kubectl describe command, allow it return multiple results filtered by label selector.
This commit is contained in:
		@@ -275,6 +275,8 @@ _kubectl_describe()
 | 
			
		||||
 | 
			
		||||
    flags+=("--help")
 | 
			
		||||
    flags+=("-h")
 | 
			
		||||
    flags+=("--selector=")
 | 
			
		||||
    two_word_flags+=("-l")
 | 
			
		||||
 | 
			
		||||
    must_have_one_flag=()
 | 
			
		||||
    must_have_one_noun=()
 | 
			
		||||
 
 | 
			
		||||
@@ -22,12 +22,16 @@ $ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
 | 
			
		||||
 | 
			
		||||
// Describe a pod
 | 
			
		||||
$ kubectl describe pods/nginx
 | 
			
		||||
 | 
			
		||||
// Describe pods by label name=myLabel
 | 
			
		||||
$ kubectl describe po -l name=myLabel
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Options
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  -h, --help=false: help for describe
 | 
			
		||||
  -l, --selector="": Selector (label query) to filter on
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Options inherited from parent commands
 | 
			
		||||
@@ -62,6 +66,6 @@ $ kubectl describe pods/nginx
 | 
			
		||||
### SEE ALSO
 | 
			
		||||
* [kubectl](kubectl.md)	 - kubectl controls the Kubernetes cluster manager
 | 
			
		||||
 | 
			
		||||
###### Auto generated by spf13/cobra at 2015-05-21 10:33:11.177122438 +0000 UTC
 | 
			
		||||
###### Auto generated by spf13/cobra at 2015-06-12 06:44:05.105790085 +0000 UTC
 | 
			
		||||
 | 
			
		||||
[]()
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,10 @@ given resource.
 | 
			
		||||
\fB\-h\fP, \fB\-\-help\fP=false
 | 
			
		||||
    help for describe
 | 
			
		||||
 | 
			
		||||
.PP
 | 
			
		||||
\fB\-l\fP, \fB\-\-selector\fP=""
 | 
			
		||||
    Selector (label query) to filter on
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.SH OPTIONS INHERITED FROM PARENT COMMANDS
 | 
			
		||||
.PP
 | 
			
		||||
@@ -135,6 +139,9 @@ $ kubectl describe nodes kubernetes\-minion\-emt8.c.myproject.internal
 | 
			
		||||
// Describe a pod
 | 
			
		||||
$ kubectl describe pods/nginx
 | 
			
		||||
 | 
			
		||||
// Describe pods by label name=myLabel
 | 
			
		||||
$ kubectl describe po \-l name=myLabel
 | 
			
		||||
 | 
			
		||||
.fi
 | 
			
		||||
.RE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -43,17 +43,22 @@ given resource.`,
 | 
			
		||||
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
 | 
			
		||||
 | 
			
		||||
// Describe a pod
 | 
			
		||||
$ kubectl describe pods/nginx`,
 | 
			
		||||
$ kubectl describe pods/nginx
 | 
			
		||||
 | 
			
		||||
// Describe pods by label name=myLabel
 | 
			
		||||
$ kubectl describe po -l name=myLabel`,
 | 
			
		||||
		Run: func(cmd *cobra.Command, args []string) {
 | 
			
		||||
			err := RunDescribe(f, out, cmd, args)
 | 
			
		||||
			cmdutil.CheckErr(err)
 | 
			
		||||
		},
 | 
			
		||||
		ValidArgs: kubectl.DescribableResources(),
 | 
			
		||||
	}
 | 
			
		||||
	cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on")
 | 
			
		||||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
 | 
			
		||||
	selector := cmdutil.GetFlagString(cmd, "selector")
 | 
			
		||||
	cmdNamespace, err := f.DefaultNamespace()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -63,6 +68,7 @@ func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
 | 
			
		||||
	r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()).
 | 
			
		||||
		ContinueOnError().
 | 
			
		||||
		NamespaceParam(cmdNamespace).DefaultNamespace().
 | 
			
		||||
		SelectorParam(selector).
 | 
			
		||||
		ResourceTypeOrNameArgs(false, args...).
 | 
			
		||||
		Flatten().
 | 
			
		||||
		Do()
 | 
			
		||||
@@ -86,16 +92,15 @@ func RunDescribe(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
 | 
			
		||||
		}
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if len(infos) > 1 {
 | 
			
		||||
		return fmt.Errorf("multiple resources provided: %v", args)
 | 
			
		||||
	}
 | 
			
		||||
	info := infos[0]
 | 
			
		||||
 | 
			
		||||
	s, err := describer.Describe(info.Namespace, info.Name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	for _, info := range infos {
 | 
			
		||||
		s, err := describer.Describe(info.Namespace, info.Name)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		fmt.Fprintf(out, "%s\n\n", s)
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Fprintf(out, "%s\n", s)
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
 | 
			
		||||
		t.Errorf("unexpected describer: %#v", d)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if buf.String() != fmt.Sprintf("%s\n", d.Output) {
 | 
			
		||||
	if buf.String() != fmt.Sprintf("%s\n\n", d.Output) {
 | 
			
		||||
		t.Errorf("unexpected output: %s", buf.String())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user