// updateLbIp updates the loadbalancer status ip if required. func updateLbIp( ingClient client.IngressInterface, ing extensions.Ingress, ip string) error { lbIPs := ing.Status.LoadBalancer.Ingress if len(lbIPs) > 0 && lbIPs[0].IP == ip { glog.Infof("Ingress %v/%v: %v doesn't require status update", ing.Namespace, ing.Name, lbIPs) return nil } glog.Infof("Updating Ingress %v/%v with ip %v", ing.Namespace, ing.Name, ip) currIng, err := ingClient.Get(ing.Name) if err != nil { return err } currIng.Status = extensions.IngressStatus{ LoadBalancer: api.LoadBalancerStatus{ Ingress: []api.LoadBalancerIngress{ {IP: ip}, }, }, } // TODO: If this update fails it's probably resource version related, // which means it's advantageous to retry right away vs requeuing, // which will lead to a full sync. if _, err := ingClient.UpdateStatus(currIng); err != nil { return err } return nil }