in packages/opentelemetry-cloud-trace-exporter/src/trace.ts [149:173]
private async _getClient(): Promise<TraceService> {
if (this._traceServiceClient) {
return this._traceServiceClient;
}
diag.debug('Google Cloud Trace authenticating');
const creds = await this._auth.getClient();
diag.debug(
'Google Cloud Trace got authentication. Initializaing rpc client'
);
const packageDefinition = protoloader.fromJSON(protoJson);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const {google}: any = grpc.loadPackageDefinition(packageDefinition);
const traceService: new (
...args: ConstructorParameters<typeof grpc.Client>
) => TraceService = google.devtools.cloudtrace.v2.TraceService;
const sslCreds = grpc.credentials.createSsl();
const callCreds = grpc.credentials.createFromGoogleCredential(creds);
return new traceService(
this._apiEndpoint,
grpc.credentials.combineChannelCredentials(sslCreds, callCreds),
OPTIONS
);
}