diff --git a/public/app/plugins/datasource/influxdb/datasource.ts b/public/app/plugins/datasource/influxdb/datasource.ts index ae483f9b057..a1956b3d4db 100644 --- a/public/app/plugins/datasource/influxdb/datasource.ts +++ b/public/app/plugins/datasource/influxdb/datasource.ts @@ -22,7 +22,6 @@ import { TIME_SERIES_TIME_FIELD_NAME, TIME_SERIES_VALUE_FIELD_NAME, TimeSeries, - CoreApp, } from '@grafana/data'; import InfluxSeries from './influx_series'; import InfluxQueryModel from './influx_query_model'; @@ -165,7 +164,7 @@ export default class InfluxDatasource extends DataSourceWithBackend { if (res.error) { @@ -449,7 +448,7 @@ export default class InfluxDatasource extends DataSourceWithBackend { - if (this.isFlux || (config.featureToggles.influxdbBackendMigration && this.access === 'proxy')) { + if (this.isFlux || this.isMigrationToggleOnAndIsAccessProxy()) { const target: InfluxQuery = { refId: 'metricFindQuery', query, @@ -554,6 +553,33 @@ export default class InfluxDatasource extends DataSourceWithBackend { + if (!res || !res.data || res.state !== LoadingState.Done) { + return { + status: 'error', + message: 'Error reading InfluxDB.', + }; + } + if (res.data?.length) { + return { status: 'success', message: 'Data source is working.' }; + } + return { + status: 'error', + message: 'Successfully connected to InfluxDB, but no tags found.', + }; + }) + .catch((err: any) => { + return { status: 'error', message: err.message }; + }); + } + const queryBuilder = new InfluxQueryBuilder({ measurement: '', tags: [] }, this.database); const query = queryBuilder.buildExploreQuery('RETENTION POLICIES'); @@ -700,4 +726,8 @@ export default class InfluxDatasource extends DataSourceWithBackend