From 698c5a7cfe4090ffbaa680de4bd816f89b18cc8a Mon Sep 17 00:00:00 2001 From: Pedro Parra Ortega Date: Mon, 4 Apr 2022 15:17:44 +0200 Subject: [PATCH 1/6] allow to select group fields Signed-off-by: Pedro Parra Ortega --- plugins/catalog-backend-module-msgraph/config.d.ts | 8 ++++++++ .../src/microsoftGraph/config.test.ts | 2 ++ .../src/microsoftGraph/config.ts | 10 ++++++++++ .../src/microsoftGraph/read.ts | 4 ++++ .../src/processors/MicrosoftGraphOrgEntityProvider.ts | 2 +- .../src/processors/MicrosoftGraphOrgReaderProcessor.ts | 1 + 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts index db5ab81c4b..cf00713e72 100644 --- a/plugins/catalog-backend-module-msgraph/config.d.ts +++ b/plugins/catalog-backend-module-msgraph/config.d.ts @@ -79,6 +79,14 @@ export interface Config { * E.g. "\"displayName:-team\"" would only match groups which contain '-team' */ groupSearch?: string; + + /** + * The fields to be fetched on query. + * + * E.g. ["id", "displayName", "description"] + */ + groupSelect?: string[]; + /** * The filter to apply to extract users by groups memberships. * diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts index 34796fb29a..e310fa544f 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts @@ -56,6 +56,7 @@ describe('readMicrosoftGraphConfig', () => { userExpand: 'manager', userFilter: 'accountEnabled eq true', groupExpand: 'member', + groupSelect: ['id', 'displayName', 'description'], groupFilter: 'securityEnabled eq false', }, ], @@ -71,6 +72,7 @@ describe('readMicrosoftGraphConfig', () => { userExpand: 'manager', userFilter: 'accountEnabled eq true', groupExpand: 'member', + groupSelect: ['id', 'displayName', 'description'], groupFilter: 'securityEnabled eq false', }, ]; diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts index 441892531a..aa2f2d6ee2 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts @@ -88,6 +88,14 @@ export type MicrosoftGraphProviderConfig = { * E.g. "\"displayName:-team\"" would only match groups which contain '-team' */ groupSearch?: string; + + /** + * The fields to be fetched on query. + * + * E.g. ["id", "displayName", "description"] + */ + groupSelect?: string[]; + /** * By default, the Microsoft Graph API only provides the basic feature set * for querying. Certain features are limited to advanced query capabilities @@ -145,6 +153,7 @@ export function readMicrosoftGraphConfig( ); } + const groupSelect = providerConfig.getOptionalStringArray('groupSelect'); const queryMode = providerConfig.getOptionalString('queryMode'); if ( queryMode !== undefined && @@ -167,6 +176,7 @@ export function readMicrosoftGraphConfig( groupExpand, groupFilter, groupSearch, + groupSelect, queryMode, }); } diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index e9760f7698..de7f3e49e0 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -343,6 +343,7 @@ export async function readMicrosoftGraphGroups( groupExpand?: string; groupFilter?: string; groupSearch?: string; + groupSelect?: string[]; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; }, @@ -373,6 +374,7 @@ export async function readMicrosoftGraphGroups( expand: options?.groupExpand, search: options?.groupSearch, filter: options?.groupFilter, + select: options?.groupSelect, }, options?.queryMode, )) { @@ -535,6 +537,7 @@ export async function readMicrosoftGraphOrg( groupExpand?: string; groupSearch?: string; groupFilter?: string; + groupSelect?: string[]; queryMode?: 'basic' | 'advanced'; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; @@ -571,6 +574,7 @@ export async function readMicrosoftGraphOrg( queryMode: options.queryMode, groupSearch: options.groupSearch, groupFilter: options.groupFilter, + groupSelect: options.groupSelect, groupTransformer: options.groupTransformer, organizationTransformer: options.organizationTransformer, }); diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index dfd0a7782e..d96faf8e03 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -176,7 +176,6 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { const provider = this.options.provider; const { markReadComplete } = trackProgress(logger); const client = MicrosoftGraphClient.create(this.options.provider); - const { users, groups } = await readMicrosoftGraphOrg( client, provider.tenantId, @@ -186,6 +185,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { userGroupMemberSearch: provider.userGroupMemberSearch, groupFilter: provider.groupFilter, groupSearch: provider.groupSearch, + groupSelect: provider.groupSelect, queryMode: provider.queryMode, groupTransformer: this.options.groupTransformer, userTransformer: this.options.userTransformer, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index 5d8619e874..5d0e6b2ec7 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -113,6 +113,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { groupExpand: provider.groupExpand, groupFilter: provider.groupFilter, groupSearch: provider.groupSearch, + groupSelect: provider.groupSelect, queryMode: provider.queryMode, userTransformer: this.userTransformer, groupTransformer: this.groupTransformer, From cc6a3b5d40162087f85d1668ad68ff3a6b9562be Mon Sep 17 00:00:00 2001 From: Pedro Parra Ortega Date: Mon, 4 Apr 2022 15:40:08 +0200 Subject: [PATCH 2/6] added change set Signed-off-by: Pedro Parra Ortega --- .../.changeset/README.md | 8 ++++++++ .../.changeset/config.json | 11 +++++++++++ .../.changeset/forty-pumpkins-marry.md | 5 +++++ 3 files changed, 24 insertions(+) create mode 100644 plugins/catalog-backend-module-msgraph/.changeset/README.md create mode 100644 plugins/catalog-backend-module-msgraph/.changeset/config.json create mode 100644 plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md diff --git a/plugins/catalog-backend-module-msgraph/.changeset/README.md b/plugins/catalog-backend-module-msgraph/.changeset/README.md new file mode 100644 index 0000000000..e5b6d8d6a6 --- /dev/null +++ b/plugins/catalog-backend-module-msgraph/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/plugins/catalog-backend-module-msgraph/.changeset/config.json b/plugins/catalog-backend-module-msgraph/.changeset/config.json new file mode 100644 index 0000000000..82376bbf3b --- /dev/null +++ b/plugins/catalog-backend-module-msgraph/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "master", + "updateInternalDependencies": "patch", + "ignore": [] +} \ No newline at end of file diff --git a/plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md b/plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md new file mode 100644 index 0000000000..782fb5ae91 --- /dev/null +++ b/plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Now plugin configuration accept a new optional parameter `groupSelect` which allow the client to fetch defined fields from the ms-graph api. From b6930c78f25dfb5b152c5a3d43051ad4722644e7 Mon Sep 17 00:00:00 2001 From: Pedro Parra Ortega Date: Mon, 4 Apr 2022 15:45:12 +0200 Subject: [PATCH 3/6] added documentation Signed-off-by: Pedro Parra Ortega --- plugins/catalog-backend-module-msgraph/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md index 1fd5fc3f19..c2fae37d7d 100644 --- a/plugins/catalog-backend-module-msgraph/README.md +++ b/plugins/catalog-backend-module-msgraph/README.md @@ -72,6 +72,9 @@ catalog: # Optional search for groups, see Microsoft Graph API for the syntax # See https://docs.microsoft.com/en-us/graph/search-query-parameter groupSearch: '"description:One" AND ("displayName:Video" OR "displayName:Drive")' + # Optional select for groups, this will allow you work with schemaExtensions in order to add extra information to your groups + # See https://docs.microsoft.com/en-us/graph/api/resources/schemaextension?view=graph-rest-1.0 + groupSelect: ['id', 'displayName', 'description'] ``` `userFilter` and `userGroupMemberFilter` are mutually exclusive, only one can be provided. If both are provided, an error will be thrown. From eeff6a73bf8db7705a795f261f66c6a631d98932 Mon Sep 17 00:00:00 2001 From: Pedro Parra Ortega Date: Mon, 4 Apr 2022 15:45:49 +0200 Subject: [PATCH 4/6] fix documentation Signed-off-by: Pedro Parra Ortega --- plugins/catalog-backend-module-msgraph/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md index c2fae37d7d..e6429152e4 100644 --- a/plugins/catalog-backend-module-msgraph/README.md +++ b/plugins/catalog-backend-module-msgraph/README.md @@ -72,7 +72,7 @@ catalog: # Optional search for groups, see Microsoft Graph API for the syntax # See https://docs.microsoft.com/en-us/graph/search-query-parameter groupSearch: '"description:One" AND ("displayName:Video" OR "displayName:Drive")' - # Optional select for groups, this will allow you work with schemaExtensions in order to add extra information to your groups + # Optional select for groups, this will allow you work with schemaExtensions in order to add extra information to your groups that can be used on you custom groupTransformers # See https://docs.microsoft.com/en-us/graph/api/resources/schemaextension?view=graph-rest-1.0 groupSelect: ['id', 'displayName', 'description'] ``` From 85fc53df95db10f31f9b08aeb3303a09ced5dd51 Mon Sep 17 00:00:00 2001 From: Pedro Parra Ortega Date: Mon, 4 Apr 2022 16:29:00 +0200 Subject: [PATCH 5/6] fixed changeset definition Signed-off-by: Pedro Parra Ortega --- .../.changeset => .changeset}/forty-pumpkins-marry.md | 0 .../.changeset/README.md | 8 -------- .../.changeset/config.json | 11 ----------- 3 files changed, 19 deletions(-) rename {plugins/catalog-backend-module-msgraph/.changeset => .changeset}/forty-pumpkins-marry.md (100%) delete mode 100644 plugins/catalog-backend-module-msgraph/.changeset/README.md delete mode 100644 plugins/catalog-backend-module-msgraph/.changeset/config.json diff --git a/plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md b/.changeset/forty-pumpkins-marry.md similarity index 100% rename from plugins/catalog-backend-module-msgraph/.changeset/forty-pumpkins-marry.md rename to .changeset/forty-pumpkins-marry.md diff --git a/plugins/catalog-backend-module-msgraph/.changeset/README.md b/plugins/catalog-backend-module-msgraph/.changeset/README.md deleted file mode 100644 index e5b6d8d6a6..0000000000 --- a/plugins/catalog-backend-module-msgraph/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/plugins/catalog-backend-module-msgraph/.changeset/config.json b/plugins/catalog-backend-module-msgraph/.changeset/config.json deleted file mode 100644 index 82376bbf3b..0000000000 --- a/plugins/catalog-backend-module-msgraph/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "access": "restricted", - "baseBranch": "master", - "updateInternalDependencies": "patch", - "ignore": [] -} \ No newline at end of file From 9948aef03dd6d2afc4a7c81ba8fd017e0cb9ded3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 7 Apr 2022 13:45:16 +0200 Subject: [PATCH 6/6] api report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-backend-module-msgraph/api-report.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index 2e741e65fe..2239ec1332 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -182,6 +182,7 @@ export type MicrosoftGraphProviderConfig = { groupExpand?: string; groupFilter?: string; groupSearch?: string; + groupSelect?: string[]; queryMode?: 'basic' | 'advanced'; }; @@ -219,6 +220,7 @@ export function readMicrosoftGraphOrg( groupExpand?: string; groupSearch?: string; groupFilter?: string; + groupSelect?: string[]; queryMode?: 'basic' | 'advanced'; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer;