From 847033a9bb83fc1e5b218bcbbcb556e7985e932d Mon Sep 17 00:00:00 2001 From: Matt Moore Date: Mon, 6 Jan 2020 20:06:40 -0800 Subject: [PATCH] Add retry logic internal to the Job to work around https://github.com/knative/test-infra/issues/1611 --- cmd/default-domain/main.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/cmd/default-domain/main.go b/cmd/default-domain/main.go index 22d73112fabd..1a8578930a0a 100644 --- a/cmd/default-domain/main.go +++ b/cmd/default-domain/main.go @@ -142,13 +142,20 @@ func findGatewayAddress(kubeclient *kubernetes.Clientset, client *versioned.Clie } name, namespace := parts[0], parts[1] - svc, err := kubeclient.CoreV1().Services(namespace).Get(name, metav1.GetOptions{}) - if err != nil { + // Wait for the Ingress Service to have an external IP. + var svc *corev1.Service + if err := wait.PollImmediate(pollInterval, waitTimeout, func() (done bool, err error) { + svc, err = kubeclient.CoreV1().Services(namespace).Get(name, metav1.GetOptions{}) + if err != nil { + return true, err + } + if len(svc.Status.LoadBalancer.Ingress) == 0 { + return false, nil + } + return true, nil + }); err != nil { return nil, err } - if len(svc.Status.LoadBalancer.Ingress) == 0 { - return nil, errors.New("Public load balancer does not have an ingress IP.") - } return &svc.Status.LoadBalancer.Ingress[0], nil }