Use backend queries for item id mode
This commit is contained in:
@@ -7,12 +7,12 @@ export const DATAPOINT_VALUE = 0;
|
||||
export const DATAPOINT_TS = 1;
|
||||
|
||||
// Editor modes
|
||||
export const MODE_METRICS = 0;
|
||||
export const MODE_ITSERVICE = 1;
|
||||
export const MODE_TEXT = 2;
|
||||
export const MODE_ITEMID = 3;
|
||||
export const MODE_TRIGGERS = 4;
|
||||
export const MODE_PROBLEMS = 5;
|
||||
export const MODE_METRICS = '0';
|
||||
export const MODE_ITSERVICE = '1';
|
||||
export const MODE_TEXT = '2';
|
||||
export const MODE_ITEMID = '3';
|
||||
export const MODE_TRIGGERS = '4';
|
||||
export const MODE_PROBLEMS = '5';
|
||||
|
||||
// Triggers severity
|
||||
export const SEV_NOT_CLASSIFIED = 0;
|
||||
|
||||
@@ -100,15 +100,21 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
||||
* @return {Object} Grafana metrics object with timeseries data for each target.
|
||||
*/
|
||||
query(request: DataQueryRequest<any>): Promise<DataQueryResponse> | Observable<DataQueryResponse> {
|
||||
const isMetricQuery = request.targets.every(q => q.queryType === c.MODE_METRICS || q.mode === c.MODE_METRICS);
|
||||
if (isMetricQuery) {
|
||||
// Migrate old targets
|
||||
request.targets = request.targets.map(t => {
|
||||
// Prevent changes of original object
|
||||
const target = _.cloneDeep(t);
|
||||
return migrations.migrate(target);
|
||||
});
|
||||
|
||||
if (isBackendQuery(request)) {
|
||||
return this.backendQuery(request);
|
||||
}
|
||||
|
||||
// Create request for each target
|
||||
const promises = _.map(request.targets, t => {
|
||||
const promises = _.map(request.targets, target => {
|
||||
// Don't request for hidden targets
|
||||
if (t.hide) {
|
||||
if (target.hide) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -118,11 +124,6 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
||||
// Add range variables
|
||||
request.scopedVars = Object.assign({}, request.scopedVars, utils.getRangeScopedVars(request.range));
|
||||
|
||||
// Prevent changes of original object
|
||||
let target = _.cloneDeep(t);
|
||||
|
||||
// Migrate old targets
|
||||
target = migrations.migrate(target);
|
||||
this.replaceTargetVariables(target, request);
|
||||
|
||||
// Apply Time-related functions (timeShift(), etc)
|
||||
@@ -213,10 +214,6 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
||||
target = migrations.migrate(target);
|
||||
this.replaceTargetVariables(target, request);
|
||||
|
||||
if (target.queryType !== c.MODE_METRICS) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
...target,
|
||||
datasourceId,
|
||||
@@ -839,6 +836,10 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
||||
target.textFilter = this.replaceTemplateVars(target.textFilter, options.scopedVars);
|
||||
}
|
||||
|
||||
if (target.itemids) {
|
||||
target.itemids = this.templateSrv.replace(target.itemids, options.scopedVars, zabbixItemIdsTemplateFormat);
|
||||
}
|
||||
|
||||
_.forEach(target.functions, func => {
|
||||
func.params = _.map(func.params, param => {
|
||||
if (typeof param === 'number') {
|
||||
@@ -969,3 +970,10 @@ function getRequestTarget(request: DataQueryRequest<any>, refId: string): any {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function isBackendQuery(request: DataQueryRequest<any>): boolean {
|
||||
return request.targets.every(q =>
|
||||
q.queryType === c.MODE_METRICS ||
|
||||
q.queryType === c.MODE_ITEMID
|
||||
);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,9 @@ function migrateQueryType(target) {
|
||||
delete target.mode;
|
||||
}
|
||||
}
|
||||
|
||||
// queryType is a string in query model
|
||||
target.queryType = (target.queryType as number).toString();
|
||||
}
|
||||
|
||||
function migrateSLA(target) {
|
||||
|
||||
@@ -82,7 +82,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
||||
zabbix: any;
|
||||
replaceTemplateVars: any;
|
||||
templateSrv: TemplateSrv;
|
||||
editorModes: Array<{ value: string; text: string; queryType: number; }>;
|
||||
editorModes: Array<{ value: string; text: string; queryType: string; }>;
|
||||
slaPropertyList: Array<{ name: string; property: string; }>;
|
||||
slaIntervals: Array<{ text: string; value: string; }>;
|
||||
ackFilters: Array<{ text: string; value: number; }>;
|
||||
|
||||
Reference in New Issue
Block a user