mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
This commit is contained in:
committed by
GitHub
parent
b904e0c621
commit
16107f3784
@@ -90,7 +90,7 @@ export const PromSettings = (props: Props) => {
|
|||||||
<FormField
|
<FormField
|
||||||
label="Custom query parameters"
|
label="Custom query parameters"
|
||||||
labelWidth={14}
|
labelWidth={14}
|
||||||
tooltip="Add Custom parameters to Prometheus or Thanos queries."
|
tooltip="Add Custom parameters to all Prometheus or Thanos queries."
|
||||||
inputEl={
|
inputEl={
|
||||||
<Input
|
<Input
|
||||||
className="width-25"
|
className="width-25"
|
||||||
|
|||||||
@@ -59,7 +59,9 @@ describe('PrometheusDatasource', () => {
|
|||||||
directUrl: 'direct',
|
directUrl: 'direct',
|
||||||
user: 'test',
|
user: 'test',
|
||||||
password: 'mupp',
|
password: 'mupp',
|
||||||
jsonData: {} as any,
|
jsonData: {
|
||||||
|
customQueryParameters: '',
|
||||||
|
} as any,
|
||||||
} as unknown) as DataSourceInstanceSettings<PromOptions>;
|
} as unknown) as DataSourceInstanceSettings<PromOptions>;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -141,6 +143,30 @@ describe('PrometheusDatasource', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('When using customQueryParams', () => {
|
||||||
|
const promDs = new PrometheusDatasource(
|
||||||
|
{ ...instanceSettings, jsonData: { customQueryParameters: 'customQuery=123' } as any },
|
||||||
|
templateSrvStub as any,
|
||||||
|
timeSrvStub as any
|
||||||
|
);
|
||||||
|
it('added to metadata request', () => {
|
||||||
|
promDs.metadataRequest('/foo');
|
||||||
|
expect(fetchMock.mock.calls.length).toBe(1);
|
||||||
|
expect(fetchMock.mock.calls[0][0].url).toBe('proxied/foo?customQuery=123');
|
||||||
|
});
|
||||||
|
it('added to query', () => {
|
||||||
|
promDs.query({
|
||||||
|
range: { from: time({ seconds: 63 }), to: time({ seconds: 183 }) },
|
||||||
|
targets: [{ expr: 'test{job="testjob"}', format: 'time_series' }],
|
||||||
|
interval: '60s',
|
||||||
|
} as any);
|
||||||
|
expect(fetchMock.mock.calls.length).toBe(1);
|
||||||
|
expect(fetchMock.mock.calls[0][0].url).toBe(
|
||||||
|
'proxied/api/v1/query_range?query=test%7Bjob%3D%22testjob%22%7D&start=60&end=180&step=60&customQuery=123'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('When using adhoc filters', () => {
|
describe('When using adhoc filters', () => {
|
||||||
const DEFAULT_QUERY_EXPRESSION = 'metric{job="foo"} - metric';
|
const DEFAULT_QUERY_EXPRESSION = 'metric{job="foo"} - metric';
|
||||||
const target = { expr: DEFAULT_QUERY_EXPRESSION };
|
const target = { expr: DEFAULT_QUERY_EXPRESSION };
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
|||||||
if (data && Object.keys(data).length) {
|
if (data && Object.keys(data).length) {
|
||||||
options.url =
|
options.url =
|
||||||
options.url +
|
options.url +
|
||||||
'?' +
|
(options.url.search(/\?/) >= 0 ? '&' : '?') +
|
||||||
Object.entries(data)
|
Object.entries(data)
|
||||||
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
|
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
|
||||||
.join('&');
|
.join('&');
|
||||||
@@ -134,7 +134,13 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
|||||||
|
|
||||||
// Use this for tab completion features, wont publish response to other components
|
// Use this for tab completion features, wont publish response to other components
|
||||||
metadataRequest<T = any>(url: string) {
|
metadataRequest<T = any>(url: string) {
|
||||||
return this._request<T>(url, null, { method: 'GET', hideFromInspector: true }).toPromise(); // toPromise until we change getTagValues, getTagKeys to Observable
|
const data: any = {};
|
||||||
|
for (const [key, value] of this.customQueryParameters) {
|
||||||
|
if (data[key] == null) {
|
||||||
|
data[key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this._request<T>(url, data, { method: 'GET', hideFromInspector: true }).toPromise(); // toPromise until we change getTagValues, getTagKeys to Observable
|
||||||
}
|
}
|
||||||
|
|
||||||
interpolateQueryExpr(value: string | string[] = [], variable: any) {
|
interpolateQueryExpr(value: string | string[] = [], variable: any) {
|
||||||
|
|||||||
Reference in New Issue
Block a user