mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #9983 from mtanda/prometheus_nested
prometheus nested query support
This commit is contained in:
commit
98f0305e68
@ -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;
|
||||
|
@ -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]))');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user