Skip to content

Commit

Permalink
[Connectors] Allow pre-configured connectors to opt-in to exposing th…
Browse files Browse the repository at this point in the history
…eir config by setting `exposeConfig` (elastic#207654)

Resolves elastic#206433

Added optional `exposeConfig` field to the `preconfiguredActionSchema`
to allow return the configuration for the pre-configured connectors,
which set this value as `true`.
This change is completely backward compatible, because this field is
optional and all the connectors, which don't have the value will remain
to work the same way as before the change (won't return the config).

Changed get and getAll methods of the ActionsClient to reflect opt-in
config based on the set `exposeConfig` value.
  • Loading branch information
YulNaumenko authored and viduni94 committed Jan 23, 2025
1 parent 9224009 commit cce5af5
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 0 deletions.
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 @@ -787,6 +787,7 @@ describe('getAllUnsecured()', () => {
config: {
foo: 'bar',
},
exposeConfig: true,
},
/**
* System actions will not
Expand Down Expand Up @@ -829,6 +830,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 @@ -102,6 +102,7 @@ export interface InMemoryConnector<
> extends ActionResult {
secrets: Secrets;
config: Config;
exposeConfig?: boolean;
}

export type FindActionResult = ConnectorWithExtraFindData;
Expand Down

0 comments on commit cce5af5

Please sign in to comment.