Skip to content

[8.x] [Connectors] Allow pre-configured connectors to opt-in to exposing their config by setting `exposeConfig` (#207654) #207902

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/management/connectors/pre-configured-connectors.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ connector:
secrets: <5>
user: elastic
password: changeme
exposeConfig: true <6>
```

<1> The key is the connector identifier, `my-slack1` in this example.
<2> `actionTypeId` is the action type identifier.
<3> `name` is the name of the preconfigured connector.
<4> `config` is the configuration specific to the connector type.
<5> `secrets` is the sensitive configuration, such as username, password, and keys, specific to the connector type.
<6> `exposeConfig` is the optional boolean flag, which identify if connector config will be exposed in the actions API

[NOTE]
==============================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ export async function get({
isSystemAction: foundInMemoryConnector.isSystemAction,
isDeprecated: isConnectorDeprecated(foundInMemoryConnector),
};

if (foundInMemoryConnector.exposeConfig) {
connector.config = foundInMemoryConnector.config;
}
} else {
const result = await getConnectorSo({
unsecuredSavedObjectsClient: context.unsecuredSavedObjectsClient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -815,6 +815,7 @@ describe('getAllUnsecured()', () => {
config: {
foo: 'bar',
},
exposeConfig: true,
},
/**
* System actions will not
Expand Down Expand Up @@ -857,6 +858,7 @@ describe('getAllUnsecured()', () => {
isSystemAction: false,
isDeprecated: false,
referencedByCount: 2,
config: { foo: 'bar' },
},
]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ async function getAllHelper({
isPreconfigured: inMemoryConnector.isPreconfigured,
isDeprecated: isConnectorDeprecated(inMemoryConnector),
isSystemAction: inMemoryConnector.isSystemAction,
...(inMemoryConnector.exposeConfig ? { config: inMemoryConnector.config } : {}),
})),
].sort((a, b) => a.name.localeCompare(b.name));

Expand Down
1 change: 1 addition & 0 deletions x-pack/platform/plugins/shared/actions/server/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const preconfiguredActionSchema = schema.object({
actionTypeId: schema.string({ minLength: 1 }),
config: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }),
secrets: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }),
exposeConfig: schema.maybe(schema.boolean({ defaultValue: false })),
});

const customHostSettingsSchema = schema.object({
Expand Down
1 change: 1 addition & 0 deletions x-pack/platform/plugins/shared/actions/server/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ export interface InMemoryConnector<
> extends ActionResult {
secrets: Secrets;
config: Config;
exposeConfig?: boolean;
}

export type FindActionResult = ConnectorWithExtraFindData;
Expand Down
Loading