From 08d12df9f3ef0548d195330f5513acd19dcb4802 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Thu, 29 Sep 2022 11:47:37 +0000 Subject: [PATCH] Loki/Prometheus: Fix adding of ad hoc filters when jumping from dashboard to explore (#55915) (#55992) * Loki, Prometheus: Fix adding of ad hoc filters when jumping from dashbaord to explore * Update (cherry picked from commit 21a99fba7e64408d71f62ac5d73b196e136b3ecf) Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com> --- .../plugins/datasource/loki/datasource.test.ts | 16 ++++++++++++++++ public/app/plugins/datasource/loki/datasource.ts | 2 +- .../datasource/prometheus/datasource.test.ts | 12 ++++++++++++ .../plugins/datasource/prometheus/datasource.tsx | 4 +++- 4 files changed, 32 insertions(+), 2 deletions(-) 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;