Prometheus: Pass scoped vars when creating PromLink query (#40525)

pull/40562/head
Ivana Huckova 4 years ago committed by GitHub
parent 4e1cf7dea7
commit 4a3be0f845
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      public/app/plugins/datasource/prometheus/components/PromLink.test.tsx
  2. 14
      public/app/plugins/datasource/prometheus/components/PromLink.tsx

@ -5,9 +5,17 @@ import { PromQuery } from '../types';
import { PrometheusDatasource } from '../datasource';
import PromLink from './PromLink';
jest.mock('@grafana/data', () => ({
...(jest.requireActual('@grafana/data') as any),
rangeUtil: {
intervalToSeconds: jest.fn(() => 15),
},
}));
const getPanelData = (panelDataOverrides?: Partial<PanelData>) => {
const panelData = {
request: {
scopedVars: [{ __interval: { text: '15s', value: '15s' } }],
targets: [
{ refId: 'A', datasource: 'prom1' },
{ refId: 'B', datasource: 'prom2' },
@ -30,6 +38,7 @@ const getDataSource = (datasourceOverrides?: Partial<PrometheusDatasource>) => {
getPrometheusTime: () => 123,
createQuery: () => ({ expr: 'up', step: 15 }),
directUrl: 'prom1',
getRateIntervalScopedVariable: jest.fn(() => ({ __rate_interval: { text: '60s', value: '60s' } })),
};
return (Object.assign(datasource, datasourceOverrides) as unknown) as PrometheusDatasource;

@ -3,7 +3,7 @@ import React, { FC, useEffect, useState, memo } from 'react';
import { PrometheusDatasource } from '../datasource';
import { PromQuery } from '../types';
import { DataQueryRequest, PanelData, textUtil } from '@grafana/data';
import { DataQueryRequest, PanelData, ScopedVars, textUtil, rangeUtil } from '@grafana/data';
interface Props {
datasource: PrometheusDatasource;
@ -22,7 +22,7 @@ const PromLink: FC<Props> = ({ panelData, query, datasource }) => {
}
const {
request: { range, interval },
request: { range, interval, scopedVars },
} = panelData;
const start = datasource.getPrometheusTime(range.from, false);
@ -30,8 +30,18 @@ const PromLink: FC<Props> = ({ panelData, query, datasource }) => {
const rangeDiff = Math.ceil(end - start);
const endTime = range.to.utc().format('YYYY-MM-DD HH:mm');
const enrichedScopedVars: ScopedVars = {
...scopedVars,
// As we support $__rate_interval variable in min step, we need add it to scopedVars
...datasource.getRateIntervalScopedVariable(
rangeUtil.intervalToSeconds(interval),
rangeUtil.intervalToSeconds(datasource.interval)
),
};
const options = {
interval,
scopedVars: enrichedScopedVars,
} as DataQueryRequest<PromQuery>;
const queryOptions = datasource.createQuery(query, options, start, end);

Loading…
Cancel
Save