Merge pull request #28143 from backstage/freben/instance-meta-string

log `BackendFeatureMeta` nicer
This commit is contained in:
Fredrik Adelöw
2024-12-16 14:14:43 +01:00
committed by GitHub
4 changed files with 49 additions and 36 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-app-api': patch
---
Add a `toString` on the default `BackendFeatureMeta` implementations
@@ -14,13 +14,9 @@
* limitations under the License.
*/
import { rootLifecycleServiceFactory } from '@backstage/backend-defaults/rootLifecycle';
import { lifecycleServiceFactory } from '@backstage/backend-defaults/lifecycle';
import { loggerServiceFactory } from '@backstage/backend-defaults/logger';
import {
createServiceRef,
createServiceFactory,
coreServices,
createBackendPlugin,
createBackendModule,
createExtensionPoint,
@@ -29,26 +25,13 @@ import {
} from '@backstage/backend-plugin-api';
import { BackendInitializer } from './BackendInitializer';
import { instanceMetadataServiceRef } from '@backstage/backend-plugin-api/alpha';
class MockLogger {
debug() {}
info() {}
warn() {}
error() {}
child() {
return this;
}
}
import { mockServices } from '@backstage/backend-test-utils';
const baseFactories = [
lifecycleServiceFactory,
rootLifecycleServiceFactory,
createServiceFactory({
service: coreServices.rootLogger,
deps: {},
factory: () => new MockLogger(),
}),
loggerServiceFactory,
mockServices.rootLifecycle.factory(),
mockServices.lifecycle.factory(),
mockServices.rootLogger.factory(),
mockServices.logger.factory(),
];
function mkNoopFactory(ref: ServiceRef<{}, 'plugin'>) {
@@ -707,12 +690,8 @@ describe('BackendInitializer', () => {
const extA = createExtensionPoint<string>({ id: 'a' });
const extB = createExtensionPoint<string>({ id: 'b' });
const init = new BackendInitializer([
rootLifecycleServiceFactory,
createServiceFactory({
service: coreServices.rootLogger,
deps: {},
factory: () => new MockLogger(),
}),
mockServices.rootLifecycle.factory(),
mockServices.rootLogger.factory(),
]);
init.add(testPlugin);
init.add(
@@ -885,7 +864,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 +898,13 @@ describe('BackendInitializer', () => {
type: 'plugin',
},
]);
expect(instanceMetadata.getInstalledFeatures().map(String)).toEqual(
[
'plugin{pluginId=test}',
'module{moduleId=test,pluginId=test}',
'plugin{pluginId=instance-metadata}',
],
);
},
});
},
@@ -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: true,
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: true,
value: () =>
`module{moduleId=${feature.moduleId},pluginId=${feature.pluginId}}`,
},
);
}
// Ignore unknown feature types.
return undefined;
+3 -1
View File
@@ -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(', ')}`,
);
},
});