Пример #1
0
// 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
}