code: func getFloatingNetworkIDForLB(client *gophercloud.ServiceClient) (string, error) {
  	var floatingNetworkIds []string
  
  	type NetworkWithExternalExt struct {
  		networks.Network
  		external.NetworkExternalExt
  	}
  
  	err := networks.List(client, networks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
  		var externalNetwork []NetworkWithExternalExt
  		err := networks.ExtractNetworksInto(page, &externalNetwork)
  		if err != nil {
  			return false, err
  		}
  
  		for _, externalNet := range externalNetwork {
  			if externalNet.External {
  				floatingNetworkIds = append(floatingNetworkIds, externalNet.ID)
  			}
  		}
  
  		if len(floatingNetworkIds) > 1 {
  			return false, ErrMultipleResults
  		}
  		return true, nil
  	})
  	if err != nil {
  		if isNotFound(err) {
  			return "", ErrNotFound
  		}
  
  		if err == ErrMultipleResults {
  			klog.V(4).Infof("find multiple external networks, pick the first one when there are no explicit configuration.")
  			return floatingNetworkIds[0], nil
  		}
  		return "", err
  	}
  
  	if len(floatingNetworkIds) == 0 {
  		return "", ErrNotFound
  	}
  
  	return floatingNetworkIds[0], nil
  }
docs: // getFloatingNetworkIDForLB returns a floating-network-id for cluster.