Commit f8b8907c by Alexander Zobnin Committed by Torkel Ödegaard

Initial graphite tags support (#9239)

* graphite: initial seriesByTag() support

* graphite: groupByTags() function

* graphite: aliasByTags() function

* graphite: fix optional params update, issue #9238

* graphite: fix tag-related functions version

* graphite: add 1.1.x version to config

* graphite: fix seriesByTag() series parsing
parent 4326790b
...@@ -16,6 +16,7 @@ export class GraphiteConfigCtrl { ...@@ -16,6 +16,7 @@ export class GraphiteConfigCtrl {
graphiteVersions = [ graphiteVersions = [
{name: '0.9.x', value: '0.9'}, {name: '0.9.x', value: '0.9'},
{name: '1.0.x', value: '1.0'}, {name: '1.0.x', value: '1.0'},
{name: '1.1.x', value: '1.1'},
]; ];
} }
...@@ -822,6 +822,49 @@ function (_, $) { ...@@ -822,6 +822,49 @@ function (_, $) {
version: '1.0' version: '1.0'
}); });
addFuncDef({
name: 'seriesByTag',
category: categories.Special,
params: [
{ name: "tagExpression", type: "string" },
{ name: "tagExpression", type: "string", optional: true },
{ name: "tagExpression", type: "string", optional: true },
{ name: "tagExpression", type: "string", optional: true },
],
version: '1.1'
});
addFuncDef({
name: "groupByTags",
category: categories.Special,
params: [
{
name: "function",
type: "string",
options: ['sum', 'avg', 'maxSeries']
},
{ name: "tag", type: "string" },
{ name: "tag", type: "string", optional: true },
{ name: "tag", type: "string", optional: true },
{ name: "tag", type: "string", optional: true },
],
defaultParams: ["sum", "tag"],
version: '1.1'
});
addFuncDef({
name: "aliasByTags",
category: categories.Special,
params: [
{ name: "tag", type: "string" },
{ name: "tag", type: "string", optional: true },
{ name: "tag", type: "string", optional: true },
{ name: "tag", type: "string", optional: true },
],
defaultParams: ["tag"],
version: '1.1'
});
_.each(categories, function(funcList, catName) { _.each(categories, function(funcList, catName) {
categories[catName] = _.sortBy(funcList, 'name'); categories[catName] = _.sortBy(funcList, 'name');
}); });
...@@ -873,7 +916,7 @@ function (_, $) { ...@@ -873,7 +916,7 @@ function (_, $) {
// if string contains ',' and next param is optional, split and update both // if string contains ',' and next param is optional, split and update both
if (this._hasMultipleParamsInString(strValue, index)) { if (this._hasMultipleParamsInString(strValue, index)) {
_.each(strValue.split(','), function(partVal, idx) { _.each(strValue.split(','), function(partVal, idx) {
this.updateParam(partVal.trim(), idx); this.updateParam(partVal.trim(), index + idx);
}.bind(this)); }.bind(this));
return; return;
} }
......
...@@ -96,7 +96,8 @@ export class GraphiteQueryCtrl extends QueryCtrl { ...@@ -96,7 +96,8 @@ export class GraphiteQueryCtrl extends QueryCtrl {
if ((index-1) >= func.def.params.length) { if ((index-1) >= func.def.params.length) {
throw { message: 'invalid number of parameters to method ' + func.def.name }; throw { message: 'invalid number of parameters to method ' + func.def.name };
} }
this.addFunctionParameter(func, astNode.value, index, true); var shiftBack = this.isShiftParamsBack(func);
this.addFunctionParameter(func, astNode.value, index, shiftBack);
break; break;
case 'metric': case 'metric':
if (this.segments.length > 0) { if (this.segments.length > 0) {
...@@ -113,6 +114,10 @@ export class GraphiteQueryCtrl extends QueryCtrl { ...@@ -113,6 +114,10 @@ export class GraphiteQueryCtrl extends QueryCtrl {
} }
} }
isShiftParamsBack(func) {
return func.def.name !== 'seriesByTag';
}
getSegmentPathUpTo(index) { getSegmentPathUpTo(index) {
var arr = this.segments.slice(0, index); var arr = this.segments.slice(0, index);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment