Creating extension point for kubernetesServiceLocator

Signed-off-by: Andres Mauricio Gomez P <andmagom@outlook.com>
This commit is contained in:
Andres Mauricio Gomez P
2023-11-27 09:51:32 -05:00
parent aa8ee8559b
commit 673e08a1a3
6 changed files with 99 additions and 40 deletions
+26 -4
View File
@@ -14,10 +14,13 @@
* limitations under the License.
*/
import { createExtensionPoint } from '@backstage/backend-plugin-api';
import { KubernetesFetcher } from '@backstage/plugin-kubernetes-backend';
import { AuthenticationStrategy } from '@backstage/plugin-kubernetes-node';
import { KubernetesClustersSupplier } from '@backstage/plugin-kubernetes-node';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-node';
import {
AuthenticationStrategy,
KubernetesClustersSupplier,
KubernetesFetcher,
KubernetesObjectsProvider,
KubernetesServiceLocator,
} from '@backstage/plugin-kubernetes-node';
/**
* The interface for {@link kubernetesObjectsProviderExtensionPoint}.
@@ -94,3 +97,22 @@ export const kubernetesFetcherExtensionPoint =
createExtensionPoint<KubernetesFetcherExtensionPoint>({
id: 'kubernetes.fetcher',
});
/**
* The interface for {@link kubernetesServiceLocatorExtensionPoint}.
*
* @public
*/
export interface KubernetesServiceLocatorExtensionPoint {
addServiceLocator(serviceLocator: KubernetesServiceLocator): void;
}
/**
* An extension point the exposes the ability to configure a kubernetes service locator.
*
* @public
*/
export const kubernetesServiceLocatorExtensionPoint =
createExtensionPoint<KubernetesServiceLocatorExtensionPoint>({
id: 'kubernetes.service-locator',
});
@@ -212,3 +212,21 @@ export interface KubernetesFetcher {
labelSelector?: string,
): Promise<FetchResponseWrapper>;
}
/**
* @public
*/
export interface ServiceLocatorRequestContext {
objectTypesToFetch: Set<ObjectToFetch>;
customResources: CustomResourceMatcher[];
}
/**
* Used to locate which cluster(s) a service is running on
* @public
*/
export interface KubernetesServiceLocator {
getClustersByEntity(
entity: Entity,
requestContext: ServiceLocatorRequestContext,
): Promise<{ clusters: ClusterDetails[] }>;
}