mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* make tags templateable
* cleanup files I didn't want to modify
(cherry picked from commit 8b95746f63
)
Co-authored-by: Stephanie Closson <srclosson@gmail.com>
This commit is contained in:
parent
c1afc4deac
commit
f59b10384b
@ -1,5 +1,12 @@
|
|||||||
import { lastValueFrom, of, throwError } from 'rxjs';
|
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 { backendSrv } from 'app/core/services/backend_srv';
|
||||||
import { createFetchResponse } from 'test/helpers/createFetchResponse';
|
import { createFetchResponse } from 'test/helpers/createFetchResponse';
|
||||||
@ -15,8 +22,13 @@ import {
|
|||||||
import { JaegerQuery } from './types';
|
import { JaegerQuery } from './types';
|
||||||
|
|
||||||
jest.mock('@grafana/runtime', () => ({
|
jest.mock('@grafana/runtime', () => ({
|
||||||
...((jest.requireActual('@grafana/runtime') as unknown) as object),
|
...(jest.requireActual('@grafana/runtime') as any),
|
||||||
getBackendSrv: () => backendSrv,
|
getBackendSrv: () => backendSrv,
|
||||||
|
getTemplateSrv: () => ({
|
||||||
|
replace: (val: string, subs: ScopedVars): string => {
|
||||||
|
return subs[val]?.value ?? val;
|
||||||
|
},
|
||||||
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const timeSrvStub: any = {
|
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`,
|
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', () => {
|
describe('when performing testDataSource', () => {
|
||||||
|
@ -12,7 +12,7 @@ import {
|
|||||||
FieldType,
|
FieldType,
|
||||||
MutableDataFrame,
|
MutableDataFrame,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { BackendSrvRequest, getBackendSrv } from '@grafana/runtime';
|
import { BackendSrvRequest, getBackendSrv, getTemplateSrv } from '@grafana/runtime';
|
||||||
|
|
||||||
import { serializeParams } from 'app/core/utils/fetch';
|
import { serializeParams } from 'app/core/utils/fetch';
|
||||||
import { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';
|
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> {
|
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
|
// 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.
|
// traces at one we need to change this.
|
||||||
const target = options.targets[0];
|
const target: JaegerQuery = options.targets[0];
|
||||||
if (!target) {
|
if (!target) {
|
||||||
return of({ data: [emptyTraceDataFrame] });
|
return of({ data: [emptyTraceDataFrame] });
|
||||||
}
|
}
|
||||||
@ -90,7 +90,10 @@ export class JaegerDatasource extends DataSourceApi<JaegerQuery, JaegerJsonData>
|
|||||||
// remove empty properties
|
// remove empty properties
|
||||||
jaegerQuery = pickBy(jaegerQuery, identity);
|
jaegerQuery = pickBy(jaegerQuery, identity);
|
||||||
if (jaegerQuery.tags) {
|
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) {
|
if (jaegerQuery.operation === ALL_OPERATIONS_KEY) {
|
||||||
|
Loading…
Reference in New Issue
Block a user