From 3422a4e85eaee9bcbb8c9f63f2084d74753b53e3 Mon Sep 17 00:00:00 2001 From: zhouya0 Date: Mon, 2 Mar 2020 16:08:17 +0800 Subject: [PATCH] Show kubectl describe ingress error Kubernetes-commit: 773b890b059ffe9956c8de4b7f0214b802888390 --- pkg/describe/describe.go | 10 ++++++-- pkg/describe/describe_test.go | 48 ++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/pkg/describe/describe.go b/pkg/describe/describe.go index a213ae3f..9667259b 100644 --- a/pkg/describe/describe.go +++ b/pkg/describe/describe.go @@ -2354,8 +2354,14 @@ func (i *IngressDescriber) Describe(namespace, name string, describerSettings De } func (i *IngressDescriber) describeBackend(ns string, backend *networkingv1beta1.IngressBackend) string { - endpoints, _ := i.CoreV1().Endpoints(ns).Get(context.TODO(), backend.ServiceName, metav1.GetOptions{}) - service, _ := i.CoreV1().Services(ns).Get(context.TODO(), backend.ServiceName, metav1.GetOptions{}) + endpoints, err := i.CoreV1().Endpoints(ns).Get(context.TODO(), backend.ServiceName, metav1.GetOptions{}) + if err != nil { + return fmt.Sprintf("", err) + } + service, err := i.CoreV1().Services(ns).Get(context.TODO(), backend.ServiceName, metav1.GetOptions{}) + if err != nil { + return fmt.Sprintf("", err) + } spName := "" for i := range service.Spec.Ports { sp := &service.Spec.Ports[i] diff --git a/pkg/describe/describe_test.go b/pkg/describe/describe_test.go index ead5e0d9..68e03dc4 100644 --- a/pkg/describe/describe_test.go +++ b/pkg/describe/describe_test.go @@ -1673,6 +1673,45 @@ func TestDescribeDeployment(t *testing.T) { } } +func TestDescribeIngress(t *testing.T) { + defaultBackend := networkingv1beta1.IngressBackend{ + ServiceName: "default-backend", + ServicePort: intstr.FromInt(80), + } + + fakeClient := fake.NewSimpleClientset(&networkingv1beta1.Ingress{ + ObjectMeta: metav1.ObjectMeta{ + Name: "bar", + Namespace: "foo", + }, + Spec: networkingv1beta1.IngressSpec{ + Rules: []networkingv1beta1.IngressRule{ + { + Host: "foo.bar.com", + IngressRuleValue: networkingv1beta1.IngressRuleValue{ + HTTP: &networkingv1beta1.HTTPIngressRuleValue{ + Paths: []networkingv1beta1.HTTPIngressPath{ + { + Path: "/foo", + Backend: defaultBackend, + }, + }, + }, + }, + }, + }, + }, + }) + i := IngressDescriber{fakeClient} + out, err := i.Describe("foo", "bar", DescriberSettings{ShowEvents: true}) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if !strings.Contains(out, "bar") || !strings.Contains(out, "foo") || !strings.Contains(out, "foo.bar.com") || !strings.Contains(out, "/foo") { + t.Errorf("unexpected out: %s", out) + } +} + func TestDescribeStorageClass(t *testing.T) { reclaimPolicy := corev1.PersistentVolumeReclaimRetain bindingMode := storagev1.VolumeBindingMode("bindingmode") @@ -2660,8 +2699,15 @@ func TestDescribeEvents(t *testing.T) { }, events), }, // TODO(jchaloup): add tests for: - // - IngressDescriber // - JobDescriber + "IngressDescriber": &IngressDescriber{ + fake.NewSimpleClientset(&networkingv1beta1.Ingress{ + ObjectMeta: metav1.ObjectMeta{ + Name: "bar", + Namespace: "foo", + }, + }, events), + }, "NodeDescriber": &NodeDescriber{ fake.NewSimpleClientset(&corev1.Node{ ObjectMeta: metav1.ObjectMeta{