Refactor: queryProcessor renamend to queryBuilder.
This commit is contained in:
@@ -8,13 +8,13 @@ import DataProcessor from './DataProcessor';
|
|||||||
import responseHandler from './responseHandler';
|
import responseHandler from './responseHandler';
|
||||||
import './zabbixAPI.service.js';
|
import './zabbixAPI.service.js';
|
||||||
import './zabbixCache.service.js';
|
import './zabbixCache.service.js';
|
||||||
import './queryProcessor.service.js';
|
import './queryBuilder.js';
|
||||||
import {ZabbixAPIError} from './zabbixAPICore.service.js';
|
import {ZabbixAPIError} from './zabbixAPICore.service.js';
|
||||||
|
|
||||||
class ZabbixAPIDatasource {
|
class ZabbixAPIDatasource {
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
constructor(instanceSettings, $q, templateSrv, alertSrv, zabbixAPIService, ZabbixCachingProxy, QueryProcessor) {
|
constructor(instanceSettings, $q, templateSrv, alertSrv, zabbixAPIService, ZabbixCachingProxy, QueryBuilder) {
|
||||||
|
|
||||||
// General data source settings
|
// General data source settings
|
||||||
this.name = instanceSettings.name;
|
this.name = instanceSettings.name;
|
||||||
@@ -42,7 +42,7 @@ class ZabbixAPIDatasource {
|
|||||||
this.zabbixCache = new ZabbixCachingProxy(this.zabbixAPI, this.cacheTTL);
|
this.zabbixCache = new ZabbixCachingProxy(this.zabbixAPI, this.cacheTTL);
|
||||||
|
|
||||||
// Initialize query builder
|
// Initialize query builder
|
||||||
this.queryProcessor = new QueryProcessor(this.zabbixCache);
|
this.queryBuilder = new QueryBuilder(this.zabbixCache);
|
||||||
|
|
||||||
// Dependencies
|
// Dependencies
|
||||||
this.q = $q;
|
this.q = $q;
|
||||||
@@ -149,7 +149,7 @@ class ZabbixAPIDatasource {
|
|||||||
let options = {
|
let options = {
|
||||||
itemtype: 'num'
|
itemtype: 'num'
|
||||||
};
|
};
|
||||||
return this.queryProcessor.build(target, options)
|
return this.queryBuilder.build(target, options)
|
||||||
.then(items => {
|
.then(items => {
|
||||||
// Add hostname for items from multiple hosts
|
// Add hostname for items from multiple hosts
|
||||||
var addHostName = utils.isRegex(target.host.filter);
|
var addHostName = utils.isRegex(target.host.filter);
|
||||||
@@ -228,7 +228,7 @@ class ZabbixAPIDatasource {
|
|||||||
let options = {
|
let options = {
|
||||||
itemtype: 'text'
|
itemtype: 'text'
|
||||||
};
|
};
|
||||||
return this.queryProcessor.build(target, options)
|
return this.queryBuilder.build(target, options)
|
||||||
.then(items => {
|
.then(items => {
|
||||||
if (items.length) {
|
if (items.length) {
|
||||||
return this.zabbixAPI.getHistory(items, timeFrom, timeTo)
|
return this.zabbixAPI.getHistory(items, timeFrom, timeTo)
|
||||||
@@ -318,13 +318,13 @@ class ZabbixAPIDatasource {
|
|||||||
if (template.app === '/.*/') {
|
if (template.app === '/.*/') {
|
||||||
template.app = '';
|
template.app = '';
|
||||||
}
|
}
|
||||||
result = this.queryProcessor.getItems(template.group, template.host, template.app);
|
result = this.queryBuilder.getItems(template.group, template.host, template.app);
|
||||||
} else if (parts.length === 3) {
|
} else if (parts.length === 3) {
|
||||||
// Get applications
|
// Get applications
|
||||||
result = this.queryProcessor.getApps(template.group, template.host);
|
result = this.queryBuilder.getApps(template.group, template.host);
|
||||||
} else if (parts.length === 2) {
|
} else if (parts.length === 2) {
|
||||||
// Get hosts
|
// Get hosts
|
||||||
result = this.queryProcessor.getHosts(template.group);
|
result = this.queryBuilder.getHosts(template.group);
|
||||||
} else if (parts.length === 1) {
|
} else if (parts.length === 1) {
|
||||||
// Get groups
|
// Get groups
|
||||||
result = this.zabbixCache.getGroups(template.group);
|
result = this.zabbixCache.getGroups(template.group);
|
||||||
@@ -350,7 +350,7 @@ class ZabbixAPIDatasource {
|
|||||||
// Show all triggers
|
// Show all triggers
|
||||||
var showTriggers = [0, 1];
|
var showTriggers = [0, 1];
|
||||||
|
|
||||||
var buildQuery = this.queryProcessor
|
var buildQuery = this.queryBuilder
|
||||||
.buildTriggerQuery(this.replaceTemplateVars(annotation.group, {}),
|
.buildTriggerQuery(this.replaceTemplateVars(annotation.group, {}),
|
||||||
this.replaceTemplateVars(annotation.host, {}),
|
this.replaceTemplateVars(annotation.host, {}),
|
||||||
this.replaceTemplateVars(annotation.application, {}));
|
this.replaceTemplateVars(annotation.application, {}));
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
|
|
||||||
this.zabbix = this.datasource.zabbixAPI;
|
this.zabbix = this.datasource.zabbixAPI;
|
||||||
this.cache = this.datasource.zabbixCache;
|
this.cache = this.datasource.zabbixCache;
|
||||||
this.queryProcessor = this.datasource.queryProcessor;
|
this.queryBuilder = this.datasource.queryBuilder;
|
||||||
this.$q = $q;
|
this.$q = $q;
|
||||||
|
|
||||||
// Use custom format for template variables
|
// Use custom format for template variables
|
||||||
@@ -116,7 +116,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
suggestGroups() {
|
suggestGroups() {
|
||||||
return this.queryProcessor.getAllGroups()
|
return this.queryBuilder.getAllGroups()
|
||||||
.then(groups => {
|
.then(groups => {
|
||||||
this.metric.groupList = groups;
|
this.metric.groupList = groups;
|
||||||
return groups;
|
return groups;
|
||||||
@@ -125,7 +125,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
|
|
||||||
suggestHosts() {
|
suggestHosts() {
|
||||||
let groupFilter = this.replaceTemplateVars(this.target.group.filter);
|
let groupFilter = this.replaceTemplateVars(this.target.group.filter);
|
||||||
return this.queryProcessor.getAllHosts(groupFilter)
|
return this.queryBuilder.getAllHosts(groupFilter)
|
||||||
.then(hosts => {
|
.then(hosts => {
|
||||||
this.metric.hostList = hosts;
|
this.metric.hostList = hosts;
|
||||||
return hosts;
|
return hosts;
|
||||||
@@ -135,7 +135,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
suggestApps() {
|
suggestApps() {
|
||||||
let groupFilter = this.replaceTemplateVars(this.target.group.filter);
|
let groupFilter = this.replaceTemplateVars(this.target.group.filter);
|
||||||
let hostFilter = this.replaceTemplateVars(this.target.host.filter);
|
let hostFilter = this.replaceTemplateVars(this.target.host.filter);
|
||||||
return this.queryProcessor.getAllApps(groupFilter, hostFilter)
|
return this.queryBuilder.getAllApps(groupFilter, hostFilter)
|
||||||
.then(apps => {
|
.then(apps => {
|
||||||
this.metric.appList = apps;
|
this.metric.appList = apps;
|
||||||
return apps;
|
return apps;
|
||||||
@@ -151,7 +151,7 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
showDisabledItems: this.target.options.showDisabledItems
|
showDisabledItems: this.target.options.showDisabledItems
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.queryProcessor
|
return this.queryBuilder
|
||||||
.getAllItems(groupFilter, hostFilter, appFilter, options)
|
.getAllItems(groupFilter, hostFilter, appFilter, options)
|
||||||
.then(items => {
|
.then(items => {
|
||||||
this.metric.itemList = items;
|
this.metric.itemList = items;
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import angular from 'angular';
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
|
||||||
function QueryProcessorFactory() {
|
function QueryBuilderFactory() {
|
||||||
|
|
||||||
class QueryProcessor {
|
class QueryBuilder {
|
||||||
constructor(zabbixCacheInstance) {
|
constructor(zabbixCacheInstance) {
|
||||||
this.cache = zabbixCacheInstance;
|
this.cache = zabbixCacheInstance;
|
||||||
}
|
}
|
||||||
@@ -149,12 +149,12 @@ function QueryProcessorFactory() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return QueryProcessor;
|
return QueryBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
angular
|
angular
|
||||||
.module('grafana.services')
|
.module('grafana.services')
|
||||||
.factory('QueryProcessor', QueryProcessorFactory);
|
.factory('QueryBuilder', QueryBuilderFactory);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find group, host, app or item by given name.
|
* Find group, host, app or item by given name.
|
||||||
@@ -22,10 +22,10 @@ describe('ZabbixDatasource', () => {
|
|||||||
ctx.alertSrv = {};
|
ctx.alertSrv = {};
|
||||||
ctx.zabbixAPIService = () => {};
|
ctx.zabbixAPIService = () => {};
|
||||||
ctx.ZabbixCachingProxy = () => {};
|
ctx.ZabbixCachingProxy = () => {};
|
||||||
ctx.QueryProcessor = () => {};
|
ctx.queryBuilder = () => {};
|
||||||
|
|
||||||
ctx.ds = new Datasource(ctx.instanceSettings, ctx.$q, ctx.templateSrv, ctx.alertSrv,
|
ctx.ds = new Datasource(ctx.instanceSettings, ctx.$q, ctx.templateSrv, ctx.alertSrv,
|
||||||
ctx.zabbixAPIService, ctx.ZabbixCachingProxy, ctx.QueryProcessor);
|
ctx.zabbixAPIService, ctx.ZabbixCachingProxy, ctx.queryBuilder);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When querying data', () => {
|
describe('When querying data', () => {
|
||||||
@@ -147,7 +147,7 @@ describe('ZabbixDatasource', () => {
|
|||||||
ctx.ds.zabbixCache = {
|
ctx.ds.zabbixCache = {
|
||||||
getGroups: () => Q.when([])
|
getGroups: () => Q.when([])
|
||||||
};
|
};
|
||||||
ctx.ds.queryProcessor = {
|
ctx.ds.queryBuilder = {
|
||||||
getGroups: () => Q.when([]),
|
getGroups: () => Q.when([]),
|
||||||
getHosts: () => Q.when([]),
|
getHosts: () => Q.when([]),
|
||||||
getApps: () => Q.when([]),
|
getApps: () => Q.when([]),
|
||||||
@@ -180,7 +180,7 @@ describe('ZabbixDatasource', () => {
|
|||||||
{query: 'Back*.', expect: 'Back*'}
|
{query: 'Back*.', expect: 'Back*'}
|
||||||
];
|
];
|
||||||
|
|
||||||
let getHosts = sinon.spy(ctx.ds.queryProcessor, 'getHosts');
|
let getHosts = sinon.spy(ctx.ds.queryBuilder, 'getHosts');
|
||||||
for (const test of tests) {
|
for (const test of tests) {
|
||||||
ctx.ds.metricFindQuery(test.query);
|
ctx.ds.metricFindQuery(test.query);
|
||||||
expect(getHosts).to.have.been.calledWith(test.expect);
|
expect(getHosts).to.have.been.calledWith(test.expect);
|
||||||
@@ -197,7 +197,7 @@ describe('ZabbixDatasource', () => {
|
|||||||
{query: 'Back*.*.', expect: ['Back*', '/.*/']}
|
{query: 'Back*.*.', expect: ['Back*', '/.*/']}
|
||||||
];
|
];
|
||||||
|
|
||||||
let getApps = sinon.spy(ctx.ds.queryProcessor, 'getApps');
|
let getApps = sinon.spy(ctx.ds.queryBuilder, 'getApps');
|
||||||
for (const test of tests) {
|
for (const test of tests) {
|
||||||
ctx.ds.metricFindQuery(test.query);
|
ctx.ds.metricFindQuery(test.query);
|
||||||
expect(getApps).to.have.been.calledWith(test.expect[0], test.expect[1]);
|
expect(getApps).to.have.been.calledWith(test.expect[0], test.expect[1]);
|
||||||
@@ -214,7 +214,7 @@ describe('ZabbixDatasource', () => {
|
|||||||
{query: 'Back*.*.cpu.*', expect: ['Back*', '/.*/', 'cpu']}
|
{query: 'Back*.*.cpu.*', expect: ['Back*', '/.*/', 'cpu']}
|
||||||
];
|
];
|
||||||
|
|
||||||
let getItems = sinon.spy(ctx.ds.queryProcessor, 'getItems');
|
let getItems = sinon.spy(ctx.ds.queryBuilder, 'getItems');
|
||||||
for (const test of tests) {
|
for (const test of tests) {
|
||||||
ctx.ds.metricFindQuery(test.query);
|
ctx.ds.metricFindQuery(test.query);
|
||||||
expect(getItems)
|
expect(getItems)
|
||||||
@@ -227,7 +227,7 @@ describe('ZabbixDatasource', () => {
|
|||||||
it('should invoke method with proper arguments', (done) => {
|
it('should invoke method with proper arguments', (done) => {
|
||||||
let query = '*.*';
|
let query = '*.*';
|
||||||
|
|
||||||
let getHosts = sinon.spy(ctx.ds.queryProcessor, 'getHosts');
|
let getHosts = sinon.spy(ctx.ds.queryBuilder, 'getHosts');
|
||||||
ctx.ds.metricFindQuery(query);
|
ctx.ds.metricFindQuery(query);
|
||||||
expect(getHosts).to.have.been.calledWith('/.*/');
|
expect(getHosts).to.have.been.calledWith('/.*/');
|
||||||
done();
|
done();
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class TriggerPanelEditorCtrl {
|
|||||||
this.datasourceSrv.get(this.panel.datasource)
|
this.datasourceSrv.get(this.panel.datasource)
|
||||||
.then(datasource => {
|
.then(datasource => {
|
||||||
this.datasource = datasource;
|
this.datasource = datasource;
|
||||||
this.queryProcessor = datasource.queryProcessor;
|
this.queryBuilder = datasource.queryBuilder;
|
||||||
this.initFilters();
|
this.initFilters();
|
||||||
this.panelCtrl.refresh();
|
this.panelCtrl.refresh();
|
||||||
});
|
});
|
||||||
@@ -91,7 +91,7 @@ class TriggerPanelEditorCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
suggestGroups() {
|
suggestGroups() {
|
||||||
return this.queryProcessor.getAllGroups()
|
return this.queryBuilder.getAllGroups()
|
||||||
.then(groups => {
|
.then(groups => {
|
||||||
this.metric.groupList = groups;
|
this.metric.groupList = groups;
|
||||||
return groups;
|
return groups;
|
||||||
@@ -100,7 +100,7 @@ class TriggerPanelEditorCtrl {
|
|||||||
|
|
||||||
suggestHosts() {
|
suggestHosts() {
|
||||||
let groupFilter = this.datasource.replaceTemplateVars(this.panel.triggers.group.filter);
|
let groupFilter = this.datasource.replaceTemplateVars(this.panel.triggers.group.filter);
|
||||||
return this.queryProcessor.getAllHosts(groupFilter)
|
return this.queryBuilder.getAllHosts(groupFilter)
|
||||||
.then(hosts => {
|
.then(hosts => {
|
||||||
this.metric.hostList = hosts;
|
this.metric.hostList = hosts;
|
||||||
return hosts;
|
return hosts;
|
||||||
@@ -110,7 +110,7 @@ class TriggerPanelEditorCtrl {
|
|||||||
suggestApps() {
|
suggestApps() {
|
||||||
let groupFilter = this.datasource.replaceTemplateVars(this.panel.triggers.group.filter);
|
let groupFilter = this.datasource.replaceTemplateVars(this.panel.triggers.group.filter);
|
||||||
let hostFilter = this.datasource.replaceTemplateVars(this.panel.triggers.host.filter);
|
let hostFilter = this.datasource.replaceTemplateVars(this.panel.triggers.host.filter);
|
||||||
return this.queryProcessor.getAllApps(groupFilter, hostFilter)
|
return this.queryBuilder.getAllApps(groupFilter, hostFilter)
|
||||||
.then(apps => {
|
.then(apps => {
|
||||||
this.metric.appList = apps;
|
this.metric.appList = apps;
|
||||||
return apps;
|
return apps;
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
|
|||||||
// Load datasource
|
// Load datasource
|
||||||
return this.datasourceSrv.get(this.panel.datasource).then(datasource => {
|
return this.datasourceSrv.get(this.panel.datasource).then(datasource => {
|
||||||
var zabbix = datasource.zabbixAPI;
|
var zabbix = datasource.zabbixAPI;
|
||||||
var queryProcessor = datasource.queryProcessor;
|
var queryBuilder = datasource.queryBuilder;
|
||||||
var showEvents = self.panel.showEvents.value;
|
var showEvents = self.panel.showEvents.value;
|
||||||
var triggerFilter = self.panel.triggers;
|
var triggerFilter = self.panel.triggers;
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
|
|||||||
var hostFilter = datasource.replaceTemplateVars(triggerFilter.host.filter);
|
var hostFilter = datasource.replaceTemplateVars(triggerFilter.host.filter);
|
||||||
var appFilter = datasource.replaceTemplateVars(triggerFilter.application.filter);
|
var appFilter = datasource.replaceTemplateVars(triggerFilter.application.filter);
|
||||||
|
|
||||||
var buildQuery = queryProcessor.buildTriggerQuery(groupFilter, hostFilter, appFilter);
|
var buildQuery = queryBuilder.buildTriggerQuery(groupFilter, hostFilter, appFilter);
|
||||||
return buildQuery.then(query => {
|
return buildQuery.then(query => {
|
||||||
return zabbix.getTriggers(query.groupids,
|
return zabbix.getTriggers(query.groupids,
|
||||||
query.hostids,
|
query.hostids,
|
||||||
|
|||||||
Reference in New Issue
Block a user