Refactor: queryProcessor renamend to queryBuilder.

This commit is contained in:
Alexander Zobnin
2016-11-13 13:16:07 +03:00
parent 88ddcd0c42
commit 032927cf8f
6 changed files with 31 additions and 31 deletions

View File

@@ -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, {}));

View File

@@ -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;

View File

@@ -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.

View File

@@ -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();

View File

@@ -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;

View File

@@ -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,