mysql-connector: fix reapplying functions to targets with equal items

This commit is contained in:
Alexander Zobnin
2017-07-26 12:54:05 +03:00
parent 39f4db5182
commit 995b4401b6
8 changed files with 17 additions and 11 deletions

View File

@@ -426,10 +426,10 @@ System.register(['lodash', 'app/core/utils/datemath', './utils', './migrations',
var aliasFunctions = bindFunctionDefs(target.functions, 'Alias'); var aliasFunctions = bindFunctionDefs(target.functions, 'Alias');
// Apply transformation functions // Apply transformation functions
timeseries_data = _.map(timeseries_data, function (timeseries) { timeseries_data = _.cloneDeep(_.map(timeseries_data, function (timeseries) {
timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints); timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints);
return timeseries; return timeseries;
}); }));
// Apply filter functions // Apply filter functions
if (filterFunctions.length) { if (filterFunctions.length) {

File diff suppressed because one or more lines are too long

View File

@@ -157,7 +157,6 @@ System.register(['angular', 'lodash'], function (_export, _context) {
var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate
var grafanaSeries = _.map(time_series, function (series) { var grafanaSeries = _.map(time_series, function (series) {
var itemid = series.name; var itemid = series.name;
var datapoints = series.points;
var item = _.find(items, { 'itemid': itemid }); var item = _.find(items, { 'itemid': itemid });
var alias = item.name; var alias = item.name;
if (_.keys(hosts).length > 1 && addHostName) { if (_.keys(hosts).length > 1 && addHostName) {
@@ -165,6 +164,9 @@ System.register(['angular', 'lodash'], function (_export, _context) {
var host = _.find(hosts, { 'hostid': item.hostid }); var host = _.find(hosts, { 'hostid': item.hostid });
alias = host.name + ": " + alias; alias = host.name + ": " + alias;
} }
// zabbixCachingProxy deduplicates requests and returns one time series for equal queries.
// Clone is needed to prevent changing of series object shared between all targets.
var datapoints = _.cloneDeep(series.points);
return { return {
target: alias, target: alias,
datapoints: datapoints datapoints: datapoints

File diff suppressed because one or more lines are too long

View File

@@ -289,10 +289,10 @@ var ZabbixAPIDatasource = function () {
var aliasFunctions = bindFunctionDefs(target.functions, 'Alias'); var aliasFunctions = bindFunctionDefs(target.functions, 'Alias');
// Apply transformation functions // Apply transformation functions
timeseries_data = _lodash2.default.map(timeseries_data, function (timeseries) { timeseries_data = _lodash2.default.cloneDeep(_lodash2.default.map(timeseries_data, function (timeseries) {
timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints); timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints);
return timeseries; return timeseries;
}); }));
// Apply filter functions // Apply filter functions
if (filterFunctions.length) { if (filterFunctions.length) {

View File

@@ -195,7 +195,6 @@ function convertGrafanaTSResponse(time_series, items, addHostName) {
var hosts = _lodash2.default.uniqBy(_lodash2.default.flatten(_lodash2.default.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate var hosts = _lodash2.default.uniqBy(_lodash2.default.flatten(_lodash2.default.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate
var grafanaSeries = _lodash2.default.map(time_series, function (series) { var grafanaSeries = _lodash2.default.map(time_series, function (series) {
var itemid = series.name; var itemid = series.name;
var datapoints = series.points;
var item = _lodash2.default.find(items, { 'itemid': itemid }); var item = _lodash2.default.find(items, { 'itemid': itemid });
var alias = item.name; var alias = item.name;
if (_lodash2.default.keys(hosts).length > 1 && addHostName) { if (_lodash2.default.keys(hosts).length > 1 && addHostName) {
@@ -203,6 +202,9 @@ function convertGrafanaTSResponse(time_series, items, addHostName) {
var host = _lodash2.default.find(hosts, { 'hostid': item.hostid }); var host = _lodash2.default.find(hosts, { 'hostid': item.hostid });
alias = host.name + ": " + alias; alias = host.name + ": " + alias;
} }
// zabbixCachingProxy deduplicates requests and returns one time series for equal queries.
// Clone is needed to prevent changing of series object shared between all targets.
var datapoints = _lodash2.default.cloneDeep(series.points);
return { return {
target: alias, target: alias,
datapoints: datapoints datapoints: datapoints

View File

@@ -217,10 +217,10 @@ class ZabbixAPIDatasource {
let aliasFunctions = bindFunctionDefs(target.functions, 'Alias'); let aliasFunctions = bindFunctionDefs(target.functions, 'Alias');
// Apply transformation functions // Apply transformation functions
timeseries_data = _.map(timeseries_data, timeseries => { timeseries_data = _.cloneDeep(_.map(timeseries_data, timeseries => {
timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints); timeseries.datapoints = sequence(transformFunctions)(timeseries.datapoints);
return timeseries; return timeseries;
}); }));
// Apply filter functions // Apply filter functions
if (filterFunctions.length) { if (filterFunctions.length) {

View File

@@ -171,13 +171,15 @@ function convertGrafanaTSResponse(time_series, items, addHostName) {
var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate
let grafanaSeries = _.map(time_series, series => { let grafanaSeries = _.map(time_series, series => {
let itemid = series.name; let itemid = series.name;
let datapoints = series.points;
var item = _.find(items, {'itemid': itemid}); var item = _.find(items, {'itemid': itemid});
var alias = item.name; var alias = item.name;
if (_.keys(hosts).length > 1 && addHostName) { //only when actual multi hosts selected if (_.keys(hosts).length > 1 && addHostName) { //only when actual multi hosts selected
var host = _.find(hosts, {'hostid': item.hostid}); var host = _.find(hosts, {'hostid': item.hostid});
alias = host.name + ": " + alias; alias = host.name + ": " + alias;
} }
// zabbixCachingProxy deduplicates requests and returns one time series for equal queries.
// Clone is needed to prevent changing of series object shared between all targets.
let datapoints = _.cloneDeep(series.points);
return { return {
target: alias, target: alias,
datapoints: datapoints datapoints: datapoints