diff --git a/grafana/rmf-app/src/components/Root/Root.tsx b/grafana/rmf-app/src/components/Root/Root.tsx index 4af3c16..702037b 100644 --- a/grafana/rmf-app/src/components/Root/Root.tsx +++ b/grafana/rmf-app/src/components/Root/Root.tsx @@ -211,7 +211,7 @@ export class Root extends PureComponent {

- Link it with OMEGAMON dashboards (experimental): + Link with IBM Z OMEGAMON Web UI dashboards: { diff --git a/grafana/rmf-app/src/datasources/rmf-datasource/config-editor/config-editor.component.tsx b/grafana/rmf-app/src/datasources/rmf-datasource/config-editor/config-editor.component.tsx index 4c8809e..33850eb 100644 --- a/grafana/rmf-app/src/datasources/rmf-datasource/config-editor/config-editor.component.tsx +++ b/grafana/rmf-app/src/datasources/rmf-datasource/config-editor/config-editor.component.tsx @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React, { PureComponent, ReactNode } from 'react'; -import { DataSourcePluginOptionsEditorProps } from '@grafana/data'; -import { FieldValidationMessage, InlineField, InlineSwitch, LegacyForms, SecretInput, Combobox, ComboboxOption } from '@grafana/ui'; +import React, { PureComponent } from 'react'; +import { DataSourcePluginOptionsEditorProps, SelectableValue } from '@grafana/data'; +import { FieldValidationMessage, InlineField, InlineSwitch, LegacyForms, SecretInput, Select, ComboboxOption } from '@grafana/ui'; import { RMFDataSourceSettings, RMFDataSourceJsonData, RMFDataSourceSecureJsonData } from '../common/types'; import { OMEGAMON_DS_TYPE_NAME } from '../common/configSettings'; import { getBackendSrv } from '@grafana/runtime'; @@ -41,7 +41,7 @@ interface State { httpTimeoutError?: string; basicAuthUserError?: string; cacheSizeError?: string; - omegOptionsArray?: Array; + omegOptionsArray?: SelectableValue[]; } // TODO: somehow prometheus can validate fields from "run and test" in v11 export default class ConfigEditor extends PureComponent { @@ -158,6 +158,32 @@ export default class ConfigEditor extends PureComponent { return optionsArray; }; + async componentDidMount() { + await this.updateDatasourceList(OMEGAMON_DS_TYPE_NAME); + } + + updateDatasourceList = async (type: string) => { + var items: Set = new Set(); + var optionsArray: Array> = new Array; + items.add(""); + optionsArray.push({label: "", value: "" } as SelectableValue); + if (this.props.options.jsonData?.omegamonDs && !items.has(this.props.options.jsonData?.omegamonDs)) { + items.add(this.props.options.jsonData?.omegamonDs); + optionsArray.push({label: this.props.options.jsonData?.omegamonDs, value: this.props.options.jsonData?.omegamonDs } as SelectableValue); + } + var datasources: any = await getBackendSrv().get("/api/datasources"); + datasources.forEach((ds: any) => { + if (ds.type === type && !items.has(ds.name)) { + items.add(ds.name); + optionsArray.push({label: ds.name, value: ds.name } as SelectableValue); + } + }); + this.setState((prevState) => ({ + ...prevState, + omegOptionsArray: optionsArray + })); + } + render() { const { options } = this.props; const { urlError, httpTimeoutError, basicAuthUserError, cacheSizeError } = this.state; @@ -312,16 +338,15 @@ export default class ConfigEditor extends PureComponent { -

OMEGAMON (Experimental)

+

OMEGAMON (optional)

- { this.updateSettings({ jsonData: { omegamonDs: String(event.value) } }); }}