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}
/>
)}