diff --git a/src/plugins/data_source_management/public/components/edit_data_source/__snapshots__/edit_data_source.test.tsx.snap b/src/plugins/data_source_management/public/components/edit_data_source/__snapshots__/edit_data_source.test.tsx.snap
index 85e08d85ecef..a3d004457a78 100644
--- a/src/plugins/data_source_management/public/components/edit_data_source/__snapshots__/edit_data_source.test.tsx.snap
+++ b/src/plugins/data_source_management/public/components/edit_data_source/__snapshots__/edit_data_source.test.tsx.snap
@@ -59,6 +59,7 @@ exports[`Datasource Management: Edit Datasource Wizard should load resources suc
/>
-
-
-
- }
- title={
-
-
-
- }
+
-
-
-
-
-
-
-
-
- Endpoint
-
-
-
-
-
-
-
-
-
-
-
- This connection information is used for reference in tables and when adding to a data source connection
-
-
-
-
-
-
-
-
-
-
+ Endpoint URL
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
- }
- title={
-
-
-
- }
+
-
-
-
-
-
-
-
-
- Endpoint
-
-
-
-
-
-
-
-
-
-
-
- This connection information is used for reference in tables and when adding to a data source connection
-
-
-
-
-
-
-
-
-
-
+ Endpoint URL
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
- }
- title={
-
-
-
- }
+
-
-
-
-
-
-
-
-
- Endpoint
-
-
-
-
-
-
-
-
-
-
-
- This connection information is used for reference in tables and when adding to a data source connection
-
-
-
-
-
-
-
-
-
-
+ Endpoint URL
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
+
{
existingDatasourceNamesList={existingDatasourceNamesList}
onDeleteDataSource={mockFn}
handleSubmit={mockFn}
+ displayToastMessage={mockFn}
/>
),
{
@@ -229,6 +230,7 @@ describe('Datasource Management: Edit Datasource Form', () => {
existingDatasourceNamesList={existingDatasourceNamesList}
onDeleteDataSource={mockFn}
handleSubmit={mockFn}
+ displayToastMessage={mockFn}
/>
),
{
diff --git a/src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx b/src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx
index 00c205fa1ade..bda8709cf509 100644
--- a/src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx
+++ b/src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx
@@ -29,6 +29,7 @@ import {
credentialSourceOptions,
DataSourceAttributes,
DataSourceManagementContextValue,
+ ToastMessageItem,
UsernamePasswordTypedContent,
} from '../../../../types';
import { context as contextType } from '../../../../../../opensearch_dashboards_react/public';
@@ -45,6 +46,7 @@ export interface EditDataSourceProps {
existingDatasourceNamesList: string[];
handleSubmit: (formValues: DataSourceAttributes) => void;
onDeleteDataSource?: () => void;
+ displayToastMessage: (info: ToastMessageItem) => void;
}
export interface EditDataSourceState {
formErrorsByField: CreateEditDataSourceValidation;
@@ -57,6 +59,7 @@ export interface EditDataSourceState {
};
showUpdatePasswordModal: boolean;
showUpdateOptions: boolean;
+ isLoading: boolean;
}
export class EditDataSourceForm extends React.Component {
@@ -81,6 +84,7 @@ export class EditDataSourceForm extends React.Component {
+ onClickUpdateDataSource = async () => {
if (this.isFormValid()) {
// update data source endpoint is currently not supported/allowed
const formValues: DataSourceAttributes = {
@@ -225,7 +229,19 @@ export class EditDataSourceForm extends React.Component {
+ updatePassword = async (password: string) => {
const { title, description, auth } = this.props.existingDataSource;
const updateAttributes: DataSourceAttributes = {
title,
@@ -261,8 +277,21 @@ export class EditDataSourceForm extends React.Component
-
-
- {
-
- }
-
- }
- description={
-
- {
-
- }
-
- }
+ {/* Endpoint */}
+
- {/* Endpoint */}
-
-
-
-
+
+
);
};
@@ -653,6 +660,7 @@ export class EditDataSourceForm extends React.Component
diff --git a/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.test.tsx b/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.test.tsx
index d8bd006f9dc1..d11f8c8bc9da 100644
--- a/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.test.tsx
+++ b/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.test.tsx
@@ -103,7 +103,7 @@ describe('Datasource Management: Edit Datasource Wizard', () => {
expect(history.push).toBeCalledWith('');
});
test('should fail to update datasource', async () => {
- spyOn(utils, 'updateDataSourceById').and.throwError('error');
+ spyOn(utils, 'updateDataSourceById').and.returnValue(new Error(''));
await act(async () => {
// @ts-ignore
await component.find(formIdentifier).first().prop('handleSubmit')(
diff --git a/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.tsx b/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.tsx
index 24e6448df35a..a0d485c2f6cf 100644
--- a/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.tsx
+++ b/src/plugins/data_source_management/public/components/edit_data_source/edit_data_source.tsx
@@ -51,49 +51,48 @@ export const EditDataSource: React.FunctionComponent {
(async function () {
- setIsLoading(true);
- try {
- const fetchDataSourceById = await getDataSourceById(dataSourceID, savedObjects.client);
- const listOfDataSources: DataSourceTableItem[] = await getDataSources(savedObjects.client);
- if (fetchDataSourceById) {
- setDataSource(fetchDataSourceById);
- setBreadcrumbs(getEditBreadcrumbs(fetchDataSourceById));
- }
- if (Array.isArray(listOfDataSources) && listOfDataSources.length) {
- setExistingDatasourceNamesList(
- listOfDataSources.map((datasource) => datasource.title?.toLowerCase())
- );
- }
- } catch (e) {
- setDataSource(defaultDataSource);
- handleDisplayToastMessage({
- id: 'dataSourcesManagement.editDataSource.editDataSourceFailMsg',
- defaultMessage: 'Unable to find the Data Source.',
- });
- props.history.push('');
- } finally {
- setIsLoading(false);
- }
+ await fetchDataSourceDetailsByID();
})();
});
- /* Handle submit - create data source*/
- const handleSubmit = async (attributes: DataSourceAttributes) => {
+ const fetchDataSourceDetailsByID = async () => {
setIsLoading(true);
try {
- await updateDataSourceById(savedObjects.client, dataSourceID, attributes);
- props.history.push('');
+ const fetchDataSourceById = await getDataSourceById(dataSourceID, savedObjects.client);
+ const listOfDataSources: DataSourceTableItem[] = await getDataSources(savedObjects.client);
+ if (fetchDataSourceById) {
+ setDataSource(fetchDataSourceById);
+ setBreadcrumbs(getEditBreadcrumbs(fetchDataSourceById));
+ }
+ if (Array.isArray(listOfDataSources) && listOfDataSources.length) {
+ setExistingDatasourceNamesList(
+ listOfDataSources.map((datasource) => datasource.title?.toLowerCase())
+ );
+ }
} catch (e) {
- setIsLoading(false);
+ setDataSource(defaultDataSource);
handleDisplayToastMessage({
id: 'dataSourcesManagement.editDataSource.editDataSourceFailMsg',
- defaultMessage: 'Updating the Data Source failed with some errors. Please try it again.',
+ defaultMessage: 'Unable to find the Data Source.',
});
+ props.history.push('');
+ } finally {
+ setIsLoading(false);
}
};
- const handleDisplayToastMessage = ({ id, defaultMessage }: ToastMessageItem) => {
- toasts.addWarning(i18n.translate(id, { defaultMessage }));
+ /* Handle submit - create data source*/
+ const handleSubmit = async (attributes: DataSourceAttributes) => {
+ await updateDataSourceById(savedObjects.client, dataSourceID, attributes);
+ await fetchDataSourceDetailsByID();
+ };
+
+ const handleDisplayToastMessage = ({ id, defaultMessage, success }: ToastMessageItem) => {
+ if (success) {
+ toasts.addSuccess(i18n.translate(id, { defaultMessage }));
+ } else {
+ toasts.addWarning(i18n.translate(id, { defaultMessage }));
+ }
};
/* Handle delete - data source*/
@@ -124,6 +123,7 @@ export const EditDataSource: React.FunctionComponent
) : null}
{isLoading || !dataSource?.endpoint ? : null}
diff --git a/src/plugins/data_source_management/public/types.ts b/src/plugins/data_source_management/public/types.ts
index a689cb4a593e..fe52466df1e5 100644
--- a/src/plugins/data_source_management/public/types.ts
+++ b/src/plugins/data_source_management/public/types.ts
@@ -42,6 +42,7 @@ export interface DataSourceTableItem {
export interface ToastMessageItem {
id: string;
defaultMessage: string;
+ success?: boolean;
}
export type DataSourceManagementContextValue = OpenSearchDashboardsReactContextValue<