private async _getClient()

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
    );
  }