in sharedlibraries/gce/metadataserver/metadataserver.go [150:183]
func get(uri, queryString string) ([]byte, error) {
metadataURL, err := url.Parse(metadataServerURL)
if err != nil {
return nil, fmt.Errorf("failed to parse metadata server url: %v, %s", err, helpString)
}
metadataURL.RawQuery = queryString
reqURL := metadataURL.JoinPath(uri).String()
req, err := http.NewRequest("GET", reqURL, nil)
if err != nil {
return nil, fmt.Errorf("failed to make request to metadata server: %v, %s", err, helpString)
}
req.Header.Add("Metadata-Flavor", "Google")
client := &http.Client{Timeout: 2 * time.Second}
res, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("failed to receive response from metadata server: %v, %s", err, helpString)
}
defer res.Body.Close()
if !isStatusSuccess(res.StatusCode) {
if uri == upcomingMaintenanceURI && res.StatusCode == 503 {
body, errIO := io.ReadAll(res.Body)
if errIO != nil {
return nil, fmt.Errorf("failed to read response body from metadata server: %v", err)
}
return body, nil
}
return nil, fmt.Errorf("unsuccessful response from metadata server: %s, %s", res.Status, helpString)
}
body, err := io.ReadAll(res.Body)
if err != nil {
return nil, fmt.Errorf("failed to read response body from metadata server: %v", err)
}
return body, nil
}