in images/controller/pkg/util.go [97:125]
func GetServiceAccountTokenFromMetadataServer(sa string) (string, error) {
token := ""
url := fmt.Sprintf("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/%s/token", sa)
type saTokenResponse struct {
AccessToken string `json:"access_token"`
ExpiresIn int `json:"expires_in"`
TokenType string `json:"token_type"`
}
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
req.Header.Add("Metadata-Flavor", "Google")
resp, err := client.Do(req)
if err != nil {
return sa, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return sa, err
}
var tokenResp saTokenResponse
if err := json.Unmarshal(body, &tokenResp); err != nil {
return token, err
}
return tokenResp.AccessToken, nil
}