From c251ef8007d021c1ab060fd143b59ab78595966d Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Wed, 8 Mar 2023 10:30:20 +0000 Subject: [PATCH] update readme to indicate changes Signed-off-by: Brian Fletcher --- .../plugins/DemoEventBasedEntityProvider.ts | 12 ------- plugins/events-backend/README.md | 34 ++++++++++++------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts b/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts index 57f9f05570..198349cb06 100644 --- a/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts +++ b/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts @@ -20,7 +20,6 @@ import { } from '@backstage/plugin-catalog-node'; import { EventParams, EventSubscriber } from '@backstage/plugin-events-node'; import { Logger } from 'winston'; -import { PluginEnvironment } from '../types'; export class DemoEventBasedEntityProvider implements EntityProvider, EventSubscriber @@ -50,14 +49,3 @@ export class DemoEventBasedEntityProvider return DemoEventBasedEntityProvider.name; } } - -export default async function createCatalogEventBasedProviders( - env: PluginEnvironment, -): Promise> { - const providers: Array< - (EntityProvider & EventSubscriber) | Array - > = []; - providers.push(); - // add your event-based entity providers here - return providers.flat(); -} diff --git a/plugins/events-backend/README.md b/plugins/events-backend/README.md index cef8ac7330..869ee85ea2 100644 --- a/plugins/events-backend/README.md +++ b/plugins/events-backend/README.md @@ -24,6 +24,20 @@ to the used event broker. yarn add --cwd packages/backend @backstage/plugin-events-backend ``` +You will need to add the following to the backend configuration `#makeCreateEnv`. + +```diff +// packages/backend/src/index.ts ++ const eventBroker = new InMemoryEventBroker(root.child({ type: 'plugin' })); +``` + +Then update plugin environment to include the event broker. + +```diff +// packages/backend/src/types.ts ++ eventBroker: EventBroker; +``` + Add a file [`packages/backend/src/plugins/events.ts`](../../packages/backend/src/plugins/events.ts) to your Backstage project. @@ -38,25 +52,20 @@ Additionally, add the events plugin to your backend. // [...] + const eventsEnv = useHotMemoize(module, () => createEnv('events')); // [...] -+ apiRouter.use('/events', await events(eventsEnv, [])); ++ apiRouter.use('/events', await events(eventsEnv)); // [...] ``` ### With Event-based Entity Providers In case you use event-based `EntityProviders`, -you may need something like the following: +you will need to add the subscription to the catalog plugin creation: ```diff -// packages/backend/src/index.ts -- apiRouter.use('/events', await events(eventsEnv, [])); -+ apiRouter.use('/events', await events(eventsEnv, eventBasedEntityProviders)); +// packages/backend/src/plugins/catalog.ts ++ ``` -as well as a file -[`packages/backend/src/plugins/catalogEventBasedProviders.ts`](../../packages/backend/src/plugins/catalogEventBasedProviders.ts) -which contains event-based entity providers. - In case you don't have this dependency added yet: ```bash @@ -67,18 +76,19 @@ yarn add --cwd packages/backend @backstage/plugin-events-backend ```diff // packages/backend/src/plugins/catalog.ts import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; -+import { EntityProvider } from '@backstage/plugin-catalog-node'; ++import { DemoEventBasedEntityProvider } from './DemoEventBasedEntityProvider'; import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend'; import { Router } from 'express'; import { PluginEnvironment } from '../types'; export default async function createPlugin( env: PluginEnvironment, -+ providers?: Array, ): Promise { const builder = await CatalogBuilder.create(env); builder.addProcessor(new ScaffolderEntitiesProcessor()); -+ builder.addEntityProvider(providers ?? []); ++ const demoProvider = new DemoEventBasedEntityProvider(logger, ['example']); ++ env.eventBroker.subscribe(demoProvider); ++ builder.addEntityProvider(demoProvider); const { processingEngine, router } = await builder.build(); await processingEngine.start(); return router;