From 7a89555e73d4d0ef5f428249bf2132575a37f786 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Thu, 6 Apr 2023 10:48:38 +0100 Subject: [PATCH] lighthouse to support authenticated catalog api Signed-off-by: Brian Fletcher --- .changeset/late-waves-march.md | 5 +++++ packages/backend/src/plugins/lighthouse.ts | 10 ++++++++-- .../lighthouse-backend/src/service/EntitiesLoader.ts | 9 ++++++++- plugins/lighthouse-backend/src/service/plugin.ts | 5 ++++- 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 .changeset/late-waves-march.md diff --git a/.changeset/late-waves-march.md b/.changeset/late-waves-march.md new file mode 100644 index 0000000000..c6856993df --- /dev/null +++ b/.changeset/late-waves-march.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-lighthouse-backend': minor +--- + +Lighthouse backend plugin can now use an authenticated catalog backend API. diff --git a/packages/backend/src/plugins/lighthouse.ts b/packages/backend/src/plugins/lighthouse.ts index 5e805b7b80..00a67409e3 100644 --- a/packages/backend/src/plugins/lighthouse.ts +++ b/packages/backend/src/plugins/lighthouse.ts @@ -19,11 +19,17 @@ import { PluginEnvironment } from '../types'; import { CatalogClient } from '@backstage/catalog-client'; export default async function createPlugin(env: PluginEnvironment) { - const { logger, scheduler, config } = env; + const { logger, scheduler, config, tokenManager } = env; const catalogClient = new CatalogClient({ discoveryApi: env.discovery, }); - await createScheduler({ logger, scheduler, config, catalogClient }); + await createScheduler({ + logger, + scheduler, + config, + catalogClient, + tokenManager, + }); } diff --git a/plugins/lighthouse-backend/src/service/EntitiesLoader.ts b/plugins/lighthouse-backend/src/service/EntitiesLoader.ts index fe9aab48cc..bbcf0b782f 100644 --- a/plugins/lighthouse-backend/src/service/EntitiesLoader.ts +++ b/plugins/lighthouse-backend/src/service/EntitiesLoader.ts @@ -18,15 +18,22 @@ import { CatalogClient, CATALOG_FILTER_EXISTS, } from '@backstage/catalog-client'; +import { TokenManager } from '@backstage/backend-common'; -export async function loadLighthouseEntities(catalogClient: CatalogClient) { +export async function loadLighthouseEntities( + catalogClient: CatalogClient, + tokenManager: TokenManager, +) { const filter: Record = { kind: 'Component', 'spec.type': 'website', ['lighthouse.com/website-url']: CATALOG_FILTER_EXISTS, }; + const { token } = await tokenManager.getToken(); + return await catalogClient.getEntities({ filter: [filter], + token, }); } diff --git a/plugins/lighthouse-backend/src/service/plugin.ts b/plugins/lighthouse-backend/src/service/plugin.ts index 8e8952a3d6..84bd63f011 100644 --- a/plugins/lighthouse-backend/src/service/plugin.ts +++ b/plugins/lighthouse-backend/src/service/plugin.ts @@ -31,13 +31,14 @@ export interface CreateLighthouseSchedulerOptions { config: Config; scheduler?: PluginTaskScheduler; catalogClient: CatalogClient; + tokenManager: TokenManager; } /** @public **/ export async function createScheduler( options: CreateLighthouseSchedulerOptions, ) { - const { logger, scheduler, catalogClient, config } = options; + const { logger, scheduler, catalogClient, config, tokenManager } = options; const lighthouseApi = LighthouseRestApi.fromConfig(config); const lighthouseAuditConfig = LighthouseAuditScheduleImpl.fromConfig(config); @@ -77,8 +78,10 @@ export async function createScheduler( logger.info('Running Lighthouse Audit Task'); + const { token } = await tokenManager.getToken(); const websitesWithUrl = await catalogClient.getEntities({ filter: [filter], + token, }); let index = 0;