From ae2408b4ff1d035fd5e105d5e5754d89b561e0d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sun, 15 Dec 2024 22:01:14 +0100 Subject: [PATCH] log BackendFeatureMeta nicer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/funny-lemons-camp.md | 5 +++ .../src/wiring/BackendInitializer.test.ts | 9 +++++- .../src/wiring/BackendInitializer.ts | 32 +++++++++++++++---- packages/backend/src/instanceMetadata.ts | 4 ++- 4 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 .changeset/funny-lemons-camp.md diff --git a/.changeset/funny-lemons-camp.md b/.changeset/funny-lemons-camp.md new file mode 100644 index 0000000000..1cb99ff2ba --- /dev/null +++ b/.changeset/funny-lemons-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Add a `toString` on the default `BackendFeatureMeta` implementations diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index 86b0b51bd9..a73a83027b 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -885,7 +885,7 @@ describe('BackendInitializer', () => { }); it('should properly add plugins + modules to the instance metadata service', async () => { - expect.assertions(1); + expect.assertions(2); const backend = new BackendInitializer(baseFactories); const plugin = createBackendPlugin({ pluginId: 'test', @@ -919,6 +919,13 @@ describe('BackendInitializer', () => { type: 'plugin', }, ]); + expect(instanceMetadata.getInstalledFeatures().map(String)).toEqual( + [ + 'plugin{pluginId=test}', + 'module{moduleId=test,pluginId=test}', + 'plugin{pluginId=instance-metadata}', + ], + ); }, }); }, diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts index b8c37f7471..6148583bda 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts @@ -111,13 +111,33 @@ function createInstanceMetadataServiceFactory( .getRegistrations() .map(feature => { if (feature.type === 'plugin') { - return { type: 'plugin', pluginId: feature.pluginId }; + return Object.defineProperty( + { + type: 'plugin', + pluginId: feature.pluginId, + }, + 'toString', + { + enumerable: false, + configurable: false, + value: () => `plugin{pluginId=${feature.pluginId}}`, + }, + ); } else if (feature.type === 'module') { - return { - type: 'module', - pluginId: feature.pluginId, - moduleId: feature.moduleId, - }; + return Object.defineProperty( + { + type: 'module', + pluginId: feature.pluginId, + moduleId: feature.moduleId, + }, + 'toString', + { + enumerable: false, + configurable: false, + value: () => + `module{moduleId=${feature.moduleId},pluginId=${feature.pluginId}}`, + }, + ); } // Ignore unknown feature types. return undefined; diff --git a/packages/backend/src/instanceMetadata.ts b/packages/backend/src/instanceMetadata.ts index dd499aa40a..5f835f3117 100644 --- a/packages/backend/src/instanceMetadata.ts +++ b/packages/backend/src/instanceMetadata.ts @@ -30,7 +30,9 @@ export default createBackendPlugin({ }, async init({ instanceMetadata, logger }) { logger.info( - `Installed features on this instance: ${instanceMetadata.getInstalledFeatures()}`, + `Installed features on this instance: ${instanceMetadata + .getInstalledFeatures() + .join(', ')}`, ); }, });