mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
Merge pull request #6834 from eparis/bash-4-kubectl-describe
Annotate kubectl describe with describable object for bash completions
This commit is contained in:
commit
d7b0b4a95b
@ -273,6 +273,15 @@ _kubectl_describe()
|
|||||||
|
|
||||||
must_have_one_flag=()
|
must_have_one_flag=()
|
||||||
must_have_one_noun=()
|
must_have_one_noun=()
|
||||||
|
must_have_one_noun+=("limitrange")
|
||||||
|
must_have_one_noun+=("minion")
|
||||||
|
must_have_one_noun+=("node")
|
||||||
|
must_have_one_noun+=("persistentvolume")
|
||||||
|
must_have_one_noun+=("persistentvolumeclaim")
|
||||||
|
must_have_one_noun+=("pod")
|
||||||
|
must_have_one_noun+=("replicationcontroller")
|
||||||
|
must_have_one_noun+=("resourcequota")
|
||||||
|
must_have_one_noun+=("service")
|
||||||
}
|
}
|
||||||
|
|
||||||
_kubectl_create()
|
_kubectl_create()
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl"
|
||||||
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource"
|
||||||
)
|
)
|
||||||
@ -38,6 +39,7 @@ given resource.`,
|
|||||||
err := RunDescribe(f, out, cmd, args)
|
err := RunDescribe(f, out, cmd, args)
|
||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
},
|
},
|
||||||
|
ValidArgs: kubectl.DescribableResources(),
|
||||||
}
|
}
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -58,26 +58,38 @@ func (e ErrNoDescriber) Error() string {
|
|||||||
return fmt.Sprintf("no describer has been defined for %v", e.Types)
|
return fmt.Sprintf("no describer has been defined for %v", e.Types)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func describerMap(c *client.Client) map[string]Describer {
|
||||||
|
m := map[string]Describer{
|
||||||
|
"Pod": &PodDescriber{c},
|
||||||
|
"ReplicationController": &ReplicationControllerDescriber{c},
|
||||||
|
"Service": &ServiceDescriber{c},
|
||||||
|
"Minion": &NodeDescriber{c},
|
||||||
|
"Node": &NodeDescriber{c},
|
||||||
|
"LimitRange": &LimitRangeDescriber{c},
|
||||||
|
"ResourceQuota": &ResourceQuotaDescriber{c},
|
||||||
|
"PersistentVolume": &PersistentVolumeDescriber{c},
|
||||||
|
"PersistentVolumeClaim": &PersistentVolumeClaimDescriber{c},
|
||||||
|
}
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
// List of all resource types we can describe
|
||||||
|
func DescribableResources() []string {
|
||||||
|
keys := make([]string, 0)
|
||||||
|
|
||||||
|
for k := range describerMap(nil) {
|
||||||
|
resource := strings.ToLower(k)
|
||||||
|
keys = append(keys, resource)
|
||||||
|
}
|
||||||
|
return keys
|
||||||
|
}
|
||||||
|
|
||||||
// Describer returns the default describe functions for each of the standard
|
// Describer returns the default describe functions for each of the standard
|
||||||
// Kubernetes types.
|
// Kubernetes types.
|
||||||
func DescriberFor(kind string, c *client.Client) (Describer, bool) {
|
func DescriberFor(kind string, c *client.Client) (Describer, bool) {
|
||||||
switch kind {
|
f, ok := describerMap(c)[kind]
|
||||||
case "Pod":
|
if ok {
|
||||||
return &PodDescriber{c}, true
|
return f, true
|
||||||
case "ReplicationController":
|
|
||||||
return &ReplicationControllerDescriber{c}, true
|
|
||||||
case "Service":
|
|
||||||
return &ServiceDescriber{c}, true
|
|
||||||
case "PersistentVolume":
|
|
||||||
return &PersistentVolumeDescriber{c}, true
|
|
||||||
case "PersistentVolumeClaim":
|
|
||||||
return &PersistentVolumeClaimDescriber{c}, true
|
|
||||||
case "Minion", "Node":
|
|
||||||
return &NodeDescriber{c}, true
|
|
||||||
case "LimitRange":
|
|
||||||
return &LimitRangeDescriber{c}, true
|
|
||||||
case "ResourceQuota":
|
|
||||||
return &ResourceQuotaDescriber{c}, true
|
|
||||||
}
|
}
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user