Enable backend requests

This commit is contained in:
Alexander Zobnin
2021-05-28 13:11:44 +03:00
parent 3dd00c4699
commit 4f7699442e

View File

@@ -18,8 +18,6 @@ import { ZabbixMetricsQuery, ZabbixDSOptions, VariableQueryTypes, ShowProblemTyp
import { getBackendSrv, getTemplateSrv, toDataQueryResponse } from '@grafana/runtime'; import { getBackendSrv, getTemplateSrv, toDataQueryResponse } from '@grafana/runtime';
import { DataFrame, DataQueryRequest, DataQueryResponse, DataSourceApi, DataSourceInstanceSettings, FieldType, isDataFrame, LoadingState } from '@grafana/data'; import { DataFrame, DataQueryRequest, DataQueryResponse, DataSourceApi, DataSourceInstanceSettings, FieldType, isDataFrame, LoadingState } from '@grafana/data';
const ENABLE_BACKEND_QUERIES = true;
export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDSOptions> { export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDSOptions> {
name: string; name: string;
basicAuth: any; basicAuth: any;
@@ -98,34 +96,34 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
/** /**
* Query panel data. Calls for each panel in dashboard. * Query panel data. Calls for each panel in dashboard.
* @param {Object} options Contains time range, targets and other info. * @param {Object} request Contains time range, targets and other info.
* @return {Object} Grafana metrics object with timeseries data for each target. * @return {Object} Grafana metrics object with timeseries data for each target.
*/ */
query(options: DataQueryRequest<any>): Promise<DataQueryResponse> | Observable<DataQueryResponse> { query(request: DataQueryRequest<any>): Promise<DataQueryResponse> | Observable<DataQueryResponse> {
const isMetricQuery = options.targets.every(q => q.queryType === c.MODE_METRICS ||q.mode === c.MODE_METRICS); const isMetricQuery = request.targets.every(q => q.queryType === c.MODE_METRICS || q.mode === c.MODE_METRICS);
if (isMetricQuery && ENABLE_BACKEND_QUERIES) { if (isMetricQuery) {
return this.backendQuery(options); return this.backendQuery(request);
} }
// Create request for each target // Create request for each target
const promises = _.map(options.targets, t => { const promises = _.map(request.targets, t => {
// Don't request for hidden targets // Don't request for hidden targets
if (t.hide) { if (t.hide) {
return []; return [];
} }
let timeFrom = Math.ceil(dateMath.parse(options.range.from) / 1000); let timeFrom = Math.ceil(dateMath.parse(request.range.from) / 1000);
let timeTo = Math.ceil(dateMath.parse(options.range.to) / 1000); let timeTo = Math.ceil(dateMath.parse(request.range.to) / 1000);
// Add range variables // Add range variables
options.scopedVars = Object.assign({}, options.scopedVars, utils.getRangeScopedVars(options.range)); request.scopedVars = Object.assign({}, request.scopedVars, utils.getRangeScopedVars(request.range));
// Prevent changes of original object // Prevent changes of original object
let target = _.cloneDeep(t); let target = _.cloneDeep(t);
// Migrate old targets // Migrate old targets
target = migrations.migrate(target); target = migrations.migrate(target);
this.replaceTargetVariables(target, options); this.replaceTargetVariables(target, request);
// Apply Time-related functions (timeShift(), etc) // Apply Time-related functions (timeShift(), etc)
const timeFunctions = bindFunctionDefs(target.functions, 'Time'); const timeFunctions = bindFunctionDefs(target.functions, 'Time');
@@ -146,7 +144,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
} }
if (!target.queryType || target.queryType === c.MODE_METRICS) { if (!target.queryType || target.queryType === c.MODE_METRICS) {
return this.queryNumericData(target, timeRange, useTrends, options); return this.queryNumericData(target, timeRange, useTrends, request);
} else if (target.queryType === c.MODE_TEXT) { } else if (target.queryType === c.MODE_TEXT) {
return this.queryTextData(target, timeRange); return this.queryTextData(target, timeRange);
} else { } else {
@@ -157,16 +155,16 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
if (!target.itemids) { if (!target.itemids) {
return []; return [];
} }
return this.queryItemIdData(target, timeRange, useTrends, options); return this.queryItemIdData(target, timeRange, useTrends, request);
} else if (target.queryType === c.MODE_ITSERVICE) { } else if (target.queryType === c.MODE_ITSERVICE) {
// IT services query // IT services query
return this.queryITServiceData(target, timeRange, options); return this.queryITServiceData(target, timeRange, request);
} else if (target.queryType === c.MODE_TRIGGERS) { } else if (target.queryType === c.MODE_TRIGGERS) {
// Triggers query // Triggers query
return this.queryTriggersData(target, timeRange); return this.queryTriggersData(target, timeRange);
} else if (target.queryType === c.MODE_PROBLEMS) { } else if (target.queryType === c.MODE_PROBLEMS) {
// Problems query // Problems query
return this.queryProblems(target, timeRange, options); return this.queryProblems(target, timeRange, request);
} else { } else {
return []; return [];
} }
@@ -188,7 +186,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
return { return {
data, data,
state: LoadingState.Done, state: LoadingState.Done,
key: options.requestId, key: request.requestId,
}; };
}); });
} }