diff --git a/config/opensearch_dashboards.yml b/config/opensearch_dashboards.yml index 47de509b4483..f852db16444e 100644 --- a/config/opensearch_dashboards.yml +++ b/config/opensearch_dashboards.yml @@ -1,3 +1,17 @@ +savedObjects.permission.enabled: true +server.host: '0.0.0.0' +opensearch.hosts: ['https://localhost:9200'] +opensearch.ssl.verificationMode: none +opensearch.username: 'admin' +opensearch.password: 'myStrongPassword123!' +opensearch.requestHeadersWhitelist: [authorization, securitytenant] +# opensearch_security.multitenancy.enabled: false +# opensearch_security.multitenancy.tenants.preferred: ['Private', 'Global'] +# opensearch_security.readonly_mode.roles: ['kibana_read_only'] +# opensearch_security.cookie.secure: false +workspace.enabled: true +opensearch.ignoreVersionMismatch: true +data_source.enabled: true # OpenSearch Dashboards is served by a back end server. This setting specifies the port to use. #server.port: 5601 @@ -359,13 +373,7 @@ # This publishes the Application Usage and UI Metrics into the saved object, which can be accessed by /api/stats?extended=true&legacy=true&exclude_usage=false # usageCollection.uiMetric.enabled: false -# Set the value to true to enable enhancements for the data plugin -# data.enhancements.enabled: false - -# Set the value to true to enable dynamic config service to obtain configs from a config store. By default, it's disabled -# dynamic_config_service.enabled: false - # Set the backend roles in groups or users, whoever has the backend roles or exactly match the user ids defined in this config will be regard as dashboard admin. # Dashboard admin will have the access to all the workspaces(workspace.enabled: true) and objects inside OpenSearch Dashboards. # opensearchDashboards.dashboardAdmin.groups: ["dashboard_admin"] -# opensearchDashboards.dashboardAdmin.users: ["dashboard_admin"] +opensearchDashboards.dashboardAdmin.users: ['dashboard_admin'] diff --git a/package.json b/package.json index 1ed701790cdf..07d7d99dc2e4 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dashboarding" ], "private": true, - "version": "3.0.0", + "version": "2.15.0", "branch": "main", "types": "./opensearch_dashboards.d.ts", "tsdocMetadata": "./build/tsdoc-metadata.json", diff --git a/src/plugins/workspace/public/components/workspace_creator/workspace_creator_form.tsx b/src/plugins/workspace/public/components/workspace_creator/workspace_creator_form.tsx index bd60763564bb..4c634e5286c7 100644 --- a/src/plugins/workspace/public/components/workspace_creator/workspace_creator_form.tsx +++ b/src/plugins/workspace/public/components/workspace_creator/workspace_creator_form.tsx @@ -178,7 +178,7 @@ export const WorkspaceCreatorForm = (props: WorkspaceCreatorFormProps) => { savedObjects={savedObjects} assignedDataSources={formData.selectedDataSources} data-test-subj={`workspaceForm-dataSourcePanel`} - isDashboardAdmin={true} + showDataSourceManagement={true} /> diff --git a/src/plugins/workspace/public/components/workspace_detail/workspace_detail_connection_table.test.tsx b/src/plugins/workspace/public/components/workspace_detail/workspace_detail_connection_table.test.tsx index ce5f1b4df871..7a2bf3702325 100644 --- a/src/plugins/workspace/public/components/workspace_detail/workspace_detail_connection_table.test.tsx +++ b/src/plugins/workspace/public/components/workspace_detail/workspace_detail_connection_table.test.tsx @@ -64,9 +64,10 @@ const dataSourceConnectionsMock = [ describe('WorkspaceDetailConnectionTable', () => { beforeEach(() => { + const mockPrepend = jest.fn().mockImplementation((path) => path); const mockHttp = { basePath: { - serverBasePath: '', + prepend: mockPrepend, }, }; (useOpenSearchDashboards as jest.Mock).mockImplementation(() => ({ diff --git a/src/plugins/workspace/public/components/workspace_form/data_source_connection_table.tsx b/src/plugins/workspace/public/components/workspace_form/data_source_connection_table.tsx index 0907324942bd..90e80577540b 100644 --- a/src/plugins/workspace/public/components/workspace_form/data_source_connection_table.tsx +++ b/src/plugins/workspace/public/components/workspace_form/data_source_connection_table.tsx @@ -118,9 +118,14 @@ export const DataSourceConnectionTable = ({ const basePath = http.basePath.serverBasePath; let url: string; if (record.connectionType === DataSourceConnectionType.OpenSearchConnection) { - url = `${origin}${basePath}/app/dataSources/${record.id}`; + url = http.basePath.prepend(`/app/dataSources/${record.id}`, { + withoutClientBasePath: true, + }); } else { url = `${origin}${basePath}/app/dataSources/manage/${name}?dataSourceMDSId=${record.parentId}`; + url = http.basePath.prepend(`/app/dataSources/${record.id}`, { + withoutClientBasePath: true, + }); } return ( diff --git a/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.test.tsx b/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.test.tsx index 1a3f5e45608c..fdb26c2b21fc 100644 --- a/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.test.tsx +++ b/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.test.tsx @@ -80,7 +80,7 @@ const setup = ({ assignedDataSources = [], onChange = jest.fn(), errors = undefined, - isDashboardAdmin = true, + showDataSourceManagement = true, }: Partial) => { return render( @@ -90,7 +90,7 @@ const setup = ({ savedObjects={savedObjects} assignedDataSources={assignedDataSources} errors={errors} - isDashboardAdmin={isDashboardAdmin} + showDataSourceManagement={showDataSourceManagement} /> diff --git a/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.tsx b/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.tsx index 561dcd449a31..ec73a727d4f0 100644 --- a/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.tsx +++ b/src/plugins/workspace/public/components/workspace_form/select_data_source_panel.tsx @@ -21,15 +21,14 @@ export interface SelectDataSourcePanelProps { savedObjects: SavedObjectsStart; assignedDataSources: DataSource[]; onChange: (value: DataSource[]) => void; - isDashboardAdmin: boolean; + showDataSourceManagement: boolean; } export const SelectDataSourcePanel = ({ - errors, onChange, assignedDataSources, savedObjects, - isDashboardAdmin, + showDataSourceManagement, }: SelectDataSourcePanelProps) => { const [modalVisible, setModalVisible] = useState(false); const [selectedItems, setSelectedItems] = useState([]); @@ -79,7 +78,7 @@ export const SelectDataSourcePanel = ({ return ( - {isDashboardAdmin && selectedItems.length > 0 && assignedDataSources.length > 0 && ( + {showDataSourceManagement && selectedItems.length > 0 && assignedDataSources.length > 0 && ( {removeButton} )} - {isDashboardAdmin && ( + {showDataSourceManagement && ( {addOpenSearchConnectionsButton} )} - {isDashboardAdmin && ( + {showDataSourceManagement && ( {addDirectQueryConnectionsButton} )} @@ -161,7 +160,7 @@ export const SelectDataSourcePanel = ({ http={http} mode={toggleIdSelected as AssociationDataSourceModalMode} notifications={notifications} - logos={chrome?.logos} + logos={chrome.logos} /> )}