Skip to content

Commit

Permalink
change dashboardAdmin yml config to openseachDashboard
Browse files Browse the repository at this point in the history
Signed-off-by: yubonluo <yubonluo@amazon.com>
  • Loading branch information
yubonluo committed Apr 3, 2024
1 parent dc77999 commit 71c20d9
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/core/server/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ export function pluginInitializerContextConfigMock<T>(config: T) {
configIndex: '.opensearch_dashboards_config_tests',
autocompleteTerminateAfter: duration(100000),
autocompleteTimeout: duration(1000),
dashboardAdmin: { groups: [], users: [] },
},
opensearch: {
shardTimeout: duration('30s'),
Expand Down
8 changes: 8 additions & 0 deletions src/core/server/opensearch_dashboards_config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ export const config = {
defaultValue: 'https://survey.opensearch.org',
}),
}),
dashboardAdmin: schema.object({
groups: schema.arrayOf(schema.string(), {
defaultValue: [],
}),
users: schema.arrayOf(schema.string(), {
defaultValue: [],
}),
}),
}),
deprecations,
};
1 change: 1 addition & 0 deletions src/core/server/plugins/plugin_context.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ describe('createPluginInitializerContext', () => {
configIndex: '.opensearch_dashboards_config',
autocompleteTerminateAfter: duration(100000),
autocompleteTimeout: duration(1000),
dashboardAdmin: { groups: [], users: [] },
},
opensearch: {
shardTimeout: duration(30, 's'),
Expand Down
1 change: 1 addition & 0 deletions src/core/server/plugins/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ export const SharedGlobalConfigKeys = {
'configIndex',
'autocompleteTerminateAfter',
'autocompleteTimeout',
'dashboardAdmin',
] as const,
opensearch: ['shardTimeout', 'requestTimeout', 'pingTimeout'] as const,
path: ['data'] as const,
Expand Down
4 changes: 4 additions & 0 deletions src/legacy/server/config/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,10 @@ export default () =>
survey: Joi.object({
url: Joi.any().default('/'),
}),
dashboardAdmin: Joi.object({
groups: Joi.array().items(Joi.string()).default([]),
users: Joi.array().items(Joi.string()).default([]),
}),
}).default(),

savedObjects: HANDLED_IN_NEW_PLATFORM,
Expand Down
8 changes: 0 additions & 8 deletions src/plugins/workspace/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@ export const configSchema = schema.object({
permission: schema.object({
enabled: schema.boolean({ defaultValue: true }),
}),
dashboardAdmin: schema.object({
groups: schema.arrayOf(schema.string(), {
defaultValue: [],
}),
users: schema.arrayOf(schema.string(), {
defaultValue: [],
}),
}),
});

export type WorkspacePluginConfigType = TypeOf<typeof configSchema>;
11 changes: 8 additions & 3 deletions src/plugins/workspace/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
Plugin,
Logger,
CoreStart,
SharedGlobalConfig,
} from '../../../core/server';
import {
WORKSPACE_SAVED_OBJECTS_CLIENT_WRAPPER_ID,
Expand Down Expand Up @@ -39,6 +40,7 @@ export class WorkspacePlugin implements Plugin<{}, {}> {
private workspaceConflictControl?: WorkspaceConflictSavedObjectsClientWrapper;
private permissionControl?: SavedObjectsPermissionControlContract;
private readonly config$: Observable<WorkspacePluginConfigType>;
private readonly globalConfig$: Observable<SharedGlobalConfig>;
private workspaceSavedObjectsClientWrapper?: WorkspaceSavedObjectsClientWrapper;

private proxyWorkspaceTrafficToRealHandler(setupDeps: CoreSetup) {
Expand Down Expand Up @@ -108,9 +110,11 @@ export class WorkspacePlugin implements Plugin<{}, {}> {
return toolkit.next();
}

const config: WorkspacePluginConfigType = await this.config$.pipe(first()).toPromise();
const configGroups = config.dashboardAdmin.groups || [];
const configUsers = config.dashboardAdmin.users || [];
const globalConfig: SharedGlobalConfig = await this.globalConfig$.pipe(first()).toPromise();
const configGroups = (globalConfig.opensearchDashboards.dashboardAdmin.groups ||
[]) as string[];
const configUsers = (globalConfig.opensearchDashboards.dashboardAdmin.users ||
[]) as string[];
updateDashboardAdminStateForRequest(request, groups, users, configGroups, configUsers);
return toolkit.next();
});
Expand All @@ -129,6 +133,7 @@ export class WorkspacePlugin implements Plugin<{}, {}> {
constructor(initializerContext: PluginInitializerContext) {
this.logger = initializerContext.logger.get('plugins', 'workspace');
this.config$ = initializerContext.config.create<WorkspacePluginConfigType>();
this.globalConfig$ = initializerContext.config.legacy.globalConfig$;
}

public async setup(core: CoreSetup, { applicationConfig }: AppPluginSetupDependencies) {
Expand Down

0 comments on commit 71c20d9

Please sign in to comment.