From 30a1178624208552c73dbd72473a62e8d232fbe6 Mon Sep 17 00:00:00 2001 From: Bogdan Matei Date: Thu, 21 Mar 2024 14:02:57 +0200 Subject: [PATCH] Integrate Scopes with Prometheus datasource (#84888) --- packages/grafana-prometheus/src/dataquery.ts | 5 ++--- packages/grafana-prometheus/src/datasource.ts | 6 ++++++ public/app/plugins/datasource/prometheus/dataquery.ts | 8 +++++--- public/app/plugins/datasource/prometheus/datasource.ts | 6 ++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/grafana-prometheus/src/dataquery.ts b/packages/grafana-prometheus/src/dataquery.ts index 8609fc78914..545a32345b7 100644 --- a/packages/grafana-prometheus/src/dataquery.ts +++ b/packages/grafana-prometheus/src/dataquery.ts @@ -1,3 +1,4 @@ +import { Scope } from '@grafana/data'; import * as common from '@grafana/schema'; export enum QueryEditorMode { @@ -41,7 +42,5 @@ export interface Prometheus extends common.DataQuery { * Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series */ range?: boolean; - scope?: { - matchers: string; - }; + scope?: Scope; } diff --git a/packages/grafana-prometheus/src/datasource.ts b/packages/grafana-prometheus/src/datasource.ts index 956b4a268be..b5225af0b38 100644 --- a/packages/grafana-prometheus/src/datasource.ts +++ b/packages/grafana-prometheus/src/datasource.ts @@ -30,6 +30,7 @@ import { import { BackendDataSourceResponse, BackendSrvRequest, + config, DataSourceWithBackend, FetchResponse, getBackendSrv, @@ -363,6 +364,11 @@ export class PrometheusDatasource // We need to pass utcOffsetSec to backend to calculate aligned range utcOffsetSec: request.range.to.utcOffset() * 60, }; + + if (config.featureToggles.promQLScope) { + processedTarget.scope = request.scope; + } + if (target.instant && target.range) { // We have query type "Both" selected // We should send separate queries with different refId diff --git a/public/app/plugins/datasource/prometheus/dataquery.ts b/public/app/plugins/datasource/prometheus/dataquery.ts index 8609fc78914..54f6cd7bac9 100644 --- a/public/app/plugins/datasource/prometheus/dataquery.ts +++ b/public/app/plugins/datasource/prometheus/dataquery.ts @@ -1,3 +1,4 @@ +import { Scope } from '@grafana/data'; import * as common from '@grafana/schema'; export enum QueryEditorMode { @@ -41,7 +42,8 @@ export interface Prometheus extends common.DataQuery { * Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series */ range?: boolean; - scope?: { - matchers: string; - }; + /** + * A scope object that will be used by Prometheus + */ + scope?: Scope; } diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 5a0264a4571..48c5723f214 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -30,6 +30,7 @@ import { import { BackendDataSourceResponse, BackendSrvRequest, + config, DataSourceWithBackend, FetchResponse, getBackendSrv, @@ -363,6 +364,11 @@ export class PrometheusDatasource // We need to pass utcOffsetSec to backend to calculate aligned range utcOffsetSec: request.range.to.utcOffset() * 60, }; + + if (config.featureToggles.promQLScope) { + processedTarget.scope = request.scope; + } + if (target.instant && target.range) { // We have query type "Both" selected // We should send separate queries with different refId