mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #12251 from mtanda/prometheus_use_matchers_for_completion
(prometheus) get label name/value from series API
This commit is contained in:
commit
e4496080ff
@ -113,7 +113,7 @@ export class PromCompleter {
|
||||
_.uniq(
|
||||
_.flatten(
|
||||
result.map(r => {
|
||||
return Object.keys(r.metric);
|
||||
return Object.keys(r);
|
||||
})
|
||||
)
|
||||
),
|
||||
@ -151,7 +151,7 @@ export class PromCompleter {
|
||||
const labelValues = this.transformToCompletions(
|
||||
_.uniq(
|
||||
result.map(r => {
|
||||
return r.metric[labelName];
|
||||
return r[labelName];
|
||||
})
|
||||
),
|
||||
'label value'
|
||||
@ -191,7 +191,7 @@ export class PromCompleter {
|
||||
_.uniq(
|
||||
_.flatten(
|
||||
result.map(r => {
|
||||
return Object.keys(r.metric);
|
||||
return Object.keys(r);
|
||||
})
|
||||
)
|
||||
),
|
||||
@ -233,7 +233,7 @@ export class PromCompleter {
|
||||
_.uniq(
|
||||
_.flatten(
|
||||
result.map(r => {
|
||||
return Object.keys(r.metric);
|
||||
return Object.keys(r);
|
||||
})
|
||||
)
|
||||
),
|
||||
@ -249,7 +249,7 @@ export class PromCompleter {
|
||||
_.uniq(
|
||||
_.flatten(
|
||||
result.map(r => {
|
||||
return Object.keys(r.metric);
|
||||
return Object.keys(r);
|
||||
})
|
||||
)
|
||||
),
|
||||
@ -264,7 +264,7 @@ export class PromCompleter {
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
getLabelNameAndValueForExpression(expr, type) {
|
||||
getLabelNameAndValueForExpression(expr: string, type: string): Promise<any> {
|
||||
if (this.labelQueryCache[expr]) {
|
||||
return Promise.resolve(this.labelQueryCache[expr]);
|
||||
}
|
||||
@ -276,9 +276,11 @@ export class PromCompleter {
|
||||
}
|
||||
query = '{__name__' + op + '"' + expr + '"}';
|
||||
}
|
||||
return this.datasource.performInstantQuery({ expr: query }, new Date().getTime() / 1000).then(response => {
|
||||
this.labelQueryCache[expr] = response.data.data.result;
|
||||
return response.data.data.result;
|
||||
const { start, end } = this.datasource.getTimeRange();
|
||||
const url = '/api/v1/series?match[]=' + encodeURIComponent(query) + '&start=' + start + '&end=' + end;
|
||||
return this.datasource.metadataRequest(url).then(response => {
|
||||
this.labelQueryCache[expr] = response.data.data;
|
||||
return response.data.data;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -578,6 +578,14 @@ export class PrometheusDatasource {
|
||||
return Math.ceil(date.valueOf() / 1000);
|
||||
}
|
||||
|
||||
getTimeRange(): { start: number; end: number } {
|
||||
let range = this.timeSrv.timeRange();
|
||||
return {
|
||||
start: this.getPrometheusTime(range.from, false),
|
||||
end: this.getPrometheusTime(range.to, true),
|
||||
};
|
||||
}
|
||||
|
||||
getOriginalMetricName(labelData) {
|
||||
return this.resultTransformer.getOriginalMetricName(labelData);
|
||||
}
|
||||
|
@ -18,22 +18,12 @@ describe('Prometheus editor completer', () => {
|
||||
const backendSrv = {} as BackendSrv;
|
||||
const datasourceStub = new PrometheusDatasource({}, {}, backendSrv, {}, {});
|
||||
|
||||
datasourceStub.performInstantQuery = jest.fn(() =>
|
||||
Promise.resolve({
|
||||
data: {
|
||||
data: {
|
||||
result: [
|
||||
{
|
||||
metric: {
|
||||
job: 'node',
|
||||
instance: 'localhost:9100',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
datasourceStub.metadataRequest = jest.fn(() =>
|
||||
Promise.resolve({ data: { data: [{ metric: { job: 'node', instance: 'localhost:9100' } }] } })
|
||||
);
|
||||
datasourceStub.getTimeRange = jest.fn(() => {
|
||||
return { start: 1514732400, end: 1514818800 };
|
||||
});
|
||||
datasourceStub.performSuggestQuery = jest.fn(() => Promise.resolve(['node_cpu']));
|
||||
|
||||
const templateSrv = {
|
||||
|
Loading…
Reference in New Issue
Block a user