Merge pull request #88758 from soltysh/hide_last_applied

Hide kubectl.kubernetes.io/last-applied-configuration in describe
This commit is contained in:
Kubernetes Prow Robot 2020-03-03 21:06:01 -08:00 committed by GitHub
commit 0535520f6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 203 additions and 246 deletions

View File

@ -488,7 +488,7 @@ staging/src/k8s.io/kubectl/pkg/cmd/testing
staging/src/k8s.io/kubectl/pkg/cmd/top
staging/src/k8s.io/kubectl/pkg/cmd/util
staging/src/k8s.io/kubectl/pkg/cmd/wait
staging/src/k8s.io/kubectl/pkg/describe/versioned
staging/src/k8s.io/kubectl/pkg/describe
staging/src/k8s.io/kubectl/pkg/generate
staging/src/k8s.io/kubectl/pkg/generate/versioned
staging/src/k8s.io/kubectl/pkg/metricsutil

View File

@ -34,7 +34,7 @@ go_library(
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/cmd/util:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/rbac:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library",

View File

@ -39,7 +39,7 @@ import (
discovery "k8s.io/client-go/discovery"
authorizationv1client "k8s.io/client-go/kubernetes/typed/authorization/v1"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
describeutil "k8s.io/kubectl/pkg/describe/versioned"
"k8s.io/kubectl/pkg/describe"
rbacutil "k8s.io/kubectl/pkg/util/rbac"
"k8s.io/kubectl/pkg/util/templates"
)
@ -367,7 +367,7 @@ func printAccessHeaders(out io.Writer) error {
func printAccess(out io.Writer, rules []rbacv1.PolicyRule) error {
for _, r := range rules {
if _, err := fmt.Fprintf(out, "%s\t%v\t%v\t%v\n", describeutil.CombineResourceGroup(r.Resources, r.APIGroups), r.NonResourceURLs, r.ResourceNames, r.Verbs); err != nil {
if _, err := fmt.Fprintf(out, "%s\t%v\t%v\t%v\n", describe.CombineResourceGroup(r.Resources, r.APIGroups), r.NonResourceURLs, r.ResourceNames, r.Verbs); err != nil {
return err
}
}

View File

@ -15,7 +15,6 @@ go_library(
"//staging/src/k8s.io/cli-runtime/pkg/resource:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/cmd/util:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/i18n:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
@ -34,7 +33,6 @@ go_test(
"//staging/src/k8s.io/client-go/rest/fake:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/cmd/testing:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
],
)

View File

@ -30,7 +30,6 @@ import (
"k8s.io/cli-runtime/pkg/resource"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
"k8s.io/kubectl/pkg/describe"
describeversioned "k8s.io/kubectl/pkg/describe/versioned"
"k8s.io/kubectl/pkg/util/i18n"
"k8s.io/kubectl/pkg/util/templates"
)
@ -74,7 +73,7 @@ type DescribeOptions struct {
Selector string
Namespace string
Describer func(*meta.RESTMapping) (describe.Describer, error)
Describer func(*meta.RESTMapping) (describe.ResourceDescriber, error)
NewBuilder func() *resource.Builder
BuilderArgs []string
@ -136,8 +135,8 @@ func (o *DescribeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
o.BuilderArgs = args
o.Describer = func(mapping *meta.RESTMapping) (describe.Describer, error) {
return describeversioned.DescriberFn(f, mapping)
o.Describer = func(mapping *meta.RESTMapping) (describe.ResourceDescriber, error) {
return describe.DescriberFn(f, mapping)
}
o.NewBuilder = f.NewBuilder

View File

@ -28,18 +28,17 @@ import (
"k8s.io/client-go/rest/fake"
cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
"k8s.io/kubectl/pkg/describe"
versioneddescribe "k8s.io/kubectl/pkg/describe/versioned"
"k8s.io/kubectl/pkg/scheme"
)
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
func TestDescribeUnknownSchemaObject(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
tf := cmdtesting.NewTestFactory().WithNamespace("non-default")
defer tf.Cleanup()
@ -67,11 +66,11 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
tf := cmdtesting.NewTestFactory()
defer tf.Cleanup()
@ -99,11 +98,11 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
func TestDescribeObject(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
_, _, rc := cmdtesting.TestData()
tf := cmdtesting.NewTestFactory().WithNamespace("test")
@ -140,11 +139,11 @@ func TestDescribeObject(t *testing.T) {
func TestDescribeListObjects(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
pods, _, _ := cmdtesting.TestData()
tf := cmdtesting.NewTestFactory().WithNamespace("test")
@ -167,11 +166,11 @@ func TestDescribeListObjects(t *testing.T) {
func TestDescribeObjectShowEvents(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
pods, _, _ := cmdtesting.TestData()
tf := cmdtesting.NewTestFactory().WithNamespace("test")
@ -193,11 +192,11 @@ func TestDescribeObjectShowEvents(t *testing.T) {
func TestDescribeObjectSkipEvents(t *testing.T) {
d := &testDescriber{Output: "test output"}
oldFn := versioneddescribe.DescriberFn
oldFn := describe.DescriberFn
defer func() {
versioneddescribe.DescriberFn = oldFn
describe.DescriberFn = oldFn
}()
versioneddescribe.DescriberFn = d.describerFor
describe.DescriberFn = d.describerFor
pods, _, _ := cmdtesting.TestData()
tf := cmdtesting.NewTestFactory().WithNamespace("test")
@ -310,6 +309,6 @@ func (t *testDescriber) Describe(namespace, name string, describerSettings descr
t.Settings = describerSettings
return t.Output, t.Err
}
func (t *testDescriber) describerFor(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (describe.Describer, error) {
func (t *testDescriber) describerFor(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (describe.ResourceDescriber, error) {
return t, nil
}

View File

@ -1,14 +1,60 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["interface.go"],
srcs = [
"describe.go",
"interface.go",
],
importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/describe",
importpath = "k8s.io/kubectl/pkg/describe",
visibility = ["//visibility:public"],
deps = [
"//staging/src/k8s.io/api/apps/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v2beta2:go_default_library",
"//staging/src/k8s.io/api/batch/v1:go_default_library",
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
"//staging/src/k8s.io/api/certificates/v1beta1:go_default_library",
"//staging/src/k8s.io/api/coordination/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
"//staging/src/k8s.io/api/networking/v1:go_default_library",
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
"//staging/src/k8s.io/api/storage/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/duration:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/certificate:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/event:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/fieldpath:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/qos:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/rbac:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/resource:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/slice:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/storage:go_default_library",
"//vendor/github.com/fatih/camelcase:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
)
@ -21,10 +67,33 @@ filegroup(
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:all-srcs",
],
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_test(
name = "go_default_test",
srcs = ["describe_test.go"],
embed = [":go_default_library"],
deps = [
"//staging/src/k8s.io/api/apps/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v2beta2:go_default_library",
"//staging/src/k8s.io/api/coordination/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/api/networking/v1:go_default_library",
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
"//staging/src/k8s.io/api/storage/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/utils/pointer:go_default_library",
],
)

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package versioned
package describe
import (
"bytes"
@ -68,7 +68,6 @@ import (
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/reference"
"k8s.io/klog"
"k8s.io/kubectl/pkg/describe"
"k8s.io/kubectl/pkg/scheme"
"k8s.io/kubectl/pkg/util/certificate"
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
@ -90,11 +89,16 @@ const (
LEVEL_4
)
var (
// globally skipped annotations
skipAnnotations = sets.NewString(corev1.LastAppliedConfigAnnotation)
// DescriberFn gives a way to easily override the function for unit testing if needed
var DescriberFn describe.DescriberFunc = Describer
DescriberFn DescriberFunc = Describer
)
// Describer returns a Describer for displaying the specified RESTMapping type or an error.
func Describer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (describe.Describer, error) {
func Describer(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (ResourceDescriber, error) {
clientConfig, err := restClientGetter.ToRESTConfig()
if err != nil {
return nil, err
@ -152,13 +156,13 @@ func (pw *prefixWriter) Flush() {
}
}
func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]describe.Describer, error) {
func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]ResourceDescriber, error) {
c, err := clientset.NewForConfig(clientConfig)
if err != nil {
return nil, err
}
m := map[schema.GroupKind]describe.Describer{
m := map[schema.GroupKind]ResourceDescriber{
{Group: corev1.GroupName, Kind: "Pod"}: &PodDescriber{c},
{Group: corev1.GroupName, Kind: "ReplicationController"}: &ReplicationControllerDescriber{c},
{Group: corev1.GroupName, Kind: "Secret"}: &SecretDescriber{c},
@ -206,7 +210,7 @@ func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]describe.Desc
// DescriberFor returns the default describe functions for each of the standard
// Kubernetes types.
func DescriberFor(kind schema.GroupKind, clientConfig *rest.Config) (describe.Describer, bool) {
func DescriberFor(kind schema.GroupKind, clientConfig *rest.Config) (ResourceDescriber, bool) {
describers, err := describerMap(clientConfig)
if err != nil {
klog.V(1).Info(err)
@ -219,7 +223,7 @@ func DescriberFor(kind schema.GroupKind, clientConfig *rest.Config) (describe.De
// GenericDescriberFor returns a generic describer for the specified mapping
// that uses only information available from runtime.Unstructured
func GenericDescriberFor(mapping *meta.RESTMapping, clientConfig *rest.Config) (describe.Describer, bool) {
func GenericDescriberFor(mapping *meta.RESTMapping, clientConfig *rest.Config) (ResourceDescriber, bool) {
// used to fetch the resource
dynamicClient, err := dynamic.NewForConfig(clientConfig)
if err != nil {
@ -242,7 +246,7 @@ type genericDescriber struct {
events corev1client.EventsGetter
}
func (g *genericDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (output string, err error) {
func (g *genericDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (output string, err error) {
obj, err := g.dynamic.Resource(g.mapping.Resource).Namespace(namespace).Get(name, metav1.GetOptions{})
if err != nil {
return "", err
@ -339,7 +343,7 @@ func smartLabelFor(field string) string {
}
// DefaultObjectDescriber can describe the default Kubernetes objects.
var DefaultObjectDescriber describe.ObjectDescriber
var DefaultObjectDescriber ObjectDescriber
func init() {
d := &Describers{}
@ -364,7 +368,7 @@ type NamespaceDescriber struct {
clientset.Interface
}
func (d *NamespaceDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *NamespaceDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
ns, err := d.CoreV1().Namespaces().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -537,7 +541,7 @@ type LimitRangeDescriber struct {
clientset.Interface
}
func (d *LimitRangeDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *LimitRangeDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
lr := d.CoreV1().LimitRanges(namespace)
limitRange, err := lr.Get(context.TODO(), name, metav1.GetOptions{})
@ -564,7 +568,7 @@ type ResourceQuotaDescriber struct {
clientset.Interface
}
func (d *ResourceQuotaDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ResourceQuotaDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
rq := d.CoreV1().ResourceQuotas(namespace)
resourceQuota, err := rq.Get(context.TODO(), name, metav1.GetOptions{})
@ -634,7 +638,7 @@ type PodDescriber struct {
clientset.Interface
}
func (d *PodDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *PodDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
pod, err := d.CoreV1().Pods(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
if describerSettings.ShowEvents {
@ -1325,7 +1329,7 @@ type PersistentVolumeDescriber struct {
clientset.Interface
}
func (d *PersistentVolumeDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *PersistentVolumeDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().PersistentVolumes()
pv, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -1473,7 +1477,7 @@ type PersistentVolumeClaimDescriber struct {
clientset.Interface
}
func (d *PersistentVolumeClaimDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *PersistentVolumeClaimDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().PersistentVolumeClaims(namespace)
pvc, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -1946,7 +1950,7 @@ type ReplicationControllerDescriber struct {
clientset.Interface
}
func (d *ReplicationControllerDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ReplicationControllerDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
rc := d.CoreV1().ReplicationControllers(namespace)
pc := d.CoreV1().Pods(namespace)
@ -2021,7 +2025,7 @@ type ReplicaSetDescriber struct {
clientset.Interface
}
func (d *ReplicaSetDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ReplicaSetDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
rsc := d.AppsV1().ReplicaSets(namespace)
pc := d.CoreV1().Pods(namespace)
@ -2083,7 +2087,7 @@ type JobDescriber struct {
clientset.Interface
}
func (d *JobDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *JobDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
job, err := d.BatchV1().Jobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -2144,7 +2148,7 @@ type CronJobDescriber struct {
client clientset.Interface
}
func (d *CronJobDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *CronJobDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
cronJob, err := d.client.BatchV1beta1().CronJobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -2243,7 +2247,7 @@ type DaemonSetDescriber struct {
clientset.Interface
}
func (d *DaemonSetDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *DaemonSetDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
dc := d.AppsV1().DaemonSets(namespace)
pc := d.CoreV1().Pods(namespace)
@ -2301,7 +2305,7 @@ type SecretDescriber struct {
clientset.Interface
}
func (d *SecretDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *SecretDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().Secrets(namespace)
secret, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -2318,8 +2322,7 @@ func describeSecret(secret *corev1.Secret) (string, error) {
w.Write(LEVEL_0, "Name:\t%s\n", secret.Name)
w.Write(LEVEL_0, "Namespace:\t%s\n", secret.Namespace)
printLabelsMultiline(w, "Labels", secret.Labels)
skipAnnotations := sets.NewString(corev1.LastAppliedConfigAnnotation)
printAnnotationsMultilineWithFilter(w, "Annotations", secret.Annotations, skipAnnotations)
printAnnotationsMultiline(w, "Annotations", secret.Annotations)
w.Write(LEVEL_0, "\nType:\t%s\n", secret.Type)
@ -2341,7 +2344,7 @@ type IngressDescriber struct {
clientset.Interface
}
func (i *IngressDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (i *IngressDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := i.NetworkingV1beta1().Ingresses(namespace)
ing, err := c.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
@ -2370,7 +2373,7 @@ func (i *IngressDescriber) describeBackend(ns string, backend *networkingv1beta1
return formatEndpoints(endpoints, sets.NewString(spName))
}
func (i *IngressDescriber) describeIngress(ing *networkingv1beta1.Ingress, describerSettings describe.DescriberSettings) (string, error) {
func (i *IngressDescriber) describeIngress(ing *networkingv1beta1.Ingress, describerSettings DescriberSettings) (string, error) {
return tabbedString(func(out io.Writer) error {
w := NewPrefixWriter(out)
w.Write(LEVEL_0, "Name:\t%v\n", ing.Name)
@ -2438,7 +2441,7 @@ type IngressClassDescriber struct {
clientset.Interface
}
func (i *IngressClassDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (i *IngressClassDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := i.NetworkingV1beta1().IngressClasses()
ic, err := c.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
@ -2447,7 +2450,7 @@ func (i *IngressClassDescriber) Describe(namespace, name string, describerSettin
return i.describeIngressClass(ic, describerSettings)
}
func (i *IngressClassDescriber) describeIngressClass(ic *networkingv1beta1.IngressClass, describerSettings describe.DescriberSettings) (string, error) {
func (i *IngressClassDescriber) describeIngressClass(ic *networkingv1beta1.IngressClass, describerSettings DescriberSettings) (string, error) {
return tabbedString(func(out io.Writer) error {
w := NewPrefixWriter(out)
w.Write(LEVEL_0, "Name:\t%s\n", ic.Name)
@ -2473,7 +2476,7 @@ type ServiceDescriber struct {
clientset.Interface
}
func (d *ServiceDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ServiceDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().Services(namespace)
service, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -2576,7 +2579,7 @@ type EndpointsDescriber struct {
clientset.Interface
}
func (d *EndpointsDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *EndpointsDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().Endpoints(namespace)
ep, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -2651,7 +2654,7 @@ type EndpointSliceDescriber struct {
clientset.Interface
}
func (d *EndpointSliceDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *EndpointSliceDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.DiscoveryV1beta1().EndpointSlices(namespace)
eps, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -2744,7 +2747,7 @@ type ServiceAccountDescriber struct {
clientset.Interface
}
func (d *ServiceAccountDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ServiceAccountDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().ServiceAccounts(namespace)
serviceAccount, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -2861,7 +2864,7 @@ type RoleDescriber struct {
clientset.Interface
}
func (d *RoleDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *RoleDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
role, err := d.RbacV1().Roles(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -2900,7 +2903,7 @@ type ClusterRoleDescriber struct {
clientset.Interface
}
func (d *ClusterRoleDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ClusterRoleDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
role, err := d.RbacV1().ClusterRoles().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -2956,7 +2959,7 @@ type RoleBindingDescriber struct {
clientset.Interface
}
func (d *RoleBindingDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *RoleBindingDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
binding, err := d.RbacV1().RoleBindings(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -2988,7 +2991,7 @@ type ClusterRoleBindingDescriber struct {
clientset.Interface
}
func (d *ClusterRoleBindingDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ClusterRoleBindingDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
binding, err := d.RbacV1().ClusterRoleBindings().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -3020,7 +3023,7 @@ type NodeDescriber struct {
clientset.Interface
}
func (d *NodeDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *NodeDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
mc := d.CoreV1().Nodes()
node, err := mc.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
@ -3176,7 +3179,7 @@ type StatefulSetDescriber struct {
client clientset.Interface
}
func (p *StatefulSetDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (p *StatefulSetDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
ps, err := p.client.AppsV1().StatefulSets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -3234,7 +3237,7 @@ type CertificateSigningRequestDescriber struct {
client clientset.Interface
}
func (p *CertificateSigningRequestDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (p *CertificateSigningRequestDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
csr, err := p.client.CertificatesV1beta1().CertificateSigningRequests().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -3319,7 +3322,7 @@ type HorizontalPodAutoscalerDescriber struct {
client clientset.Interface
}
func (d *HorizontalPodAutoscalerDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *HorizontalPodAutoscalerDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
var events *corev1.EventList
// autoscaling/v2beta2 is introduced since v1.12 and autoscaling/v1 does not have full backward compatibility
@ -3647,7 +3650,7 @@ type DeploymentDescriber struct {
client clientset.Interface
}
func (dd *DeploymentDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (dd *DeploymentDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
d, err := dd.client.AppsV1().Deployments(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -3750,7 +3753,7 @@ type ConfigMapDescriber struct {
clientset.Interface
}
func (d *ConfigMapDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *ConfigMapDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.CoreV1().ConfigMaps(namespace)
configMap, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -3788,7 +3791,7 @@ type NetworkPolicyDescriber struct {
clientset.Interface
}
func (d *NetworkPolicyDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *NetworkPolicyDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
c := d.NetworkingV1().NetworkPolicies(namespace)
networkPolicy, err := c.Get(context.TODO(), name, metav1.GetOptions{})
@ -3944,7 +3947,7 @@ type StorageClassDescriber struct {
clientset.Interface
}
func (s *StorageClassDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (s *StorageClassDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
sc, err := s.StorageV1().StorageClasses().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -3996,7 +3999,7 @@ type CSINodeDescriber struct {
clientset.Interface
}
func (c *CSINodeDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (c *CSINodeDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
csi, err := c.StorageV1().CSINodes().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -4071,7 +4074,7 @@ type PodDisruptionBudgetDescriber struct {
clientset.Interface
}
func (p *PodDisruptionBudgetDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (p *PodDisruptionBudgetDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
pdb, err := p.PolicyV1beta1().PodDisruptionBudgets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -4120,7 +4123,7 @@ type PriorityClassDescriber struct {
clientset.Interface
}
func (s *PriorityClassDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (s *PriorityClassDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
pc, err := s.SchedulingV1().PriorityClasses().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -4156,7 +4159,7 @@ type PodSecurityPolicyDescriber struct {
clientset.Interface
}
func (d *PodSecurityPolicyDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
func (d *PodSecurityPolicyDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
psp, err := d.PolicyV1beta1().PodSecurityPolicies().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return "", err
@ -4322,7 +4325,7 @@ func newErrNoDescriber(types ...reflect.Type) error {
for _, t := range types {
names = append(names, t.String())
}
return describe.ErrNoDescriber{Types: names}
return ErrNoDescriber{Types: names}
}
// Describers implements ObjectDescriber against functions registered via Add. Those functions can
@ -4369,7 +4372,7 @@ func (d *Describers) DescribeObject(exact interface{}, extra ...interface{}) (st
return "", newErrNoDescriber(append([]reflect.Type{exactType}, types...)...)
}
// Add adds one or more describer functions to the describe.Describer. The passed function must
// Add adds one or more describer functions to the Describer. The passed function must
// match the signature:
//
// func(...) (string, error)
@ -4682,21 +4685,10 @@ func (list SortableVolumeDevices) Less(i, j int) bool {
var maxAnnotationLen = 140
// printAnnotationsMultilineWithFilter prints filtered multiple annotations with a proper alignment.
func printAnnotationsMultilineWithFilter(w PrefixWriter, title string, annotations map[string]string, skip sets.String) {
printAnnotationsMultilineWithIndent(w, "", title, "\t", annotations, skip)
}
// printAnnotationsMultiline prints multiple annotations with a proper alignment.
func printAnnotationsMultiline(w PrefixWriter, title string, annotations map[string]string) {
printAnnotationsMultilineWithIndent(w, "", title, "\t", annotations, sets.NewString())
}
// printAnnotationsMultilineWithIndent prints multiple annotations with a user-defined alignment.
// If annotation string is too long, we omit chars more than 200 length.
func printAnnotationsMultilineWithIndent(w PrefixWriter, initialIndent, title, innerIndent string, annotations map[string]string, skip sets.String) {
w.Write(LEVEL_0, "%s%s:%s", initialIndent, title, innerIndent)
func printAnnotationsMultiline(w PrefixWriter, title string, annotations map[string]string) {
w.Write(LEVEL_0, "%s:\t", title)
if len(annotations) == 0 {
w.WriteLine("<none>")
@ -4706,7 +4698,7 @@ func printAnnotationsMultilineWithIndent(w PrefixWriter, initialIndent, title, i
// to print labels in the sorted order
keys := make([]string, 0, len(annotations))
for key := range annotations {
if skip.Has(key) {
if skipAnnotations.Has(key) {
continue
}
keys = append(keys, key)
@ -4716,7 +4708,7 @@ func printAnnotationsMultilineWithIndent(w PrefixWriter, initialIndent, title, i
return
}
sort.Strings(keys)
indent := initialIndent + innerIndent
indent := "\t"
for i, key := range keys {
if i != 0 {
w.Write(LEVEL_0, indent)
@ -4852,12 +4844,12 @@ func findNodeRoles(node *corev1.Node) []string {
roles := sets.NewString()
for k, v := range node.Labels {
switch {
case strings.HasPrefix(k, describe.LabelNodeRolePrefix):
if role := strings.TrimPrefix(k, describe.LabelNodeRolePrefix); len(role) > 0 {
case strings.HasPrefix(k, LabelNodeRolePrefix):
if role := strings.TrimPrefix(k, LabelNodeRolePrefix); len(role) > 0 {
roles.Insert(role)
}
case k == describe.NodeLabelRole && v != "":
case k == NodeLabelRole && v != "":
roles.Insert(v)
}
}
@ -4878,8 +4870,8 @@ func loadBalancerStatusStringer(s corev1.LoadBalancerStatus, wide bool) string {
}
r := strings.Join(result.List(), ",")
if !wide && len(r) > describe.LoadBalancerWidth {
r = r[0:(describe.LoadBalancerWidth-3)] + "..."
if !wide && len(r) > LoadBalancerWidth {
r = r[0:(LoadBalancerWidth-3)] + "..."
}
return r
}

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package versioned
package describe
import (
"bytes"
@ -42,7 +42,6 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/kubectl/pkg/describe"
utilpointer "k8s.io/utils/pointer"
)
@ -86,7 +85,7 @@ func TestDescribePod(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := PodDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -131,7 +130,7 @@ func TestDescribePodEphemeralContainers(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := PodDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -159,7 +158,7 @@ func TestDescribePodNode(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := PodDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -189,7 +188,7 @@ func TestDescribePodTolerations(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := PodDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{})
out, err := d.Describe("foo", "bar", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -216,7 +215,7 @@ func TestDescribeSecret(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := SecretDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{})
out, err := d.Describe("foo", "bar", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -236,7 +235,7 @@ func TestDescribeNamespace(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "", Interface: fake}
d := NamespaceDescriber{c}
out, err := d.Describe("", "myns", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("", "myns", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -258,7 +257,7 @@ func TestDescribePodPriority(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "", Interface: fake}
d := PodDescriber{c}
out, err := d.Describe("", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -280,7 +279,7 @@ func TestDescribeConfigMap(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := ConfigMapDescriber{c}
out, err := d.Describe("foo", "mycm", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "mycm", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -321,7 +320,7 @@ func TestDescribeLimitRange(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := LimitRangeDescriber{c}
out, err := d.Describe("foo", "mylr", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "mylr", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -485,7 +484,7 @@ func TestDescribeService(t *testing.T) {
fake := fake.NewSimpleClientset(testCase.service)
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := ServiceDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -538,7 +537,7 @@ func TestPodDescribeResultsSorted(t *testing.T) {
d := PodDescriber{c}
// Act
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
// Assert
if err != nil {
@ -889,7 +888,7 @@ func TestDescribers(t *testing.T) {
if out, err := d.DescribeObject(first, second, third); out != "" || err == nil {
t.Errorf("unexpected result: %s %v", out, err)
} else {
if noDescriber, ok := err.(describe.ErrNoDescriber); ok {
if noDescriber, ok := err.(ErrNoDescriber); ok {
if !reflect.DeepEqual(noDescriber.Types, []string{"*v1.Event", "*v1.Pod", "*v1.Pod"}) {
t.Errorf("unexpected describer: %v", err)
}
@ -1389,7 +1388,7 @@ func TestPersistentVolumeDescriber(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
fake := fake.NewSimpleClientset(test.pv)
c := PersistentVolumeDescriber{fake}
str, err := c.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
str, err := c.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("Unexpected error for test %s: %v", test.plugin, err)
}
@ -1625,7 +1624,7 @@ func TestPersistentVolumeClaimDescriber(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
fake := fake.NewSimpleClientset(test.pvc)
c := PersistentVolumeClaimDescriber{fake}
str, err := c.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
str, err := c.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("Unexpected error for test %s: %v", test.name, err)
}
@ -1665,7 +1664,7 @@ func TestDescribeDeployment(t *testing.T) {
},
})
d := DeploymentDescriber{fakeClient}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -1720,7 +1719,7 @@ func TestDescribeStorageClass(t *testing.T) {
},
})
s := StorageClassDescriber{f}
out, err := s.Describe("", "foo", describe.DescriberSettings{ShowEvents: true})
out, err := s.Describe("", "foo", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -1758,7 +1757,7 @@ func TestDescribePodDisruptionBudget(t *testing.T) {
},
})
s := PodDisruptionBudgetDescriber{f}
out, err := s.Describe("ns1", "pdb1", describe.DescriberSettings{ShowEvents: true})
out, err := s.Describe("ns1", "pdb1", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -2498,7 +2497,7 @@ func TestDescribeHorizontalPodAutoscaler(t *testing.T) {
}
fake := fake.NewSimpleClientset(&test.hpa)
desc := HorizontalPodAutoscalerDescriber{fake}
str, err := desc.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
str, err := desc.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("Unexpected error for test %s: %v", test.name, err)
}
@ -2593,7 +2592,7 @@ func TestDescribeHorizontalPodAutoscaler(t *testing.T) {
}
fake := fake.NewSimpleClientset(&test.hpa)
desc := HorizontalPodAutoscalerDescriber{fake}
str, err := desc.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
str, err := desc.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("Unexpected error for test %s: %v", test.name, err)
}
@ -2623,7 +2622,7 @@ func TestDescribeEvents(t *testing.T) {
},
}
m := map[string]describe.Describer{
m := map[string]ResourceDescriber{
"DaemonSetDescriber": &DaemonSetDescriber{
fake.NewSimpleClientset(&appsv1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{
@ -2745,7 +2744,7 @@ func TestDescribeEvents(t *testing.T) {
for name, d := range m {
t.Run(name, func(t *testing.T) {
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error for %q: %v", name, err)
}
@ -2756,7 +2755,7 @@ func TestDescribeEvents(t *testing.T) {
t.Errorf("events not found for %q when ShowEvents=true: %s", name, out)
}
out, err = d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: false})
out, err = d.Describe("foo", "bar", DescriberSettings{ShowEvents: false})
if err != nil {
t.Errorf("unexpected error for %q: %s", name, err)
}
@ -2959,7 +2958,7 @@ func TestDescribePodSecurityPolicy(t *testing.T) {
c := &describeClient{T: t, Namespace: "", Interface: fake}
d := PodSecurityPolicyDescriber{c}
out, err := d.Describe("", "mypsp", describe.DescriberSettings{})
out, err := d.Describe("", "mypsp", DescriberSettings{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
@ -2998,7 +2997,7 @@ func TestDescribeResourceQuota(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := ResourceQuotaDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3027,7 +3026,7 @@ func TestDescribeIngressClass(t *testing.T) {
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := IngressClassDescriber{c}
out, err := d.Describe("", "example-class", describe.DescriberSettings{})
out, err := d.Describe("", "example-class", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3241,7 +3240,7 @@ Spec:
},
})
d := NetworkPolicyDescriber{versionedFake}
out, err := d.Describe("default", "network-policy-1", describe.DescriberSettings{})
out, err := d.Describe("default", "network-policy-1", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
@ -3368,7 +3367,7 @@ Spec:
},
})
d := NetworkPolicyDescriber{versionedFake}
out, err := d.Describe("default", "network-policy-1", describe.DescriberSettings{})
out, err := d.Describe("default", "network-policy-1", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
@ -3496,7 +3495,7 @@ Spec:
},
})
d := NetworkPolicyDescriber{versionedFake}
out, err := d.Describe("default", "network-policy-1", describe.DescriberSettings{})
out, err := d.Describe("default", "network-policy-1", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %s", err)
}
@ -3524,7 +3523,7 @@ func TestDescribeServiceAccount(t *testing.T) {
})
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := ServiceAccountDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3633,7 +3632,7 @@ func TestDescribeNode(t *testing.T) {
)
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := NodeDescriber{c}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3682,7 +3681,7 @@ func TestDescribeStatefulSet(t *testing.T) {
},
})
d := StatefulSetDescriber{fake}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3736,7 +3735,7 @@ func TestDescribeEndpointSlice(t *testing.T) {
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
d := EndpointSliceDescriber{c}
out, err := d.Describe("bar", "foo.123", describe.DescriberSettings{ShowEvents: true})
out, err := d.Describe("bar", "foo.123", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
@ -3854,7 +3853,7 @@ func TestControllerRef(t *testing.T) {
},
})
d := ReplicationControllerDescriber{f}
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: false})
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: false})
if err != nil {
t.Errorf("unexpected error: %v", err)
}

View File

@ -35,12 +35,12 @@ const (
)
// DescriberFunc gives a way to display the specified RESTMapping type
type DescriberFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (Describer, error)
type DescriberFunc func(restClientGetter genericclioptions.RESTClientGetter, mapping *meta.RESTMapping) (ResourceDescriber, error)
// Describer generates output for the named resource or an error
// ResourceDescriber generates output for the named resource or an error
// if the output could not be generated. Implementers typically
// abstract the retrieval of the named object from a remote server.
type Describer interface {
type ResourceDescriber interface {
Describe(namespace, name string, describerSettings DescriberSettings) (output string, err error)
}

View File

@ -1,98 +0,0 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["describe.go"],
importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/describe/versioned",
importpath = "k8s.io/kubectl/pkg/describe/versioned",
visibility = ["//visibility:public"],
deps = [
"//staging/src/k8s.io/api/apps/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v2beta2:go_default_library",
"//staging/src/k8s.io/api/batch/v1:go_default_library",
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
"//staging/src/k8s.io/api/certificates/v1beta1:go_default_library",
"//staging/src/k8s.io/api/coordination/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
"//staging/src/k8s.io/api/networking/v1:go_default_library",
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
"//staging/src/k8s.io/api/storage/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/duration:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/certificate:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/event:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/fieldpath:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/qos:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/rbac:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/resource:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/slice:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/storage:go_default_library",
"//vendor/github.com/fatih/camelcase:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["describe_test.go"],
embed = [":go_default_library"],
deps = [
"//staging/src/k8s.io/api/apps/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v1:go_default_library",
"//staging/src/k8s.io/api/autoscaling/v2beta2:go_default_library",
"//staging/src/k8s.io/api/coordination/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/api/networking/v1:go_default_library",
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
"//staging/src/k8s.io/api/storage/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//vendor/k8s.io/utils/pointer:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@ -53,7 +53,7 @@ go_library(
"//staging/src/k8s.io/client-go/tools/watch:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/apps:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/cmd/util:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/describe:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/deployment:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library",

View File

@ -36,7 +36,7 @@ import (
"k8s.io/client-go/kubernetes"
clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
"k8s.io/kubectl/pkg/apps"
describe "k8s.io/kubectl/pkg/describe/versioned"
"k8s.io/kubectl/pkg/describe"
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
sliceutil "k8s.io/kubectl/pkg/util/slice"
)

1
vendor/modules.txt vendored
View File

@ -1824,7 +1824,6 @@ k8s.io/kubectl/pkg/cmd/util/sanity
k8s.io/kubectl/pkg/cmd/version
k8s.io/kubectl/pkg/cmd/wait
k8s.io/kubectl/pkg/describe
k8s.io/kubectl/pkg/describe/versioned
k8s.io/kubectl/pkg/drain
k8s.io/kubectl/pkg/explain
k8s.io/kubectl/pkg/generate