mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Jaeger: Make tags templateable (#42005)
* make tags templateable * cleanup files I didn't want to modify
This commit is contained in:
parent
e3ef82203e
commit
8b95746f63
@ -1,5 +1,12 @@
|
||||
import { lastValueFrom, of, throwError } from 'rxjs';
|
||||
import { DataQueryRequest, DataSourceInstanceSettings, dateTime, FieldType, PluginType } from '@grafana/data';
|
||||
import {
|
||||
DataQueryRequest,
|
||||
DataSourceInstanceSettings,
|
||||
dateTime,
|
||||
FieldType,
|
||||
PluginType,
|
||||
ScopedVars,
|
||||
} from '@grafana/data';
|
||||
|
||||
import { backendSrv } from 'app/core/services/backend_srv';
|
||||
import { createFetchResponse } from 'test/helpers/createFetchResponse';
|
||||
@ -15,8 +22,13 @@ import {
|
||||
import { JaegerQuery } from './types';
|
||||
|
||||
jest.mock('@grafana/runtime', () => ({
|
||||
...((jest.requireActual('@grafana/runtime') as unknown) as object),
|
||||
...(jest.requireActual('@grafana/runtime') as any),
|
||||
getBackendSrv: () => backendSrv,
|
||||
getTemplateSrv: () => ({
|
||||
replace: (val: string, subs: ScopedVars): string => {
|
||||
return subs[val]?.value ?? val;
|
||||
},
|
||||
}),
|
||||
}));
|
||||
|
||||
const timeSrvStub: any = {
|
||||
@ -146,6 +158,26 @@ describe('JaegerDatasource', () => {
|
||||
url: `${defaultSettings.url}/api/traces?service=jaeger-query&tags=%7B%22error%22%3A%22true%22%7D&start=1531468681000&end=1531489712000&lookback=custom`,
|
||||
});
|
||||
});
|
||||
|
||||
it('should resolve templates in tags', async () => {
|
||||
const mock = setupFetchMock({ data: [testResponse] });
|
||||
const ds = new JaegerDatasource(defaultSettings, timeSrvStub);
|
||||
await lastValueFrom(
|
||||
ds.query({
|
||||
...defaultQuery,
|
||||
scopedVars: {
|
||||
'error=$error': {
|
||||
text: 'error',
|
||||
value: 'error=true',
|
||||
},
|
||||
},
|
||||
targets: [{ queryType: 'search', refId: 'a', service: 'jaeger-query', tags: 'error=$error' }],
|
||||
})
|
||||
);
|
||||
expect(mock).toBeCalledWith({
|
||||
url: `${defaultSettings.url}/api/traces?service=jaeger-query&tags=%7B%22error%22%3A%22true%22%7D&start=1531468681000&end=1531489712000&lookback=custom`,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when performing testDataSource', () => {
|
||||
|
@ -12,7 +12,7 @@ import {
|
||||
FieldType,
|
||||
MutableDataFrame,
|
||||
} from '@grafana/data';
|
||||
import { BackendSrvRequest, getBackendSrv } from '@grafana/runtime';
|
||||
import { BackendSrvRequest, getBackendSrv, getTemplateSrv } from '@grafana/runtime';
|
||||
|
||||
import { serializeParams } from 'app/core/utils/fetch';
|
||||
import { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';
|
||||
@ -46,7 +46,7 @@ export class JaegerDatasource extends DataSourceApi<JaegerQuery, JaegerJsonData>
|
||||
query(options: DataQueryRequest<JaegerQuery>): Observable<DataQueryResponse> {
|
||||
// At this moment we expect only one target. In case we somehow change the UI to be able to show multiple
|
||||
// traces at one we need to change this.
|
||||
const target = options.targets[0];
|
||||
const target: JaegerQuery = options.targets[0];
|
||||
if (!target) {
|
||||
return of({ data: [emptyTraceDataFrame] });
|
||||
}
|
||||
@ -90,7 +90,10 @@ export class JaegerDatasource extends DataSourceApi<JaegerQuery, JaegerJsonData>
|
||||
// remove empty properties
|
||||
jaegerQuery = pickBy(jaegerQuery, identity);
|
||||
if (jaegerQuery.tags) {
|
||||
jaegerQuery = { ...jaegerQuery, tags: convertTagsLogfmt(jaegerQuery.tags) };
|
||||
jaegerQuery = {
|
||||
...jaegerQuery,
|
||||
tags: convertTagsLogfmt(getTemplateSrv().replace(jaegerQuery.tags, options.scopedVars)),
|
||||
};
|
||||
}
|
||||
|
||||
if (jaegerQuery.operation === ALL_OPERATIONS_KEY) {
|
||||
|
Loading…
Reference in New Issue
Block a user