func fetchAccessToken()

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
}