From 32bbf51a1d9c0f3ac681886078a277dc7b1c61ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 29 Jun 2021 08:25:33 +0200 Subject: [PATCH] fix api-report, move logger to options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/fair-dolphins-relate.md | 6 ++++-- .../api-report.md | 3 ++- .../package.json | 2 +- .../src/microsoftGraph/read.test.ts | 3 ++- .../src/microsoftGraph/read.ts | 20 +++++++++++-------- .../MicrosoftGraphOrgReaderProcessor.ts | 2 +- 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/.changeset/fair-dolphins-relate.md b/.changeset/fair-dolphins-relate.md index dcc14cd17f..85bc517a8d 100644 --- a/.changeset/fair-dolphins-relate.md +++ b/.changeset/fair-dolphins-relate.md @@ -1,5 +1,7 @@ --- -'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend-module-msgraph': minor --- -Handle error gracefully if failure occurs while loading photos using Microsoft Graph API +Handle error gracefully if failure occurs while loading photos using Microsoft Graph API. + +This includes a breaking change: you now have to pass the `options` object to `readMicrosoftGraphUsers` and `readMicrosoftGraphOrg`. diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index 702601b469..f1e7e22c35 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -103,10 +103,11 @@ export type OrganizationTransformer = (organization: MicrosoftGraph.Organization export function readMicrosoftGraphConfig(config: Config): MicrosoftGraphProviderConfig[]; // @public (undocumented) -export function readMicrosoftGraphOrg(client: MicrosoftGraphClient, tenantId: string, options?: { +export function readMicrosoftGraphOrg(client: MicrosoftGraphClient, tenantId: string, options: { userFilter?: string; groupFilter?: string; groupTransformer?: GroupTransformer; + logger: Logger; }): Promise<{ users: UserEntity[]; groups: GroupEntity[]; diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 4d60949b22..417ef90c6e 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -29,7 +29,6 @@ }, "dependencies": { "@azure/msal-node": "^1.1.0", - "@backstage/backend-common": "^0.8.3", "@backstage/catalog-model": "^0.8.4", "@backstage/config": "^0.1.5", "@backstage/plugin-catalog-backend": "^0.10.4", @@ -41,6 +40,7 @@ "qs": "^6.9.4" }, "devDependencies": { + "@backstage/backend-common": "^0.8.3", "@backstage/cli": "^0.7.2", "@backstage/test-utils": "^0.1.14", "@types/lodash": "^4.14.151", diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts index a7f24b41ad..929d01e128 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts @@ -83,8 +83,9 @@ describe('read microsoft graph', () => { 'data:image/jpeg;base64,...', ); - const { users } = await readMicrosoftGraphUsers(getVoidLogger(), client, { + const { users } = await readMicrosoftGraphUsers(client, { userFilter: 'accountEnabled eq true', + logger: getVoidLogger(), }); expect(users).toEqual([ diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index 8af15605e7..a9e2465ad7 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -75,9 +75,12 @@ export async function defaultUserTransformer( } export async function readMicrosoftGraphUsers( - logger: Logger, client: MicrosoftGraphClient, - options?: { userFilter?: string; transformer?: UserTransformer }, + options: { + userFilter?: string; + transformer?: UserTransformer; + logger: Logger; + }, ): Promise<{ users: UserEntity[]; // With all relations empty }> { @@ -88,7 +91,7 @@ export async function readMicrosoftGraphUsers( const promises: Promise[] = []; for await (const user of client.getUsers({ - filter: options?.userFilter, + filter: options.userFilter, })) { // Process all users in parallel, otherwise it can take quite some time promises.push( @@ -102,7 +105,7 @@ export async function readMicrosoftGraphUsers( 120, ); } catch (e) { - logger.warn(`Unable to load photo for ${user.id}`); + options.logger.warn(`Unable to load photo for ${user.id}`); } const entity = await transformer(user, userPhoto); @@ -376,17 +379,18 @@ export function resolveRelations( } export async function readMicrosoftGraphOrg( - logger: Logger, client: MicrosoftGraphClient, tenantId: string, - options?: { + options: { userFilter?: string; groupFilter?: string; groupTransformer?: GroupTransformer; + logger: Logger; }, ): Promise<{ users: UserEntity[]; groups: GroupEntity[] }> { - const { users } = await readMicrosoftGraphUsers(logger, client, { - userFilter: options?.userFilter, + const { users } = await readMicrosoftGraphUsers(client, { + userFilter: options.userFilter, + logger: options.logger, }); const { groups, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index 3e5203d3a5..88240db618 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -84,13 +84,13 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { // We create a client each time as we need one that matches the specific provider const client = MicrosoftGraphClient.create(provider); const { users, groups } = await readMicrosoftGraphOrg( - this.logger, client, provider.tenantId, { userFilter: provider.userFilter, groupFilter: provider.groupFilter, groupTransformer: this.groupTransformer, + logger: this.logger, }, );