Merge pull request #9983 from mtanda/prometheus_nested

prometheus nested query support
This commit is contained in:
Carl Bergquist 2017-11-30 14:57:34 +01:00 committed by GitHub
commit 98f0305e68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View File

@ -157,6 +157,7 @@ export class PrometheusDatasource {
// Only replace vars in expression after having (possibly) updated interval vars
query.expr = this.templateSrv.replace(target.expr, scopedVars, this.interpolateQueryExpr);
query.expr = this.replaceNestedQuery(query.expr, options);
query.requestId = options.panelId + target.refId;
return query;
}
@ -271,6 +272,13 @@ export class PrometheusDatasource {
});
}
replaceNestedQuery(query, options) {
return query.replace(/\#([A-Z])/g, (match, g1) => {
let replaceTarget = options.targets.find((t) => { return t.refId === g1; });
return replaceTarget ? replaceTarget.expr : match;
});
}
transformMetricData(md, options, start, end, step) {
var dps = [],
metricLabel = null;

View File

@ -590,4 +590,19 @@ describe('PrometheusDatasource', function() {
expect(query.scopedVars.__interval_ms.value).to.be(5 * 1000);
});
});
describe('The nested query', function() {
it('should generate correct query', function() {
let query = 'sum(rate(#A[1m]))';
let options = {
targets: [
{
refId: 'A',
expr: 'http_requests_total'
}
]
};
let result = ctx.ds.replaceNestedQuery(query, options);
expect(result).to.be('sum(rate(http_requests_total[1m]))');
});
});
});