func gcloudToken()

in mixer.go [87:113]


func gcloudToken() (*oauth2.Token, error) {
	cmd := exec.Command("gcloud", "config", "config-helper", "--format=json")
	cmd.Env = os.Environ()
	if *gceMetadataOverrideIP != "" {
		cmd.Env = append(cmd.Env,
			fmt.Sprintf("GCE_METADATA_HOST=%s", *gceMetadataOverrideIP),
			fmt.Sprintf("GCE_METADATA_ROOT=%s", *gceMetadataOverrideIP),
			fmt.Sprintf("GCE_METADATA_IP=%s", *gceMetadataOverrideIP),
		)
	}
	out, err := cmd.Output()
	if err != nil {
		return nil, fmt.Errorf("running the config-helper command: %w", err)
	}
	var r configHelperResp
	if err := json.Unmarshal(out, &r); err != nil {
		return nil, fmt.Errorf("parsing the config-helper output: %w", err)
	}
	return &oauth2.Token{
		AccessToken: r.Credential.AccessToken,
		// Force refresh token every 10 seconds.
		//
		// This reduces the latency in picking up changes a user makes to their credentials
		// after the mixer startsup.
		Expiry: time.Now().Add(10 * time.Second),
	}, nil
}