Tempo: Use echo endpoint when testing Tempo datasource (#38018)

* Use echo endpoint when testing Tempo datasource

* Remove unreachable error message

* Null check response
pull/35142/head^2
Connor Lindsey 4 years ago committed by GitHub
parent f7501ff77f
commit 6ed60c0bec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 21
      public/app/plugins/datasource/tempo/datasource.ts

@ -1,4 +1,4 @@
import { lastValueFrom, from, merge, Observable, of, throwError } from 'rxjs';
import { from, merge, Observable, of, throwError } from 'rxjs';
import { map, mergeMap, toArray } from 'rxjs/operators';
import {
DataQuery,
@ -158,19 +158,16 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
}
async testDatasource(): Promise<any> {
// to test Tempo we send a dummy traceID and verify Tempo answers with 'trace not found'
const response = await lastValueFrom(super.query({ targets: [{ query: '0' }] } as any));
const errorMessage = response.error?.message;
if (
errorMessage &&
errorMessage.startsWith('failed to get trace') &&
errorMessage.endsWith('trace not found in Tempo')
) {
const options: BackendSrvRequest = {
headers: {},
method: 'GET',
url: `${this.instanceSettings.url}/api/echo`,
};
const response = await getBackendSrv().fetch<any>(options).toPromise();
if (response?.ok) {
return { status: 'success', message: 'Data source is working' };
}
return { status: 'error', message: 'Data source is not working' + (errorMessage ? `: ${errorMessage}` : '') };
}
getQueryDisplayText(query: TempoQuery) {

Loading…
Cancel
Save