From 07fed1ddf054b054213deb21f452b30c1d8fe26c Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Thu, 4 Apr 2024 15:28:14 +0100 Subject: [PATCH 1/5] fix: retrieve relations when mapping group entities for notifications Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- plugins/notifications-backend/src/service/router.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/notifications-backend/src/service/router.ts b/plugins/notifications-backend/src/service/router.ts index f9e87335ed..de3f87dd65 100644 --- a/plugins/notifications-backend/src/service/router.ts +++ b/plugins/notifications-backend/src/service/router.ts @@ -102,7 +102,7 @@ export async function createRouter( const entities = await catalogClient.getEntitiesByRefs( { entityRefs: refs, - fields: ['kind', 'metadata.name', 'metadata.namespace'], + fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], }, { token }, ); @@ -123,7 +123,7 @@ export async function createRouter( const childGroups = await catalogClient.getEntitiesByRefs( { entityRefs: entity.spec.children, - fields: ['kind', 'metadata.name', 'metadata.namespace'], + fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], }, { token }, ); From 0fd2f618d0708d9b1cd4be5a940852a0863d9f27 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:39:57 +0000 Subject: [PATCH 2/5] also added `spec.children` Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- plugins/notifications-backend/src/service/router.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/notifications-backend/src/service/router.ts b/plugins/notifications-backend/src/service/router.ts index de3f87dd65..5bc0824897 100644 --- a/plugins/notifications-backend/src/service/router.ts +++ b/plugins/notifications-backend/src/service/router.ts @@ -102,7 +102,7 @@ export async function createRouter( const entities = await catalogClient.getEntitiesByRefs( { entityRefs: refs, - fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], + fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations', 'spec.children'], }, { token }, ); @@ -123,7 +123,7 @@ export async function createRouter( const childGroups = await catalogClient.getEntitiesByRefs( { entityRefs: entity.spec.children, - fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], + fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations', 'spec.children'], }, { token }, ); From 99870667c7ddfc85e617eadeab51f22f91e6d2dc Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:42:26 +0000 Subject: [PATCH 3/5] added changeset Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- .changeset/sour-ways-repeat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sour-ways-repeat.md diff --git a/.changeset/sour-ways-repeat.md b/.changeset/sour-ways-repeat.md new file mode 100644 index 0000000000..ad6b25bbea --- /dev/null +++ b/.changeset/sour-ways-repeat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-notifications-backend': patch +--- + +fix: retrieve relations and children when mapping group entities for notifications From 7703c5308998452c3bb5e476493e84ed2705a55d Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:16:52 +0000 Subject: [PATCH 4/5] refactor: use `parentOf` relations instead of using `spec.children` Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- .../src/service/router.ts | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/notifications-backend/src/service/router.ts b/plugins/notifications-backend/src/service/router.ts index 5bc0824897..cf77fdf9af 100644 --- a/plugins/notifications-backend/src/service/router.ts +++ b/plugins/notifications-backend/src/service/router.ts @@ -28,6 +28,7 @@ import { isGroupEntity, isUserEntity, RELATION_HAS_MEMBER, + RELATION_PARENT_OF, stringifyEntityRef, } from '@backstage/catalog-model'; import { NotificationProcessor } from '@backstage/plugin-notifications-node'; @@ -102,7 +103,7 @@ export async function createRouter( const entities = await catalogClient.getEntitiesByRefs( { entityRefs: refs, - fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations', 'spec.children'], + fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], }, { token }, ); @@ -120,10 +121,23 @@ export async function createRouter( relation.type === RELATION_HAS_MEMBER && relation.targetRef, ) .map(r => r.targetRef); + + const childGroupRefs = entity.relations + .filter( + relation => + relation.type === RELATION_PARENT_OF && relation.targetRef, + ) + .map(r => r.targetRef); + const childGroups = await catalogClient.getEntitiesByRefs( { - entityRefs: entity.spec.children, - fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations', 'spec.children'], + entityRefs: childGroupRefs, + fields: [ + 'kind', + 'metadata.name', + 'metadata.namespace', + 'relations', + ], }, { token }, ); From 6de1398fb71fd8fe3d7bf90ae40920ab7d918487 Mon Sep 17 00:00:00 2001 From: Marley <55280588+marleypowell@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:57:09 +0000 Subject: [PATCH 5/5] added `spec.owner` Signed-off-by: Marley <55280588+marleypowell@users.noreply.github.com> --- plugins/notifications-backend/src/service/router.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/notifications-backend/src/service/router.ts b/plugins/notifications-backend/src/service/router.ts index cf77fdf9af..ab28c74aff 100644 --- a/plugins/notifications-backend/src/service/router.ts +++ b/plugins/notifications-backend/src/service/router.ts @@ -103,7 +103,13 @@ export async function createRouter( const entities = await catalogClient.getEntitiesByRefs( { entityRefs: refs, - fields: ['kind', 'metadata.name', 'metadata.namespace', 'relations'], + fields: [ + 'kind', + 'metadata.name', + 'metadata.namespace', + 'relations', + 'spec.owner', + ], }, { token }, ); @@ -137,6 +143,7 @@ export async function createRouter( 'metadata.name', 'metadata.namespace', 'relations', + 'spec.owner', ], }, { token },