func tokenSource()

in tpu-provisioner/internal/auth/gcp/gcp.go [130:158]


func tokenSource(isCmd bool, gcpConfig map[string]string) (oauth2.TokenSource, error) {
	// Command-based token source
	if isCmd {
		cmd := gcpConfig["cmd-path"]
		if len(cmd) == 0 {
			return nil, fmt.Errorf("missing access token cmd")
		}
		if gcpConfig["scopes"] != "" {
			return nil, fmt.Errorf("scopes can only be used when kubectl is using a gcp service account key")
		}
		var args []string
		if cmdArgs, ok := gcpConfig["cmd-args"]; ok {
			args = strings.Fields(cmdArgs)
		} else {
			fields := strings.Fields(cmd)
			cmd = fields[0]
			args = fields[1:]
		}
		return newCmdTokenSource(cmd, args, gcpConfig["token-key"], gcpConfig["expiry-key"], gcpConfig["time-fmt"]), nil
	}

	// Google Application Credentials-based token source
	scopes := parseScopes(gcpConfig)
	ts, err := google.DefaultTokenSource(context.Background(), scopes...)
	if err != nil {
		return nil, fmt.Errorf("cannot construct google default token source: %v", err)
	}
	return ts, nil
}