update readme to indicate changes
Signed-off-by: Brian Fletcher <brian@roadie.io>
This commit is contained in:
@@ -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<Array<EntityProvider & EventSubscriber>> {
|
||||
const providers: Array<
|
||||
(EntityProvider & EventSubscriber) | Array<EntityProvider & EventSubscriber>
|
||||
> = [];
|
||||
providers.push();
|
||||
// add your event-based entity providers here
|
||||
return providers.flat();
|
||||
}
|
||||
|
||||
@@ -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<EntityProvider>,
|
||||
): Promise<Router> {
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user