Merge pull request #12251 from mtanda/prometheus_use_matchers_for_completion

(prometheus) get label name/value from series API
This commit is contained in:
David 2018-09-13 11:48:13 +02:00 committed by GitHub
commit e4496080ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 24 deletions

View File

@ -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;
});
}

View File

@ -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);
}

View File

@ -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 = {