func createClient()

in components/google-built-opentelemetry-collector/exporter/googleservicecontrolexporter/factory.go [134:163]


func createClient(ctx context.Context, oCfg *Config, settings exporter.Settings) (*ServiceControlClient, error) {
	opts := []grpc.DialOption{}
	if oCfg.UseInsecure {
		opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))
	} else {
		var credentials = google.NewDefaultCredentials()
		if oCfg.ImpersonateServiceAccount != "" {
			src, err := impersonate.CredentialsTokenSource(ctx,
				impersonate.CredentialsConfig{
					TargetPrincipal: oCfg.ImpersonateServiceAccount,
					Scopes:          []string{"https://www.googleapis.com/auth/cloud-platform"},
				})
			if err != nil {
				return nil, fmt.Errorf("failed to impersonate serviceAccount: %w", err)
			}
			credentials = google.NewDefaultCredentialsWithOptions(
				google.DefaultCredentialsOptions{
					PerRPCCreds:     oauth.TokenSource{TokenSource: src},
					ALTSPerRPCCreds: nil})
		}
		opts = append(opts, grpc.WithCredentialsBundle(credentials))
	}

	useRawServiceControlClient := strings.TrimSpace(strings.ToLower(oCfg.UseRawServiceControlClient)) == "true"
	c, err := clientProvider(oCfg.ServiceControlEndpoint, useRawServiceControlClient, oCfg.EnableDebugHeaders, settings.Logger, opts...)
	if err != nil {
		return nil, err
	}
	return &c, nil
}