Merge pull request #31053 from backstage/sennyeya/instance-metadata-update

feat: promote instance metadata
This commit is contained in:
Patrik Oldsberg
2025-11-04 13:11:40 +01:00
committed by GitHub
22 changed files with 403 additions and 91 deletions
+3 -4
View File
@@ -18,7 +18,6 @@ import {
createBackendPlugin,
} from '@backstage/backend-plugin-api';
import { createRouter } from './router';
import { instanceMetadataServiceRef } from '@backstage/backend-plugin-api/alpha';
import { Handler } from 'express';
/**
@@ -33,17 +32,17 @@ export const gatewayPlugin = createBackendPlugin({
deps: {
logger: coreServices.logger,
rootHttpRouter: coreServices.rootHttpRouter,
instanceMeta: instanceMetadataServiceRef,
instanceMeta: coreServices.rootInstanceMetadata,
discovery: coreServices.discovery,
},
async init({ logger, discovery, instanceMeta, rootHttpRouter }) {
rootHttpRouter.use(
'/api/:pluginId',
createRouter({
(await createRouter({
discovery,
instanceMeta,
logger,
}) as Handler,
})) as Handler,
);
},
});
+9 -10
View File
@@ -13,27 +13,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';
import { InstanceMetadataService } from '@backstage/backend-plugin-api/alpha';
import {
DiscoveryService,
RootInstanceMetadataService,
LoggerService,
} from '@backstage/backend-plugin-api';
import { Request, Response, NextFunction } from 'express';
import { createProxyMiddleware } from 'http-proxy-middleware';
import { context } from '@opentelemetry/api';
import { getRPCMetadata } from '@opentelemetry/core';
export function createRouter({
export async function createRouter({
discovery,
instanceMeta,
}: {
discovery: DiscoveryService;
instanceMeta: InstanceMetadataService;
instanceMeta: RootInstanceMetadataService;
logger: LoggerService;
}) {
const localPluginIds = new Set(
instanceMeta
.getInstalledFeatures()
.filter(f => f.type === 'plugin')
.map(f => f.pluginId),
);
const plugins = await instanceMeta.getInstalledPlugins();
const localPluginIds = new Set(plugins.map(f => f.pluginId));
const proxy = createProxyMiddleware({
changeOrigin: true,