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 // Only replace vars in expression after having (possibly) updated interval vars
query.expr = this.templateSrv.replace(target.expr, scopedVars, this.interpolateQueryExpr); query.expr = this.templateSrv.replace(target.expr, scopedVars, this.interpolateQueryExpr);
query.expr = this.replaceNestedQuery(query.expr, options);
query.requestId = options.panelId + target.refId; query.requestId = options.panelId + target.refId;
return query; 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) { transformMetricData(md, options, start, end, step) {
var dps = [], var dps = [],
metricLabel = null; metricLabel = null;

View File

@ -590,4 +590,19 @@ describe('PrometheusDatasource', function() {
expect(query.scopedVars.__interval_ms.value).to.be(5 * 1000); 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]))');
});
});
}); });