Merge pull request #31349 from IlyaSavich/kubernetes-router-extension

Add Kubernetes Router extension point, add fetcher to custom objects provider
This commit is contained in:
Fredrik Adelöw
2025-12-09 11:58:52 +01:00
committed by GitHub
9 changed files with 152 additions and 9 deletions
+1
View File
@@ -43,6 +43,7 @@
"@backstage/plugin-kubernetes-common": "workspace:^",
"@backstage/types": "workspace:^",
"@kubernetes/client-node": "1.4.0",
"@types/express": "^4.17.6",
"node-fetch": "^2.7.0",
"winston": "^3.2.1"
},
+21
View File
@@ -8,6 +8,7 @@ import { BackstageCredentials } from '@backstage/backend-plugin-api';
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 { JsonObject } from '@backstage/types';
@@ -198,6 +199,7 @@ export type KubernetesObjectsProviderFactory = (opts: {
getDefault: () => Promise<KubernetesObjectsProvider_2>;
clusterSupplier: KubernetesClustersSupplier_2;
serviceLocator: KubernetesServiceLocator_2;
fetcher: KubernetesFetcher_2;
customResources: CustomResource_2[];
objectTypesToFetch?: ObjectToFetch_2[];
authStrategy: AuthenticationStrategy_2;
@@ -221,6 +223,25 @@ export type KubernetesObjectTypes =
| 'daemonsets'
| 'secrets';
// @public
export interface KubernetesRouterExtensionPoint {
// (undocumented)
addRouter(router: KubernetesRouterFactory): void;
}
// @public
export const kubernetesRouterExtensionPoint: ExtensionPoint<KubernetesRouterExtensionPoint>;
// @public
export type KubernetesRouterFactory = (opts: {
getDefault: () => express.Router;
objectsProvider: KubernetesObjectsProvider_2;
clusterSupplier: KubernetesClustersSupplier_2;
authStrategyMap: {
[key: string]: AuthenticationStrategy_2;
};
}) => express.Router;
// @public
export interface KubernetesServiceLocator {
// (undocumented)
+33
View File
@@ -23,6 +23,7 @@ import {
KubernetesObjectsProvider,
KubernetesServiceLocator,
} from '@backstage/plugin-kubernetes-node';
import type express from 'express';
/**
* A factory function for creating a KubernetesObjectsProvider.
@@ -33,6 +34,7 @@ export type KubernetesObjectsProviderFactory = (opts: {
getDefault: () => Promise<KubernetesObjectsProvider>;
clusterSupplier: KubernetesClustersSupplier;
serviceLocator: KubernetesServiceLocator;
fetcher: KubernetesFetcher;
customResources: CustomResource[];
objectTypesToFetch?: ObjectToFetch[];
authStrategy: AuthenticationStrategy;
@@ -168,3 +170,34 @@ export const kubernetesServiceLocatorExtensionPoint =
createExtensionPoint<KubernetesServiceLocatorExtensionPoint>({
id: 'kubernetes.service-locator',
});
/**
* A factory function for creating a kubernetes router.
*
* @public
*/
export type KubernetesRouterFactory = (opts: {
getDefault: () => express.Router;
objectsProvider: KubernetesObjectsProvider;
clusterSupplier: KubernetesClustersSupplier;
authStrategyMap: { [key: string]: AuthenticationStrategy };
}) => express.Router;
/**
* The interface for {@link kubernetesRouterExtensionPoint}.
*
* @public
*/
export interface KubernetesRouterExtensionPoint {
addRouter(router: KubernetesRouterFactory): void;
}
/**
* An extension point the exposes the ability to configure a kubernetes service locator.
*
* @public
*/
export const kubernetesRouterExtensionPoint =
createExtensionPoint<KubernetesRouterExtensionPoint>({
id: 'kubernetes.router',
});