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
|
// 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;
|
||||||
|
@ -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]))');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user