in gcp/gcp.go [56:80]
func fetchAccessToken(httpClient *http.Client) (string, error) {
req, err := http.NewRequest(http.MethodGet, accessTokenUrl, nil)
if err != nil {
glog.Fatalf("Unexpected failure when constructing access token GET request: %v", err)
}
req.Header.Add("Metadata-Flavor", "Google")
res, err := httpClient.Do(req)
if err != nil {
return "", errors.New(fmt.Sprintf("Unable to GET access token: %v", err))
}
if res.StatusCode != http.StatusOK {
return "", errors.New(fmt.Sprintf("Error GETting access token: %v %v", res.StatusCode, res.Status))
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
glog.Fatalf("Unexpected failure when reading the body: %v", err)
}
token := serviceAccountToken{}
err = json.Unmarshal(body, &token)
if err != nil {
return "", errors.New(fmt.Sprintf("Unable to parse access token: %v", err))
}
glog.V(0).Infof("Acquired service account token: %+v", token)
return token.AccessToken, nil
}