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
}