func()

in sharedlibraries/gce/gce.go [124:155]


func (g *GCE) GetAddressByIP(project, region, subnetwork, ip string) (*compute.Address, error) {
	filter := fmt.Sprintf("(address eq %s)", ip)
	if subnetwork != "" {
		filter += fmt.Sprintf(` (subnetwork eq ".*%s.*")`, subnetwork)
	}
	log.Logger.Debugw("GetAddressByIP", "project", project, "region", region, "subnetwork", subnetwork, "ip", ip, "filter", filter)
	if region == "" {
		list, err := g.service.Addresses.AggregatedList(project).Filter(filter).Do()
		if err != nil {
			return nil, err
		}

		for _, l := range list.Items {
			if len(l.Addresses) > 0 {
				return l.Addresses[0], nil
			}
		}

		return nil, errors.Errorf("No address with ip %s found", ip)
	}

	list, err := g.service.Addresses.List(project, region).Filter(filter).Do()
	if err != nil {
		return nil, err
	}

	if len(list.Items) == 0 {
		return nil, errors.Errorf("No address with IP %s found", ip)
	}

	return list.Items[0], nil
}