func doHTTPGet()

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
}