diff --git a/.changeset/lucky-turtles-sort.md b/.changeset/lucky-turtles-sort.md new file mode 100644 index 0000000000..56c223da2a --- /dev/null +++ b/.changeset/lucky-turtles-sort.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Allow apps to pass in a KubernetesClustersSupplier diff --git a/plugins/kubernetes-backend/src/service/router.ts b/plugins/kubernetes-backend/src/service/router.ts index 32b6dfb832..4545351dcc 100644 --- a/plugins/kubernetes-backend/src/service/router.ts +++ b/plugins/kubernetes-backend/src/service/router.ts @@ -27,6 +27,7 @@ import { ServiceLocatorMethod, ClusterLocatorMethod, ClusterDetails, + KubernetesClustersSupplier, } from '..'; import { getCombinedClusterDetails } from '../cluster-locator'; import { KubernetesFanOutHandler } from './KubernetesFanOutHandler'; @@ -34,6 +35,7 @@ import { KubernetesFanOutHandler } from './KubernetesFanOutHandler'; export interface RouterOptions { logger: Logger; config: Config; + clusterSupplier?: KubernetesClustersSupplier; } const getServiceLocator = ( @@ -98,10 +100,17 @@ export async function createRouter( 'kubernetes.clusterLocatorMethods', ) as ClusterLocatorMethod[]; - const clusterDetails = await getCombinedClusterDetails( - clusterLocatorMethods, - options.config, - ); + let clusterDetails: ClusterDetails[]; + + if (options.clusterSupplier) { + clusterDetails = await options.clusterSupplier.getClusters(); + // Append supplied clusters to cluster retrieved via getCombinedClusterDetails + } else { + clusterDetails = await getCombinedClusterDetails( + clusterLocatorMethods, + options.config, + ); + } const serviceLocator = getServiceLocator(options.config, clusterDetails);