diff --git a/public/app/plugins/datasource/loki/datasource.test.ts b/public/app/plugins/datasource/loki/datasource.test.ts index cccd3c87b23..bf5ab13a691 100644 --- a/public/app/plugins/datasource/loki/datasource.test.ts +++ b/public/app/plugins/datasource/loki/datasource.test.ts @@ -261,7 +261,7 @@ describe('LokiDatasource', () => { return Promise.resolve({ status: 200, data: { - values: ['avalue'], + data: ['avalue'], }, }); }, diff --git a/public/app/plugins/datasource/loki/datasource.ts b/public/app/plugins/datasource/loki/datasource.ts index 6cbb6c39b3a..796d4d08fc3 100644 --- a/public/app/plugins/datasource/loki/datasource.ts +++ b/public/app/plugins/datasource/loki/datasource.ts @@ -373,7 +373,7 @@ export class LokiDatasource extends DataSourceApi { async metadataRequest(url: string, params?: Record) { const res = await this._request(url, params, { silent: true }).toPromise(); return { - data: { data: res.data.values || [] }, + data: { data: res.data.data || res.data.values || [] }, }; } @@ -559,21 +559,24 @@ export class LokiDatasource extends DataSourceApi { throw err; }), switchMap((response: { data: { values: string[] }; status: number }) => - iif( + iif( () => response.status === 404, defer(() => this._request('/api/prom/label', { start })), defer(() => of(response)) ) ), - map(res => - res && res.data && res.data.values && res.data.values.length - ? { status: 'success', message: 'Data source connected and labels found.' } - : { - status: 'error', - message: - 'Data source connected, but no labels received. Verify that Loki and Promtail is configured properly.', - } - ), + map(res => { + const values: any[] = res?.data?.data || res?.data?.values || []; + const testResult = + values.length > 0 + ? { status: 'success', message: 'Data source connected and labels found.' } + : { + status: 'error', + message: + 'Data source connected, but no labels received. Verify that Loki and Promtail is configured properly.', + }; + return testResult; + }), catchError((err: any) => { let message = 'Loki: '; if (err.statusText) {