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
}