diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 105d79b93..6de57cfd6 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -52,6 +52,7 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { services := []v1.Service{} pvc := []v1.PersistentVolumeClaim{} deployments := []deployment{} + ingresses := []extensions.Ingress{} for _, v := range created { switch value := asVersioned(v).(type) { case *v1.ReplicationController: @@ -192,9 +193,15 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { return false, err } services = append(services, *svc) + case *extensions.Ingress: + ingress, err := kcs.ExtensionsV1beta1().Ingresses(value.Namespace).Get(value.Name, metav1.GetOptions{}) + if err != nil { + return false, err + } + ingresses = append(ingresses, *ingress) } } - isReady := c.podsReady(pods) && c.servicesReady(services) && c.volumesReady(pvc) && c.deploymentsReady(deployments) + isReady := c.podsReady(pods) && c.servicesReady(services) && c.volumesReady(pvc) && c.deploymentsReady(deployments) && c.ingressesReady(ingresses) return isReady, nil }) } @@ -269,3 +276,13 @@ func isPodReady(pod *v1.Pod) bool { } return false } + +func (c *Client) ingressesReady(ingresses []extensions.Ingress) bool { + for _, ingress := range ingresses { + if &ingress.Status == nil && len(ingress.Status.LoadBalancer.Ingress) > 0 { + c.Log("Ingress is not ready: %s/%s", ingress.GetNamespace(), ingress.GetName()) + return false + } + } + return true +}