in utils/metadata.go [105:139]
func doHTTPGet(ctx context.Context, path string) (string, http.Header, error) {
req, err := http.NewRequestWithContext(ctx, http.MethodGet, path, nil)
if err != nil {
return "", nil, fmt.Errorf("failed to create a http request with context: %+v", err)
}
req.Header.Add("Metadata-Flavor", "Google")
httpGet := func() (string, http.Header, error) {
resp, err := doHTTPRequest(req)
if err != nil {
return "", nil, err
}
val, err := io.ReadAll(resp.Body)
if err != nil {
return "", nil, fmt.Errorf("failed to read http request body: %+v", err)
}
return string(val), resp.Header, nil
}
var resp string
var header http.Header
var getErr error
for i := 1; i <= 5; i++ {
if resp, header, getErr = httpGet(); getErr != nil {
time.Sleep(time.Duration(i) * time.Second)
continue
}
break
}
return resp, header, getErr
}