From 2758664226dec794cd7eafd8a1591376aa50ea71 Mon Sep 17 00:00:00 2001 From: Daniel Tomcej Date: Thu, 14 Jun 2018 01:22:03 -0600 Subject: [PATCH] Fix panic setting ingress status --- provider/kubernetes/client.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/provider/kubernetes/client.go b/provider/kubernetes/client.go index 706d66e20..15e22b21a 100644 --- a/provider/kubernetes/client.go +++ b/provider/kubernetes/client.go @@ -180,19 +180,21 @@ func (c *clientImpl) UpdateIngressStatus(namespace, name, ip, hostname string) e } ing := item.(*extensionsv1beta1.Ingress) - if ing.Status.LoadBalancer.Ingress[0].Hostname == hostname && ing.Status.LoadBalancer.Ingress[0].IP == ip { - // If status is already set, skip update - log.Debugf("Skipping status update on ingress %s/%s", ing.Namespace, ing.Name) - } else { - ingCopy := ing.DeepCopy() - ingCopy.Status = extensionsv1beta1.IngressStatus{LoadBalancer: corev1.LoadBalancerStatus{Ingress: []corev1.LoadBalancerIngress{{IP: ip, Hostname: hostname}}}} - - _, err := c.clientset.ExtensionsV1beta1().Ingresses(ingCopy.Namespace).UpdateStatus(ingCopy) - if err != nil { - return fmt.Errorf("failed to update ingress status %s with error: %v", keyName, err) + if len(ing.Status.LoadBalancer.Ingress) > 0 { + if ing.Status.LoadBalancer.Ingress[0].Hostname == hostname && ing.Status.LoadBalancer.Ingress[0].IP == ip { + // If status is already set, skip update + log.Debugf("Skipping status update on ingress %s/%s", ing.Namespace, ing.Name) + return nil } - log.Infof("Updated status on ingress %s", keyName) } + ingCopy := ing.DeepCopy() + ingCopy.Status = extensionsv1beta1.IngressStatus{LoadBalancer: corev1.LoadBalancerStatus{Ingress: []corev1.LoadBalancerIngress{{IP: ip, Hostname: hostname}}}} + + _, err = c.clientset.ExtensionsV1beta1().Ingresses(ingCopy.Namespace).UpdateStatus(ingCopy) + if err != nil { + return fmt.Errorf("failed to update ingress status %s with error: %v", keyName, err) + } + log.Infof("Updated status on ingress %s", keyName) return nil }