Allow to use names with dot in template queries, fixes #254

This commit is contained in:
Alexander Zobnin
2017-06-08 16:28:29 +03:00
parent 201c969e13
commit f04e19db69
8 changed files with 84 additions and 20 deletions

View File

@@ -483,7 +483,7 @@ System.register(['lodash', 'app/core/utils/datemath', './utils', './migrations',
var parts = [];
// Split query. Query structure: group.host.app.item
_.each(query.split('.'), function (part) {
_.each(utils.splitTemplateQuery(query), function (part) {
part = _this5.replaceTemplateVars(part, {});
// Replace wildcard to regex

File diff suppressed because one or more lines are too long

View File

@@ -56,13 +56,7 @@ System.register(['lodash', 'moment'], function (_export, _context) {
params.push(param);
return params;
}
///////////
// MACRO //
///////////
function containsMacro(itemName) {
}function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
@@ -99,6 +93,33 @@ System.register(['lodash', 'moment'], function (_export, _context) {
return macro;
}
/**
* Split template query to parts of zabbix entities
* group.host.app.item -> [group, host, app, item]
* {group}{host.com} -> [group, host.com]
*/
function splitTemplateQuery(query) {
var splitPattern = /{[^{}]*}/g;
var split = void 0;
if (isContainsBraces(query)) {
var result = query.match(splitPattern);
split = _.map(result, function (part) {
return _.trim(part, '{}');
});
} else {
split = query.split('.');
}
return split;
}
_export('splitTemplateQuery', splitTemplateQuery);
function isContainsBraces(query) {
return query.includes('{') && query.includes('}');
}
// Pattern for testing regex
function isRegex(str) {
return regexPattern.test(str);

File diff suppressed because one or more lines are too long

View File

@@ -375,7 +375,7 @@ var ZabbixAPIDatasource = function () {
var parts = [];
// Split query. Query structure: group.host.app.item
_lodash2.default.each(query.split('.'), function (part) {
_lodash2.default.each(utils.splitTemplateQuery(query), function (part) {
part = _this5.replaceTemplateVars(part, {});
// Replace wildcard to regex

View File

@@ -7,6 +7,7 @@ exports.regexPattern = undefined;
exports.expandItemName = expandItemName;
exports.containsMacro = containsMacro;
exports.replaceMacro = replaceMacro;
exports.splitTemplateQuery = splitTemplateQuery;
exports.isRegex = isRegex;
exports.isTemplateVariable = isTemplateVariable;
exports.buildRegex = buildRegex;
@@ -78,10 +79,6 @@ function splitKeyParams(paramStr) {
return params;
}
///////////
// MACRO //
///////////
var MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
function containsMacro(itemName) {
@@ -117,6 +114,31 @@ function escapeMacro(macro) {
return macro;
}
/**
* Split template query to parts of zabbix entities
* group.host.app.item -> [group, host, app, item]
* {group}{host.com} -> [group, host.com]
*/
function splitTemplateQuery(query) {
var splitPattern = /{[^{}]*}/g;
var split = void 0;
if (isContainsBraces(query)) {
var result = query.match(splitPattern);
split = _lodash2.default.map(result, function (part) {
return _lodash2.default.trim(part, '{}');
});
} else {
split = query.split('.');
}
return split;
}
function isContainsBraces(query) {
return query.includes('{') && query.includes('}');
}
// Pattern for testing regex
var regexPattern = exports.regexPattern = /^\/(.*)\/([gmi]*)$/m;