Commit 0da41688 by Torkel Ödegaard

fix(prometheus): fixed templating issue with prometheus for when using variable…

fix(prometheus): fixed templating issue with prometheus for when using variable with non regex operator, #2918
parent df67d57b
......@@ -42,7 +42,11 @@ function (angular, _) {
return value.replace(/([\!\*\+\-\=<>\s\&\|\(\)\[\]\{\}\^\~\?\:\\/"])/g, "\\$1");
}
this.formatValue = function(value, format) {
this.formatValue = function(value, format, variable) {
if (typeof format === 'function') {
return format(value, variable, this.formatValue);
}
switch(format) {
case "regex": {
if (typeof value === 'string') {
......@@ -121,21 +125,21 @@ function (angular, _) {
this._regex.lastIndex = 0;
return target.replace(this._regex, function(match, g1, g2) {
variable = self._index[g1 || g2];
if (!variable) {
return match;
}
if (scopedVars) {
value = scopedVars[g1 || g2];
if (value) {
return self.formatValue(value.value);
return self.formatValue(value.value, format, variable);
}
}
variable = self._index[g1 || g2];
if (!variable) {
return match;
}
systemValue = self._grafanaVariables[variable.current.value];
if (systemValue) {
return self.formatValue(systemValue);
return self.formatValue(systemValue, format, variable);
}
value = variable.current.value;
......@@ -143,7 +147,7 @@ function (angular, _) {
value = self.getAllValue(variable);
}
var res = self.formatValue(value, format);
var res = self.formatValue(value, format, variable);
return res;
});
};
......
......@@ -39,6 +39,15 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS
return backendSrv.datasourceRequest(options);
};
function interpolateQueryExpr(value, variable, defaultFormatFn) {
// if no multi or include all do not regexEscape
if (!variable.multi && !variable.includeAll) {
return value;
}
return defaultFormatFn(value, 'regex', variable);
};
// Called once per panel (graph)
this.query = function(options) {
var start = getPrometheusTime(options.range.from, false);
......@@ -52,7 +61,7 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS
}
var query: any = {};
query.expr = templateSrv.replace(target.expr, options.scopedVars, 'regex');
query.expr = templateSrv.replace(target.expr, options.scopedVars, interpolateQueryExpr);
var interval = target.interval || options.interval;
var intervalFactor = target.intervalFactor || 1;
......
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