diff --git a/devenv/docker/blocks/loki/data/data.js b/devenv/docker/blocks/loki/data/data.js index 72714a93798..07572a18efd 100644 --- a/devenv/docker/blocks/loki/data/data.js +++ b/devenv/docker/blocks/loki/data/data.js @@ -125,8 +125,8 @@ async function main() { await sleep(getNextSineWaveSleepDuration()); const timestampMs = new Date().getTime(); const item = getRandomLogItem(step + 1) - lokiSendLogLine(timestampMs, JSON.stringify(item), {place:'moon'}); - lokiSendLogLine(timestampMs, logFmtLine(item), {place:'luna'}); + lokiSendLogLine(timestampMs, JSON.stringify(item), {place:'moon', source: 'data'}); + lokiSendLogLine(timestampMs, logFmtLine(item), {place:'luna', source: 'data'}); } } diff --git a/public/app/plugins/datasource/loki/datasource.test.ts b/public/app/plugins/datasource/loki/datasource.test.ts index 515e773d9e2..785f3b7b9c2 100644 --- a/public/app/plugins/datasource/loki/datasource.test.ts +++ b/public/app/plugins/datasource/loki/datasource.test.ts @@ -1058,6 +1058,15 @@ describe('isMetricsQuery', () => { }); }); +describe('applyTemplateVariables', () => { + it('should add the adhoc filter to the query', () => { + const ds = createLokiDSForTests(); + const spy = jest.spyOn(ds, 'addAdHocFilters'); + ds.applyTemplateVariables({ expr: '{test}', refId: 'A' }, {}); + expect(spy).toHaveBeenCalledWith('{test}'); + }); +}); + function assertAdHocFilters(query: string, expectedResults: string, ds: LokiDatasource) { const lokiQuery: LokiQuery = { refId: 'A', expr: query }; const result = ds.addAdHocFilters(lokiQuery.expr); diff --git a/public/app/plugins/datasource/loki/datasource.ts b/public/app/plugins/datasource/loki/datasource.ts index ca8b020e0be..7aa5ebafbc2 100644 --- a/public/app/plugins/datasource/loki/datasource.ts +++ b/public/app/plugins/datasource/loki/datasource.ts @@ -887,10 +887,12 @@ export class LokiDatasource // We want to interpolate these variables on backend const { __interval, __interval_ms, ...rest } = scopedVars; + const exprWithAdHoc = this.addAdHocFilters(target.expr); + return { ...target, legendFormat: this.templateSrv.replace(target.legendFormat, rest), - expr: this.templateSrv.replace(target.expr, rest, this.interpolateQueryExpr), + expr: this.templateSrv.replace(exprWithAdHoc, rest, this.interpolateQueryExpr), }; }