mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 23:17:50 +00:00
Merge pull request #55689 from luksa/kubectl_explain_kind_version
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Make kubectl explain print the Kind and APIVersion of the resource **What this PR does / why we need it**: Kubectl explain currently doesn't print out the Kind and APIversion of the resource being explained. When running `kubectl explain hpa.spec`, for example, there is no way of knowing whether you're looking at the `autoscaling/v1` or the `autoscaling/v2beta1` version. Also, `kubectl explain` is often used as a reference when writing YAML/JSON object manifests. It allows you to look up everything except the API version. Currently, you either need to know the API Version of a resource by heart or look it up in the online API docs. This PR fixes both problems by having `kubectl explain` print out the full Kind and APIVersion of the resource it is explaining. Here are a few examples of the new output: ``` $ kubectl explain deploy KIND: Deployment VERSION: extensions/v1beta1 DESCRIPTION: ... $ kubectl explain hpa.spec KIND: HorizontalPodAutoscaler VERSION: autoscaling/v1 RESOURCE: spec <Object> DESCRIPTION: ... $ kubectl explain hpa.spec.maxReplicas KIND: HorizontalPodAutoscaler VERSION: autoscaling/v1 FIELD: maxReplicas <integer> DESCRIPTION: ... $ kubectl explain hpa.spec --recursive KIND: HorizontalPodAutoscaler VERSION: autoscaling/v1 RESOURCE: spec <Object> DESCRIPTION: behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. specification of a horizontal pod autoscaler. FIELDS: maxReplicas <integer> minReplicas <integer> scaleTargetRef <Object> apiVersion <string> kind <string> name <string> targetCPUUtilizationPercentage <integer> ``` **Release note**: ```release-note Kubectl explain now prints out the Kind and API version of the resource being explained ```
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/kube-openapi/pkg/util/proto"
|
||||
)
|
||||
|
||||
@@ -51,7 +52,7 @@ func SplitAndParseResourceRequest(inResource string, mapper meta.RESTMapper) (st
|
||||
// PrintModelDescription prints the description of a specific model or dot path.
|
||||
// If recursive, all components nested within the fields of the schema will be
|
||||
// printed.
|
||||
func PrintModelDescription(fieldsPath []string, w io.Writer, schema proto.Schema, recursive bool) error {
|
||||
func PrintModelDescription(fieldsPath []string, w io.Writer, schema proto.Schema, gvk schema.GroupVersionKind, recursive bool) error {
|
||||
fieldName := ""
|
||||
if len(fieldsPath) != 0 {
|
||||
fieldName = fieldsPath[len(fieldsPath)-1]
|
||||
@@ -64,5 +65,5 @@ func PrintModelDescription(fieldsPath []string, w io.Writer, schema proto.Schema
|
||||
}
|
||||
b := fieldsPrinterBuilder{Recursive: recursive}
|
||||
f := &Formatter{Writer: w, Wrap: 80}
|
||||
return PrintModel(fieldName, f, b, schema)
|
||||
return PrintModel(fieldName, f, b, schema, gvk)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user