diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index e845abf39b..5a2a22f2b5 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -168,7 +168,7 @@ class CustomRouter implements KubernetesRouterExtensionPoint { } addRouter(router: KubernetesRouterFactory) { - if (this.router) { + if (this.router) { throw new Error( 'Multiple Kubernetes routers is not supported at this time', ); @@ -190,7 +190,7 @@ export const kubernetesPlugin = createBackendPlugin({ const extPointAuthStrategy = new AuthStrategy(); const extPointFetcher = new Fetcher(); const extPointServiceLocator = new ServiceLocator(); - const extPointRouter = new CustomRouter() + const extPointRouter = new CustomRouter(); env.registerExtensionPoint( kubernetesObjectsProviderExtensionPoint, @@ -212,10 +212,7 @@ export const kubernetesPlugin = createBackendPlugin({ kubernetesServiceLocatorExtensionPoint, extPointServiceLocator, ); - env.registerExtensionPoint( - kubernetesRouterExtensionPoint, - extPointRouter, - ); + env.registerExtensionPoint(kubernetesRouterExtensionPoint, extPointRouter); env.registerInit({ deps: { diff --git a/plugins/kubernetes-backend/src/service/KubernetesRouter.ts b/plugins/kubernetes-backend/src/service/KubernetesRouter.ts index 5aa4f9cebe..9ca56c502e 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesRouter.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesRouter.ts @@ -40,7 +40,8 @@ import { AuthMetadata, KubernetesClustersSupplier, KubernetesFetcher, - KubernetesObjectsProvider, KubernetesRouterFactory, + KubernetesObjectsProvider, + KubernetesRouterFactory, KubernetesServiceLocator, } from '@backstage/plugin-kubernetes-node'; import { addResourceRoutesToRouter } from '../routes/resourcesRoutes'; @@ -110,8 +111,26 @@ export class KubernetesRouter { authStrategyMap, ); - return customRouter?.({ - getDefault: () => this.buildDefaultRouter( + return ( + customRouter?.({ + getDefault: () => + this.buildDefaultRouter( + objectsProvider, + clusterSupplier, + catalog, + proxy, + permissions, + httpAuth, + authStrategyMap, + ), + objectsProvider, + clusterSupplier, + catalog, + permissions, + httpAuth, + authStrategyMap, + }) ?? + this.buildDefaultRouter( objectsProvider, clusterSupplier, catalog, @@ -119,21 +138,7 @@ export class KubernetesRouter { permissions, httpAuth, authStrategyMap, - ), - objectsProvider, - clusterSupplier, - catalog, - permissions, - httpAuth, - authStrategyMap, - }) ?? this.buildDefaultRouter( - objectsProvider, - clusterSupplier, - catalog, - proxy, - permissions, - httpAuth, - authStrategyMap, + ) ); } diff --git a/plugins/kubernetes-node/report.api.md b/plugins/kubernetes-node/report.api.md index 2e96057be8..6e8a80a041 100644 --- a/plugins/kubernetes-node/report.api.md +++ b/plugins/kubernetes-node/report.api.md @@ -5,11 +5,14 @@ ```ts import { AuthenticationStrategy as AuthenticationStrategy_2 } from '@backstage/plugin-kubernetes-node'; import { BackstageCredentials } from '@backstage/backend-plugin-api'; +import type { CatalogService } from '@backstage/plugin-catalog-node'; import { CustomResource as CustomResource_2 } from '@backstage/plugin-kubernetes-node'; import { CustomResourceMatcher } from '@backstage/plugin-kubernetes-common'; import { Entity } from '@backstage/catalog-model'; +import type express from 'express'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { FetchResponse } from '@backstage/plugin-kubernetes-common'; +import { HttpAuthService } from '@backstage/backend-plugin-api'; import { JsonObject } from '@backstage/types'; import { KubernetesClustersSupplier as KubernetesClustersSupplier_2 } from '@backstage/plugin-kubernetes-node'; import { KubernetesFetcher as KubernetesFetcher_2 } from '@backstage/plugin-kubernetes-node'; @@ -20,6 +23,7 @@ import { KubernetesServiceLocator as KubernetesServiceLocator_2 } from '@backsta import { LoggerService } from '@backstage/backend-plugin-api'; import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; import { ObjectToFetch as ObjectToFetch_2 } from '@backstage/plugin-kubernetes-node'; +import type { PermissionEvaluator } from '@backstage/plugin-permission-common'; // @public (undocumented) export interface AuthenticationStrategy { @@ -198,6 +202,7 @@ export type KubernetesObjectsProviderFactory = (opts: { getDefault: () => Promise; clusterSupplier: KubernetesClustersSupplier_2; serviceLocator: KubernetesServiceLocator_2; + fetcher: KubernetesFetcher_2; customResources: CustomResource_2[]; objectTypesToFetch?: ObjectToFetch_2[]; authStrategy: AuthenticationStrategy_2; @@ -221,6 +226,28 @@ export type KubernetesObjectTypes = | 'daemonsets' | 'secrets'; +// @public +export interface KubernetesRouterExtensionPoint { + // (undocumented) + addRouter(router: KubernetesRouterFactory): void; +} + +// @public +export const kubernetesRouterExtensionPoint: ExtensionPoint; + +// @public +export type KubernetesRouterFactory = (opts: { + getDefault: () => express.Router; + objectsProvider: KubernetesObjectsProvider_2; + clusterSupplier: KubernetesClustersSupplier_2; + catalog: CatalogService; + permissions: PermissionEvaluator; + httpAuth: HttpAuthService; + authStrategyMap: { + [key: string]: AuthenticationStrategy_2; + }; +}) => express.Router; + // @public export interface KubernetesServiceLocator { // (undocumented)