diff --git a/.betterer.results b/.betterer.results index 65831dbd4cc..0d4444a9f74 100644 --- a/.betterer.results +++ b/.betterer.results @@ -7400,10 +7400,6 @@ exports[`no gf-form usage`] = { [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"] ], - "public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx:5381": [ - [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"], - [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"] - ], "public/app/plugins/datasource/influxdb/components/editor/query/QueryEditor.tsx:5381": [ [0, 0, 0, "gf-form usage has been deprecated. Use a component from @grafana/ui or custom CSS instead.", "5381"] ], diff --git a/pkg/tsdb/influxdb/fsql/fsql.go b/pkg/tsdb/influxdb/fsql/fsql.go index f4c486a7f05..99e4b55628d 100644 --- a/pkg/tsdb/influxdb/fsql/fsql.go +++ b/pkg/tsdb/influxdb/fsql/fsql.go @@ -98,17 +98,9 @@ func runnerFromDataSource(dsInfo *models.DatasourceInfo) (*runner, error) { } md := metadata.MD{} - for _, m := range dsInfo.Metadata { - for k, v := range m { - if _, ok := md[k]; ok { - return nil, fmt.Errorf("metadata: duplicate key: %s", k) - } - if k != "" { - md.Set(k, v) - } - } + if dsInfo.DbName != "" { + md.Set("database", dsInfo.DbName) } - if dsInfo.Token != "" { md.Set("Authorization", fmt.Sprintf("Bearer %s", dsInfo.Token)) } diff --git a/pkg/tsdb/influxdb/fsql/flightsql_test.go b/pkg/tsdb/influxdb/fsql/fsql_test.go similarity index 97% rename from pkg/tsdb/influxdb/fsql/flightsql_test.go rename to pkg/tsdb/influxdb/fsql/fsql_test.go index 064aa27fcb5..f6f3bc19b76 100644 --- a/pkg/tsdb/influxdb/fsql/flightsql_test.go +++ b/pkg/tsdb/influxdb/fsql/fsql_test.go @@ -63,11 +63,6 @@ func (suite *FSQLTestSuite) TestIntegration_QueryData() { DbName: "influxdb", Version: "test", HTTPMode: "proxy", - Metadata: []map[string]string{ - { - "bucket": "bucket", - }, - }, SecureGrpc: false, }, backend.QueryDataRequest{ diff --git a/pkg/tsdb/influxdb/influxdb.go b/pkg/tsdb/influxdb/influxdb.go index b8abe3c9ca9..01a7e044371 100644 --- a/pkg/tsdb/influxdb/influxdb.go +++ b/pkg/tsdb/influxdb/influxdb.go @@ -81,7 +81,6 @@ func newInstanceSettings(httpClientProvider httpclient.Provider) datasource.Inst TimeInterval: jsonData.TimeInterval, DefaultBucket: jsonData.DefaultBucket, Organization: jsonData.Organization, - Metadata: jsonData.Metadata, MaxSeries: maxSeries, SecureGrpc: true, Token: settings.DecryptedSecureJSONData["token"], diff --git a/pkg/tsdb/influxdb/models/datasource_info.go b/pkg/tsdb/influxdb/models/datasource_info.go index 3a86f853228..801ec4d0827 100644 --- a/pkg/tsdb/influxdb/models/datasource_info.go +++ b/pkg/tsdb/influxdb/models/datasource_info.go @@ -18,8 +18,6 @@ type DatasourceInfo struct { Organization string `json:"organization"` MaxSeries int `json:"maxSeries"` - // Flight SQL metadata - Metadata []map[string]string `json:"metadata"` // FlightSQL grpc connection SecureGrpc bool `json:"secureGrpc"` } diff --git a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxFluxConfig.tsx b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxFluxConfig.tsx index dd28a7c73b3..442e6f85f81 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxFluxConfig.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxFluxConfig.tsx @@ -11,7 +11,7 @@ import { InlineField, InlineFieldRow, Input, SecretInput } from '@grafana/ui'; import { InfluxOptions, InfluxSecureJsonData } from '../../../types'; -const WIDTH_SHORT = 20; +import { WIDTH_SHORT } from './constants'; export type Props = DataSourcePluginOptionsEditorProps; diff --git a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxInfluxQLConfig.tsx b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxInfluxQLConfig.tsx index d95d9bdf789..e811a69fc9b 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxInfluxQLConfig.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxInfluxQLConfig.tsx @@ -4,6 +4,7 @@ import React from 'react'; import { DataSourcePluginOptionsEditorProps, + GrafanaTheme2, onUpdateDatasourceJsonDataOption, onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceOption, @@ -11,18 +12,17 @@ import { SelectableValue, updateDatasourcePluginResetOption, } from '@grafana/data'; -import { GrafanaTheme2 } from '@grafana/data/src/themes'; import { Alert, Field, InlineLabel, Input, SecretInput, Select, useStyles2 } from '@grafana/ui'; import { InfluxOptions, InfluxSecureJsonData } from '../../../types'; +import { WIDTH_SHORT } from './constants'; + const httpModes: SelectableValue[] = [ { label: 'GET', value: 'GET' }, { label: 'POST', value: 'POST' }, ]; -const WIDTH_SHORT = 20; - export type Props = DataSourcePluginOptionsEditorProps; export const InfluxInfluxQLConfig = (props: Props) => { diff --git a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx index 501cc4cd7f2..b0134b21cc2 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx @@ -1,138 +1,69 @@ -import React, { useEffect, useState } from 'react'; +import { css } from '@emotion/css'; +import { uniqueId } from 'lodash'; +import React from 'react'; import { DataSourcePluginOptionsEditorProps, + GrafanaTheme2, onUpdateDatasourceSecureJsonDataOption, updateDatasourcePluginResetOption, } from '@grafana/data'; -import { InlineField, SecretInput, Input, InlineFieldRow, InlineLabel } from '@grafana/ui'; +import { Field, InlineLabel, Input, SecretInput, useStyles2 } from '@grafana/ui'; import { InfluxOptions, InfluxSecureJsonData } from '../../../types'; +import { WIDTH_SHORT } from './constants'; + export type Props = DataSourcePluginOptionsEditorProps; -type MetadataState = Array<{ key: string; value: string }>; - -export const addMetaData = (setMetaData: (val: MetadataState) => void, metaDataArr: MetadataState) => { - setMetaData([...metaDataArr, { key: '', value: '' }]); -}; - -export const removeMetaData = (i: number, setMetaData: (val: MetadataState) => void, metaDataArr: MetadataState) => { - const newMetaValues = [...metaDataArr]; - newMetaValues.splice(i, 1); - setMetaData(newMetaValues); -}; - -export const onKeyChange = ( - key: string, - metaDataArr: MetadataState, - index: number, - setMetaData: (val: MetadataState) => void -) => { - const newMetaValues = [...metaDataArr]; - newMetaValues[index]['key'] = key; - setMetaData(newMetaValues); -}; - -export const onValueChange = ( - value: string, - metaDataArr: MetadataState, - index: number, - setMetaData: (val: MetadataState) => void -) => { - const newMetaValues = [...metaDataArr]; - newMetaValues[index]['value'] = value; - setMetaData(newMetaValues); -}; - export const InfluxSqlConfig = (props: Props) => { - const { - options: { jsonData, secureJsonData, secureJsonFields }, - } = props; - - const existingMetadata: MetadataState = jsonData?.metadata?.length - ? jsonData?.metadata?.map((md) => ({ key: Object.keys(md)[0], value: Object.values(md)[0] })) - : [{ key: '', value: '' }]; - const [metaDataArr, setMetaData] = useState(existingMetadata); - - useEffect(() => { - const { onOptionsChange, options } = props; - const mapData = metaDataArr?.map((m) => ({ [m.key]: m.value })); - const jsonData = { - ...options.jsonData, - metadata: mapData, - }; - onOptionsChange({ - ...options, - jsonData, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [metaDataArr]); + const { options, onOptionsChange } = props; + const { jsonData, secureJsonData, secureJsonFields } = options; + const styles = useStyles2(getStyles); + const htmlPrefix = uniqueId('influxdb-sql-config'); return (
-
-
Token
-
-
- - updateDatasourcePluginResetOption(props, 'token')} - onChange={onUpdateDatasourceSecureJsonDataOption(props, 'token')} - isConfigured={secureJsonFields?.token} - /> - -
-
-
-
MetaData
-
- {metaDataArr?.map((_, i) => ( - - - onKeyChange(e.currentTarget.value.trim(), metaDataArr, i, setMetaData)} - > - - - onValueChange(e.currentTarget.value.trim(), metaDataArr, i, setMetaData)} - > - - {i + 1 >= metaDataArr.length && ( - addMetaData(setMetaData, metaDataArr)} width="auto"> - + - - )} - {i > 0 && ( - removeMetaData(i, setMetaData, metaDataArr)} - > - - - - )} - - ))} -
+ Database} + className={styles.horizontalField} + htmlFor={`${htmlPrefix}-dbName`} + > + { + onOptionsChange({ + ...options, + jsonData: { + ...jsonData, + dbName: event.currentTarget.value, + }, + }); + }} + /> + + Token} className={styles.horizontalField}> + updateDatasourcePluginResetOption(props, 'token')} + onChange={onUpdateDatasourceSecureJsonDataOption(props, 'token')} + isConfigured={Boolean(secureJsonFields && secureJsonFields.token)} + /> +
); }; + +const getStyles = (theme: GrafanaTheme2) => ({ + horizontalField: css({ + justifyContent: 'initial', + margin: `0 ${theme.spacing(0.5)} ${theme.spacing(0.5)} 0`, + }), +}); diff --git a/public/app/plugins/datasource/influxdb/components/editor/config/constants.ts b/public/app/plugins/datasource/influxdb/components/editor/config/constants.ts new file mode 100644 index 00000000000..638db0f2dac --- /dev/null +++ b/public/app/plugins/datasource/influxdb/components/editor/config/constants.ts @@ -0,0 +1 @@ +export const WIDTH_SHORT = 20;