in internal/alloydb/refresh.go [55:93]
func fetchInstanceInfo(
ctx context.Context, cl *alloydbadmin.AlloyDBAdminClient, inst InstanceURI,
) (i instanceInfo, err error) {
var end tel.EndSpanFunc
ctx, end = tel.StartSpan(ctx, "cloud.google.com/go/alloydbconn/internal.FetchMetadata")
defer func() { end(err) }()
req := &alloydbpb.GetConnectionInfoRequest{
Parent: fmt.Sprintf(
"projects/%s/locations/%s/clusters/%s/instances/%s",
inst.project, inst.region, inst.cluster, inst.name,
),
}
resp, err := cl.GetConnectionInfo(ctx, req)
if err != nil {
return instanceInfo{}, errtype.NewRefreshError(
"failed to get instance metadata", inst.String(), err,
)
}
// parse any ip addresses that might be used to connect
ipAddrs := make(map[string]string)
if addr := resp.GetIpAddress(); addr != "" {
ipAddrs[PrivateIP] = addr
}
if addr := resp.GetPublicIpAddress(); addr != "" {
ipAddrs[PublicIP] = addr
}
if addr := resp.GetPscDnsName(); addr != "" {
ipAddrs[PSC] = addr
}
if len(ipAddrs) == 0 {
return instanceInfo{}, errtype.NewConfigError(
"cannot connect to instance - it has no supported IP addresses",
inst.String(),
)
}
return instanceInfo{ipAddrs: ipAddrs, uid: resp.InstanceUid}, nil
}