mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
Merge pull request #88758 from soltysh/hide_last_applied
Hide kubectl.kubernetes.io/last-applied-configuration in describe
This commit is contained in:
commit
0535520f6e
@ -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/top
|
||||||
staging/src/k8s.io/kubectl/pkg/cmd/util
|
staging/src/k8s.io/kubectl/pkg/cmd/util
|
||||||
staging/src/k8s.io/kubectl/pkg/cmd/wait
|
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
|
||||||
staging/src/k8s.io/kubectl/pkg/generate/versioned
|
staging/src/k8s.io/kubectl/pkg/generate/versioned
|
||||||
staging/src/k8s.io/kubectl/pkg/metricsutil
|
staging/src/k8s.io/kubectl/pkg/metricsutil
|
||||||
|
@ -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/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/typed/rbac/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/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/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/util/rbac: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",
|
"//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library",
|
||||||
|
@ -39,7 +39,7 @@ import (
|
|||||||
discovery "k8s.io/client-go/discovery"
|
discovery "k8s.io/client-go/discovery"
|
||||||
authorizationv1client "k8s.io/client-go/kubernetes/typed/authorization/v1"
|
authorizationv1client "k8s.io/client-go/kubernetes/typed/authorization/v1"
|
||||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
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"
|
rbacutil "k8s.io/kubectl/pkg/util/rbac"
|
||||||
"k8s.io/kubectl/pkg/util/templates"
|
"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 {
|
func printAccess(out io.Writer, rules []rbacv1.PolicyRule) error {
|
||||||
for _, r := range rules {
|
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
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/cli-runtime/pkg/resource:go_default_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/cmd/util:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/describe: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/i18n:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library",
|
"//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library",
|
||||||
"//vendor/github.com/spf13/cobra: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/client-go/rest/fake:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/cmd/testing: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:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:go_default_library",
|
|
||||||
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
|
"//staging/src/k8s.io/kubectl/pkg/scheme:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -30,7 +30,6 @@ import (
|
|||||||
"k8s.io/cli-runtime/pkg/resource"
|
"k8s.io/cli-runtime/pkg/resource"
|
||||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
||||||
"k8s.io/kubectl/pkg/describe"
|
"k8s.io/kubectl/pkg/describe"
|
||||||
describeversioned "k8s.io/kubectl/pkg/describe/versioned"
|
|
||||||
"k8s.io/kubectl/pkg/util/i18n"
|
"k8s.io/kubectl/pkg/util/i18n"
|
||||||
"k8s.io/kubectl/pkg/util/templates"
|
"k8s.io/kubectl/pkg/util/templates"
|
||||||
)
|
)
|
||||||
@ -74,7 +73,7 @@ type DescribeOptions struct {
|
|||||||
Selector string
|
Selector string
|
||||||
Namespace string
|
Namespace string
|
||||||
|
|
||||||
Describer func(*meta.RESTMapping) (describe.Describer, error)
|
Describer func(*meta.RESTMapping) (describe.ResourceDescriber, error)
|
||||||
NewBuilder func() *resource.Builder
|
NewBuilder func() *resource.Builder
|
||||||
|
|
||||||
BuilderArgs []string
|
BuilderArgs []string
|
||||||
@ -136,8 +135,8 @@ func (o *DescribeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
|||||||
|
|
||||||
o.BuilderArgs = args
|
o.BuilderArgs = args
|
||||||
|
|
||||||
o.Describer = func(mapping *meta.RESTMapping) (describe.Describer, error) {
|
o.Describer = func(mapping *meta.RESTMapping) (describe.ResourceDescriber, error) {
|
||||||
return describeversioned.DescriberFn(f, mapping)
|
return describe.DescriberFn(f, mapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.NewBuilder = f.NewBuilder
|
o.NewBuilder = f.NewBuilder
|
||||||
|
@ -28,18 +28,17 @@ import (
|
|||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
|
cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
|
||||||
"k8s.io/kubectl/pkg/describe"
|
"k8s.io/kubectl/pkg/describe"
|
||||||
versioneddescribe "k8s.io/kubectl/pkg/describe/versioned"
|
|
||||||
"k8s.io/kubectl/pkg/scheme"
|
"k8s.io/kubectl/pkg/scheme"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
||||||
func TestDescribeUnknownSchemaObject(t *testing.T) {
|
func TestDescribeUnknownSchemaObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("non-default")
|
tf := cmdtesting.NewTestFactory().WithNamespace("non-default")
|
||||||
defer tf.Cleanup()
|
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.
|
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
|
||||||
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
tf := cmdtesting.NewTestFactory()
|
tf := cmdtesting.NewTestFactory()
|
||||||
defer tf.Cleanup()
|
defer tf.Cleanup()
|
||||||
@ -99,11 +98,11 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
|
|||||||
|
|
||||||
func TestDescribeObject(t *testing.T) {
|
func TestDescribeObject(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
_, _, rc := cmdtesting.TestData()
|
_, _, rc := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
@ -140,11 +139,11 @@ func TestDescribeObject(t *testing.T) {
|
|||||||
|
|
||||||
func TestDescribeListObjects(t *testing.T) {
|
func TestDescribeListObjects(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
@ -167,11 +166,11 @@ func TestDescribeListObjects(t *testing.T) {
|
|||||||
|
|
||||||
func TestDescribeObjectShowEvents(t *testing.T) {
|
func TestDescribeObjectShowEvents(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
@ -193,11 +192,11 @@ func TestDescribeObjectShowEvents(t *testing.T) {
|
|||||||
|
|
||||||
func TestDescribeObjectSkipEvents(t *testing.T) {
|
func TestDescribeObjectSkipEvents(t *testing.T) {
|
||||||
d := &testDescriber{Output: "test output"}
|
d := &testDescriber{Output: "test output"}
|
||||||
oldFn := versioneddescribe.DescriberFn
|
oldFn := describe.DescriberFn
|
||||||
defer func() {
|
defer func() {
|
||||||
versioneddescribe.DescriberFn = oldFn
|
describe.DescriberFn = oldFn
|
||||||
}()
|
}()
|
||||||
versioneddescribe.DescriberFn = d.describerFor
|
describe.DescriberFn = d.describerFor
|
||||||
|
|
||||||
pods, _, _ := cmdtesting.TestData()
|
pods, _, _ := cmdtesting.TestData()
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
@ -310,6 +309,6 @@ func (t *testDescriber) Describe(namespace, name string, describerSettings descr
|
|||||||
t.Settings = describerSettings
|
t.Settings = describerSettings
|
||||||
return t.Output, t.Err
|
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
|
return t, nil
|
||||||
}
|
}
|
||||||
|
@ -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(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = ["interface.go"],
|
srcs = [
|
||||||
|
"describe.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/describe",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/describe",
|
||||||
importpath = "k8s.io/kubectl/pkg/describe",
|
importpath = "k8s.io/kubectl/pkg/describe",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
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/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/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(
|
filegroup(
|
||||||
name = "all-srcs",
|
name = "all-srcs",
|
||||||
srcs = [
|
srcs = [":package-srcs"],
|
||||||
":package-srcs",
|
|
||||||
"//staging/src/k8s.io/kubectl/pkg/describe/versioned:all-srcs",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
visibility = ["//visibility:public"],
|
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",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package versioned
|
package describe
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -68,7 +68,6 @@ import (
|
|||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/reference"
|
"k8s.io/client-go/tools/reference"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubectl/pkg/describe"
|
|
||||||
"k8s.io/kubectl/pkg/scheme"
|
"k8s.io/kubectl/pkg/scheme"
|
||||||
"k8s.io/kubectl/pkg/util/certificate"
|
"k8s.io/kubectl/pkg/util/certificate"
|
||||||
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
|
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
|
||||||
@ -90,11 +89,16 @@ const (
|
|||||||
LEVEL_4
|
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
|
// 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.
|
// 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()
|
clientConfig, err := restClientGetter.ToRESTConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
c, err := clientset.NewForConfig(clientConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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: "Pod"}: &PodDescriber{c},
|
||||||
{Group: corev1.GroupName, Kind: "ReplicationController"}: &ReplicationControllerDescriber{c},
|
{Group: corev1.GroupName, Kind: "ReplicationController"}: &ReplicationControllerDescriber{c},
|
||||||
{Group: corev1.GroupName, Kind: "Secret"}: &SecretDescriber{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
|
// DescriberFor returns the default describe functions for each of the standard
|
||||||
// Kubernetes types.
|
// 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)
|
describers, err := describerMap(clientConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.V(1).Info(err)
|
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
|
// GenericDescriberFor returns a generic describer for the specified mapping
|
||||||
// that uses only information available from runtime.Unstructured
|
// 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
|
// used to fetch the resource
|
||||||
dynamicClient, err := dynamic.NewForConfig(clientConfig)
|
dynamicClient, err := dynamic.NewForConfig(clientConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -242,7 +246,7 @@ type genericDescriber struct {
|
|||||||
events corev1client.EventsGetter
|
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{})
|
obj, err := g.dynamic.Resource(g.mapping.Resource).Namespace(namespace).Get(name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -339,7 +343,7 @@ func smartLabelFor(field string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DefaultObjectDescriber can describe the default Kubernetes objects.
|
// DefaultObjectDescriber can describe the default Kubernetes objects.
|
||||||
var DefaultObjectDescriber describe.ObjectDescriber
|
var DefaultObjectDescriber ObjectDescriber
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
d := &Describers{}
|
d := &Describers{}
|
||||||
@ -364,7 +368,7 @@ type NamespaceDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
ns, err := d.CoreV1().Namespaces().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -537,7 +541,7 @@ type LimitRangeDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
lr := d.CoreV1().LimitRanges(namespace)
|
||||||
|
|
||||||
limitRange, err := lr.Get(context.TODO(), name, metav1.GetOptions{})
|
limitRange, err := lr.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -564,7 +568,7 @@ type ResourceQuotaDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
rq := d.CoreV1().ResourceQuotas(namespace)
|
||||||
|
|
||||||
resourceQuota, err := rq.Get(context.TODO(), name, metav1.GetOptions{})
|
resourceQuota, err := rq.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -634,7 +638,7 @@ type PodDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
pod, err := d.CoreV1().Pods(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if describerSettings.ShowEvents {
|
if describerSettings.ShowEvents {
|
||||||
@ -1325,7 +1329,7 @@ type PersistentVolumeDescriber struct {
|
|||||||
clientset.Interface
|
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()
|
c := d.CoreV1().PersistentVolumes()
|
||||||
|
|
||||||
pv, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
pv, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -1473,7 +1477,7 @@ type PersistentVolumeClaimDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().PersistentVolumeClaims(namespace)
|
||||||
|
|
||||||
pvc, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
pvc, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -1946,7 +1950,7 @@ type ReplicationControllerDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
rc := d.CoreV1().ReplicationControllers(namespace)
|
||||||
pc := d.CoreV1().Pods(namespace)
|
pc := d.CoreV1().Pods(namespace)
|
||||||
|
|
||||||
@ -2021,7 +2025,7 @@ type ReplicaSetDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
rsc := d.AppsV1().ReplicaSets(namespace)
|
||||||
pc := d.CoreV1().Pods(namespace)
|
pc := d.CoreV1().Pods(namespace)
|
||||||
|
|
||||||
@ -2083,7 +2087,7 @@ type JobDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
job, err := d.BatchV1().Jobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -2144,7 +2148,7 @@ type CronJobDescriber struct {
|
|||||||
client clientset.Interface
|
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{})
|
cronJob, err := d.client.BatchV1beta1().CronJobs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -2243,7 +2247,7 @@ type DaemonSetDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
dc := d.AppsV1().DaemonSets(namespace)
|
||||||
pc := d.CoreV1().Pods(namespace)
|
pc := d.CoreV1().Pods(namespace)
|
||||||
|
|
||||||
@ -2301,7 +2305,7 @@ type SecretDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().Secrets(namespace)
|
||||||
|
|
||||||
secret, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
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, "Name:\t%s\n", secret.Name)
|
||||||
w.Write(LEVEL_0, "Namespace:\t%s\n", secret.Namespace)
|
w.Write(LEVEL_0, "Namespace:\t%s\n", secret.Namespace)
|
||||||
printLabelsMultiline(w, "Labels", secret.Labels)
|
printLabelsMultiline(w, "Labels", secret.Labels)
|
||||||
skipAnnotations := sets.NewString(corev1.LastAppliedConfigAnnotation)
|
printAnnotationsMultiline(w, "Annotations", secret.Annotations)
|
||||||
printAnnotationsMultilineWithFilter(w, "Annotations", secret.Annotations, skipAnnotations)
|
|
||||||
|
|
||||||
w.Write(LEVEL_0, "\nType:\t%s\n", secret.Type)
|
w.Write(LEVEL_0, "\nType:\t%s\n", secret.Type)
|
||||||
|
|
||||||
@ -2341,7 +2344,7 @@ type IngressDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := i.NetworkingV1beta1().Ingresses(namespace)
|
||||||
ing, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
ing, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -2370,7 +2373,7 @@ func (i *IngressDescriber) describeBackend(ns string, backend *networkingv1beta1
|
|||||||
return formatEndpoints(endpoints, sets.NewString(spName))
|
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 {
|
return tabbedString(func(out io.Writer) error {
|
||||||
w := NewPrefixWriter(out)
|
w := NewPrefixWriter(out)
|
||||||
w.Write(LEVEL_0, "Name:\t%v\n", ing.Name)
|
w.Write(LEVEL_0, "Name:\t%v\n", ing.Name)
|
||||||
@ -2438,7 +2441,7 @@ type IngressClassDescriber struct {
|
|||||||
clientset.Interface
|
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()
|
c := i.NetworkingV1beta1().IngressClasses()
|
||||||
ic, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
ic, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -2447,7 +2450,7 @@ func (i *IngressClassDescriber) Describe(namespace, name string, describerSettin
|
|||||||
return i.describeIngressClass(ic, describerSettings)
|
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 {
|
return tabbedString(func(out io.Writer) error {
|
||||||
w := NewPrefixWriter(out)
|
w := NewPrefixWriter(out)
|
||||||
w.Write(LEVEL_0, "Name:\t%s\n", ic.Name)
|
w.Write(LEVEL_0, "Name:\t%s\n", ic.Name)
|
||||||
@ -2473,7 +2476,7 @@ type ServiceDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().Services(namespace)
|
||||||
|
|
||||||
service, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
service, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -2576,7 +2579,7 @@ type EndpointsDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().Endpoints(namespace)
|
||||||
|
|
||||||
ep, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
ep, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -2651,7 +2654,7 @@ type EndpointSliceDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.DiscoveryV1beta1().EndpointSlices(namespace)
|
||||||
|
|
||||||
eps, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
eps, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -2744,7 +2747,7 @@ type ServiceAccountDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().ServiceAccounts(namespace)
|
||||||
|
|
||||||
serviceAccount, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
serviceAccount, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -2861,7 +2864,7 @@ type RoleDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
role, err := d.RbacV1().Roles(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -2900,7 +2903,7 @@ type ClusterRoleDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
role, err := d.RbacV1().ClusterRoles().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -2956,7 +2959,7 @@ type RoleBindingDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
binding, err := d.RbacV1().RoleBindings(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -2988,7 +2991,7 @@ type ClusterRoleBindingDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
binding, err := d.RbacV1().ClusterRoleBindings().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -3020,7 +3023,7 @@ type NodeDescriber struct {
|
|||||||
clientset.Interface
|
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()
|
mc := d.CoreV1().Nodes()
|
||||||
node, err := mc.Get(context.TODO(), name, metav1.GetOptions{})
|
node, err := mc.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -3176,7 +3179,7 @@ type StatefulSetDescriber struct {
|
|||||||
client clientset.Interface
|
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{})
|
ps, err := p.client.AppsV1().StatefulSets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -3234,7 +3237,7 @@ type CertificateSigningRequestDescriber struct {
|
|||||||
client clientset.Interface
|
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{})
|
csr, err := p.client.CertificatesV1beta1().CertificateSigningRequests().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -3319,7 +3322,7 @@ type HorizontalPodAutoscalerDescriber struct {
|
|||||||
client clientset.Interface
|
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
|
var events *corev1.EventList
|
||||||
|
|
||||||
// autoscaling/v2beta2 is introduced since v1.12 and autoscaling/v1 does not have full backward compatibility
|
// 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
|
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{})
|
d, err := dd.client.AppsV1().Deployments(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -3750,7 +3753,7 @@ type ConfigMapDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.CoreV1().ConfigMaps(namespace)
|
||||||
|
|
||||||
configMap, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
configMap, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -3788,7 +3791,7 @@ type NetworkPolicyDescriber struct {
|
|||||||
clientset.Interface
|
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)
|
c := d.NetworkingV1().NetworkPolicies(namespace)
|
||||||
|
|
||||||
networkPolicy, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
networkPolicy, err := c.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
@ -3944,7 +3947,7 @@ type StorageClassDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
sc, err := s.StorageV1().StorageClasses().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -3996,7 +3999,7 @@ type CSINodeDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
csi, err := c.StorageV1().CSINodes().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -4071,7 +4074,7 @@ type PodDisruptionBudgetDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
pdb, err := p.PolicyV1beta1().PodDisruptionBudgets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -4120,7 +4123,7 @@ type PriorityClassDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
pc, err := s.SchedulingV1().PriorityClasses().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -4156,7 +4159,7 @@ type PodSecurityPolicyDescriber struct {
|
|||||||
clientset.Interface
|
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{})
|
psp, err := d.PolicyV1beta1().PodSecurityPolicies().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -4322,7 +4325,7 @@ func newErrNoDescriber(types ...reflect.Type) error {
|
|||||||
for _, t := range types {
|
for _, t := range types {
|
||||||
names = append(names, t.String())
|
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
|
// 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...)...)
|
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:
|
// match the signature:
|
||||||
//
|
//
|
||||||
// func(...) (string, error)
|
// func(...) (string, error)
|
||||||
@ -4682,21 +4685,10 @@ func (list SortableVolumeDevices) Less(i, j int) bool {
|
|||||||
|
|
||||||
var maxAnnotationLen = 140
|
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.
|
// 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.
|
// 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) {
|
func printAnnotationsMultiline(w PrefixWriter, title string, annotations map[string]string) {
|
||||||
|
w.Write(LEVEL_0, "%s:\t", title)
|
||||||
w.Write(LEVEL_0, "%s%s:%s", initialIndent, title, innerIndent)
|
|
||||||
|
|
||||||
if len(annotations) == 0 {
|
if len(annotations) == 0 {
|
||||||
w.WriteLine("<none>")
|
w.WriteLine("<none>")
|
||||||
@ -4706,7 +4698,7 @@ func printAnnotationsMultilineWithIndent(w PrefixWriter, initialIndent, title, i
|
|||||||
// to print labels in the sorted order
|
// to print labels in the sorted order
|
||||||
keys := make([]string, 0, len(annotations))
|
keys := make([]string, 0, len(annotations))
|
||||||
for key := range annotations {
|
for key := range annotations {
|
||||||
if skip.Has(key) {
|
if skipAnnotations.Has(key) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
@ -4716,7 +4708,7 @@ func printAnnotationsMultilineWithIndent(w PrefixWriter, initialIndent, title, i
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
sort.Strings(keys)
|
sort.Strings(keys)
|
||||||
indent := initialIndent + innerIndent
|
indent := "\t"
|
||||||
for i, key := range keys {
|
for i, key := range keys {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
w.Write(LEVEL_0, indent)
|
w.Write(LEVEL_0, indent)
|
||||||
@ -4852,12 +4844,12 @@ func findNodeRoles(node *corev1.Node) []string {
|
|||||||
roles := sets.NewString()
|
roles := sets.NewString()
|
||||||
for k, v := range node.Labels {
|
for k, v := range node.Labels {
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(k, describe.LabelNodeRolePrefix):
|
case strings.HasPrefix(k, LabelNodeRolePrefix):
|
||||||
if role := strings.TrimPrefix(k, describe.LabelNodeRolePrefix); len(role) > 0 {
|
if role := strings.TrimPrefix(k, LabelNodeRolePrefix); len(role) > 0 {
|
||||||
roles.Insert(role)
|
roles.Insert(role)
|
||||||
}
|
}
|
||||||
|
|
||||||
case k == describe.NodeLabelRole && v != "":
|
case k == NodeLabelRole && v != "":
|
||||||
roles.Insert(v)
|
roles.Insert(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4878,8 +4870,8 @@ func loadBalancerStatusStringer(s corev1.LoadBalancerStatus, wide bool) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
r := strings.Join(result.List(), ",")
|
r := strings.Join(result.List(), ",")
|
||||||
if !wide && len(r) > describe.LoadBalancerWidth {
|
if !wide && len(r) > LoadBalancerWidth {
|
||||||
r = r[0:(describe.LoadBalancerWidth-3)] + "..."
|
r = r[0:(LoadBalancerWidth-3)] + "..."
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
}
|
}
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package versioned
|
package describe
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -42,7 +42,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/kubernetes/fake"
|
"k8s.io/client-go/kubernetes/fake"
|
||||||
"k8s.io/kubectl/pkg/describe"
|
|
||||||
utilpointer "k8s.io/utils/pointer"
|
utilpointer "k8s.io/utils/pointer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -86,7 +85,7 @@ func TestDescribePod(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := PodDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -131,7 +130,7 @@ func TestDescribePodEphemeralContainers(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := PodDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -159,7 +158,7 @@ func TestDescribePodNode(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := PodDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -189,7 +188,7 @@ func TestDescribePodTolerations(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := PodDescriber{c}
|
d := PodDescriber{c}
|
||||||
out, err := d.Describe("foo", "bar", describe.DescriberSettings{})
|
out, err := d.Describe("foo", "bar", DescriberSettings{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -216,7 +215,7 @@ func TestDescribeSecret(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := SecretDescriber{c}
|
d := SecretDescriber{c}
|
||||||
out, err := d.Describe("foo", "bar", describe.DescriberSettings{})
|
out, err := d.Describe("foo", "bar", DescriberSettings{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -236,7 +235,7 @@ func TestDescribeNamespace(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "", Interface: fake}
|
c := &describeClient{T: t, Namespace: "", Interface: fake}
|
||||||
d := NamespaceDescriber{c}
|
d := NamespaceDescriber{c}
|
||||||
out, err := d.Describe("", "myns", describe.DescriberSettings{ShowEvents: true})
|
out, err := d.Describe("", "myns", DescriberSettings{ShowEvents: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -258,7 +257,7 @@ func TestDescribePodPriority(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "", Interface: fake}
|
c := &describeClient{T: t, Namespace: "", Interface: fake}
|
||||||
d := PodDescriber{c}
|
d := PodDescriber{c}
|
||||||
out, err := d.Describe("", "bar", describe.DescriberSettings{ShowEvents: true})
|
out, err := d.Describe("", "bar", DescriberSettings{ShowEvents: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -280,7 +279,7 @@ func TestDescribeConfigMap(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := ConfigMapDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -321,7 +320,7 @@ func TestDescribeLimitRange(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := LimitRangeDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -485,7 +484,7 @@ func TestDescribeService(t *testing.T) {
|
|||||||
fake := fake.NewSimpleClientset(testCase.service)
|
fake := fake.NewSimpleClientset(testCase.service)
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := ServiceDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -538,7 +537,7 @@ func TestPodDescribeResultsSorted(t *testing.T) {
|
|||||||
d := PodDescriber{c}
|
d := PodDescriber{c}
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
out, err := d.Describe("foo", "bar", describe.DescriberSettings{ShowEvents: true})
|
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -889,7 +888,7 @@ func TestDescribers(t *testing.T) {
|
|||||||
if out, err := d.DescribeObject(first, second, third); out != "" || err == nil {
|
if out, err := d.DescribeObject(first, second, third); out != "" || err == nil {
|
||||||
t.Errorf("unexpected result: %s %v", out, err)
|
t.Errorf("unexpected result: %s %v", out, err)
|
||||||
} else {
|
} 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"}) {
|
if !reflect.DeepEqual(noDescriber.Types, []string{"*v1.Event", "*v1.Pod", "*v1.Pod"}) {
|
||||||
t.Errorf("unexpected describer: %v", err)
|
t.Errorf("unexpected describer: %v", err)
|
||||||
}
|
}
|
||||||
@ -1389,7 +1388,7 @@ func TestPersistentVolumeDescriber(t *testing.T) {
|
|||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
fake := fake.NewSimpleClientset(test.pv)
|
fake := fake.NewSimpleClientset(test.pv)
|
||||||
c := PersistentVolumeDescriber{fake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("Unexpected error for test %s: %v", test.plugin, err)
|
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) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
fake := fake.NewSimpleClientset(test.pvc)
|
fake := fake.NewSimpleClientset(test.pvc)
|
||||||
c := PersistentVolumeClaimDescriber{fake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("Unexpected error for test %s: %v", test.name, err)
|
t.Errorf("Unexpected error for test %s: %v", test.name, err)
|
||||||
}
|
}
|
||||||
@ -1665,7 +1664,7 @@ func TestDescribeDeployment(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := DeploymentDescriber{fakeClient}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -1720,7 +1719,7 @@ func TestDescribeStorageClass(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
s := StorageClassDescriber{f}
|
s := StorageClassDescriber{f}
|
||||||
out, err := s.Describe("", "foo", describe.DescriberSettings{ShowEvents: true})
|
out, err := s.Describe("", "foo", DescriberSettings{ShowEvents: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -1758,7 +1757,7 @@ func TestDescribePodDisruptionBudget(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
s := PodDisruptionBudgetDescriber{f}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -2498,7 +2497,7 @@ func TestDescribeHorizontalPodAutoscaler(t *testing.T) {
|
|||||||
}
|
}
|
||||||
fake := fake.NewSimpleClientset(&test.hpa)
|
fake := fake.NewSimpleClientset(&test.hpa)
|
||||||
desc := HorizontalPodAutoscalerDescriber{fake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("Unexpected error for test %s: %v", test.name, err)
|
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)
|
fake := fake.NewSimpleClientset(&test.hpa)
|
||||||
desc := HorizontalPodAutoscalerDescriber{fake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("Unexpected error for test %s: %v", test.name, err)
|
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{
|
"DaemonSetDescriber": &DaemonSetDescriber{
|
||||||
fake.NewSimpleClientset(&appsv1.DaemonSet{
|
fake.NewSimpleClientset(&appsv1.DaemonSet{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
@ -2745,7 +2744,7 @@ func TestDescribeEvents(t *testing.T) {
|
|||||||
|
|
||||||
for name, d := range m {
|
for name, d := range m {
|
||||||
t.Run(name, func(t *testing.T) {
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error for %q: %v", name, err)
|
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)
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error for %q: %s", name, err)
|
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}
|
c := &describeClient{T: t, Namespace: "", Interface: fake}
|
||||||
d := PodSecurityPolicyDescriber{c}
|
d := PodSecurityPolicyDescriber{c}
|
||||||
out, err := d.Describe("", "mypsp", describe.DescriberSettings{})
|
out, err := d.Describe("", "mypsp", DescriberSettings{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -2998,7 +2997,7 @@ func TestDescribeResourceQuota(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := ResourceQuotaDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3027,7 +3026,7 @@ func TestDescribeIngressClass(t *testing.T) {
|
|||||||
|
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := IngressClassDescriber{c}
|
d := IngressClassDescriber{c}
|
||||||
out, err := d.Describe("", "example-class", describe.DescriberSettings{})
|
out, err := d.Describe("", "example-class", DescriberSettings{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3241,7 +3240,7 @@ Spec:
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := NetworkPolicyDescriber{versionedFake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %s", err)
|
t.Errorf("unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
@ -3368,7 +3367,7 @@ Spec:
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := NetworkPolicyDescriber{versionedFake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %s", err)
|
t.Errorf("unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
@ -3496,7 +3495,7 @@ Spec:
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := NetworkPolicyDescriber{versionedFake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %s", err)
|
t.Errorf("unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
@ -3524,7 +3523,7 @@ func TestDescribeServiceAccount(t *testing.T) {
|
|||||||
})
|
})
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := ServiceAccountDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3633,7 +3632,7 @@ func TestDescribeNode(t *testing.T) {
|
|||||||
)
|
)
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := NodeDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3682,7 +3681,7 @@ func TestDescribeStatefulSet(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := StatefulSetDescriber{fake}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3736,7 +3735,7 @@ func TestDescribeEndpointSlice(t *testing.T) {
|
|||||||
|
|
||||||
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
c := &describeClient{T: t, Namespace: "foo", Interface: fake}
|
||||||
d := EndpointSliceDescriber{c}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@ -3854,7 +3853,7 @@ func TestControllerRef(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
d := ReplicationControllerDescriber{f}
|
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 {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
@ -35,12 +35,12 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// DescriberFunc gives a way to display the specified RESTMapping type
|
// 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
|
// if the output could not be generated. Implementers typically
|
||||||
// abstract the retrieval of the named object from a remote server.
|
// 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)
|
Describe(namespace, name string, describerSettings DescriberSettings) (output string, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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"],
|
|
||||||
)
|
|
@ -53,7 +53,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/tools/watch:go_default_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/apps:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/cmd/util: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/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/kubectl/pkg/util/deployment: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",
|
"//staging/src/k8s.io/kubectl/pkg/util/podutils:go_default_library",
|
||||||
|
@ -36,7 +36,7 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
|
clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1"
|
||||||
"k8s.io/kubectl/pkg/apps"
|
"k8s.io/kubectl/pkg/apps"
|
||||||
describe "k8s.io/kubectl/pkg/describe/versioned"
|
"k8s.io/kubectl/pkg/describe"
|
||||||
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
|
deploymentutil "k8s.io/kubectl/pkg/util/deployment"
|
||||||
sliceutil "k8s.io/kubectl/pkg/util/slice"
|
sliceutil "k8s.io/kubectl/pkg/util/slice"
|
||||||
)
|
)
|
||||||
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
@ -1824,7 +1824,6 @@ k8s.io/kubectl/pkg/cmd/util/sanity
|
|||||||
k8s.io/kubectl/pkg/cmd/version
|
k8s.io/kubectl/pkg/cmd/version
|
||||||
k8s.io/kubectl/pkg/cmd/wait
|
k8s.io/kubectl/pkg/cmd/wait
|
||||||
k8s.io/kubectl/pkg/describe
|
k8s.io/kubectl/pkg/describe
|
||||||
k8s.io/kubectl/pkg/describe/versioned
|
|
||||||
k8s.io/kubectl/pkg/drain
|
k8s.io/kubectl/pkg/drain
|
||||||
k8s.io/kubectl/pkg/explain
|
k8s.io/kubectl/pkg/explain
|
||||||
k8s.io/kubectl/pkg/generate
|
k8s.io/kubectl/pkg/generate
|
||||||
|
Loading…
Reference in New Issue
Block a user