diff --git a/public/app/plugins/datasource/loki/datasource.test.ts b/public/app/plugins/datasource/loki/datasource.test.ts index d1db8834080..eda90cbf0b6 100644 --- a/public/app/plugins/datasource/loki/datasource.test.ts +++ b/public/app/plugins/datasource/loki/datasource.test.ts @@ -252,6 +252,22 @@ describe('LokiDatasource', () => { }); }); + describe('when running interpolateVariablesInQueries', () => { + it('should call addAdHocFilters', () => { + const ds = createLokiDatasource(templateSrvStub); + ds.addAdHocFilters = jest.fn(); + const expr = 'rate({bar="baz", job="foo"} [5m]'; + const queries = [ + { + refId: 'A', + expr, + }, + ]; + ds.interpolateVariablesInQueries(queries, {}); + expect(ds.addAdHocFilters).toHaveBeenCalledWith(expr); + }); + }); + describe('when performing testDataSource', () => { let ds: LokiDatasource; beforeEach(() => { diff --git a/public/app/plugins/datasource/loki/datasource.ts b/public/app/plugins/datasource/loki/datasource.ts index 8aa6b459bb6..dce94ed4b98 100644 --- a/public/app/plugins/datasource/loki/datasource.ts +++ b/public/app/plugins/datasource/loki/datasource.ts @@ -272,7 +272,7 @@ export class LokiDatasource expandedQueries = queries.map((query) => ({ ...query, datasource: this.getRef(), - expr: this.templateSrv.replace(query.expr, scopedVars, this.interpolateQueryExpr), + expr: this.addAdHocFilters(this.templateSrv.replace(query.expr, scopedVars, this.interpolateQueryExpr)), })); } diff --git a/public/app/plugins/datasource/prometheus/datasource.test.ts b/public/app/plugins/datasource/prometheus/datasource.test.ts index 4b8db23959a..4260dde820b 100644 --- a/public/app/plugins/datasource/prometheus/datasource.test.ts +++ b/public/app/plugins/datasource/prometheus/datasource.test.ts @@ -622,6 +622,18 @@ describe('PrometheusDatasource', () => { expect(templateSrvStub.replace).toBeCalledTimes(2); expect(queries[0].interval).toBe(interval); }); + + it('should call enhanceExprWithAdHocFilters', () => { + ds.enhanceExprWithAdHocFilters = jest.fn(); + const queries = [ + { + refId: 'A', + expr: 'rate({bar="baz", job="foo"} [5m]', + }, + ]; + ds.interpolateVariablesInQueries(queries, {}); + expect(ds.enhanceExprWithAdHocFilters).toHaveBeenCalled(); + }); }); describe('applyTemplateVariables', () => { diff --git a/public/app/plugins/datasource/prometheus/datasource.tsx b/public/app/plugins/datasource/prometheus/datasource.tsx index 729d1aea0b8..ef664ea0a55 100644 --- a/public/app/plugins/datasource/prometheus/datasource.tsx +++ b/public/app/plugins/datasource/prometheus/datasource.tsx @@ -1002,7 +1002,9 @@ export class PrometheusDatasource const expandedQuery = { ...query, datasource: this.getRef(), - expr: this.templateSrv.replace(query.expr, scopedVars, this.interpolateQueryExpr), + expr: this.enhanceExprWithAdHocFilters( + this.templateSrv.replace(query.expr, scopedVars, this.interpolateQueryExpr) + ), interval: this.templateSrv.replace(query.interval, scopedVars), }; return expandedQuery;