code: func (lb *LbaasV1) UpdateLoadBalancer(clusterName string, service *v1.Service, nodes []*v1.Node) error {
  	loadBalancerName := cloudprovider.GetLoadBalancerName(service)
  	glog.V(4).Infof("UpdateLoadBalancer(%v, %v, %v)", clusterName, loadBalancerName, nodes)
  
  	vip, err := getVipByName(lb.network, loadBalancerName)
  	if err != nil {
  		return err
  	}
  
  	// Set of member (addresses) that _should_ exist
  	addrs := map[string]bool{}
  	for _, node := range nodes {
  		addr, addrErr := nodeAddressForLB(node)
  		if addrErr != nil {
  			return addrErr
  		}
  
  		addrs[addr] = true
  	}
  
  	// Iterate over members that _do_ exist
  	pager := members.List(lb.network, members.ListOpts{PoolID: vip.PoolID})
  	err = pager.EachPage(func(page pagination.Page) (bool, error) {
  		memList, err := members.ExtractMembers(page)
  		if err != nil {
  			return false, err
  		}
  
  		for _, member := range memList {
  			if _, found := addrs[member.Address]; found {
  				// Member already exists
  				delete(addrs, member.Address)
  			} else {
  				// Member needs to be deleted
  				err = members.Delete(lb.network, member.ID).ExtractErr()
  				if err != nil {
  					return false, err
  				}
  			}
  		}
  
  		return true, nil
  	})
  	if err != nil {
  		return err
  	}
  
  	// Anything left in addrs is a new member that needs to be added
  	for addr := range addrs {
  		_, err := members.Create(lb.network, members.CreateOpts{
  			PoolID:       vip.PoolID,
  			Address:      addr,
  			ProtocolPort: vip.ProtocolPort,
  		}).Extract()
  		if err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // UpdateLoadBalancer updates the load balancer