Moving KubernetesObjectsProvider interface to kubernetes-node to avoid a cyclic dependency

Signed-off-by: Andres Mauricio Gomez P <andmagom@outlook.com>
This commit is contained in:
Andres Mauricio Gomez P
2023-09-25 12:07:19 -05:00
committed by blam
parent 99c1ef9c26
commit 6b044e8840
14 changed files with 138 additions and 78 deletions
+6 -24
View File
@@ -6,16 +6,18 @@
import { CatalogApi } from '@backstage/catalog-client';
import { Config } from '@backstage/config';
import type { CustomResourceMatcher } from '@backstage/plugin-kubernetes-common';
import { CustomResourcesByEntity } from '@backstage/plugin-kubernetes-node';
import { Duration } from 'luxon';
import { Entity } from '@backstage/catalog-model';
import express from 'express';
import type { FetchResponse } from '@backstage/plugin-kubernetes-common';
import type { JsonObject } from '@backstage/types';
import type { KubernetesFetchError } from '@backstage/plugin-kubernetes-common';
import { KubernetesObjectsByEntity } from '@backstage/plugin-kubernetes-node';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-node';
import { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common';
import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import { Logger } from 'winston';
import type { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { RequestHandler } from 'http-proxy-middleware';
@@ -101,11 +103,7 @@ export interface CustomResource extends ObjectToFetch {
objectType: 'customresources';
}
// @public (undocumented)
export interface CustomResourcesByEntity extends KubernetesObjectsByEntity {
// (undocumented)
customResources: CustomResourceMatcher[];
}
export { CustomResourcesByEntity };
// @public (undocumented)
export const DEFAULT_OBJECTS: ObjectToFetch[];
@@ -316,25 +314,9 @@ export interface KubernetesFetcher {
): Promise<FetchResponseWrapper>;
}
// @public (undocumented)
export interface KubernetesObjectsByEntity {
// (undocumented)
auth: KubernetesRequestAuth;
// (undocumented)
entity: Entity;
}
export { KubernetesObjectsByEntity };
// @public (undocumented)
export interface KubernetesObjectsProvider {
// (undocumented)
getCustomResourcesByEntity(
customResourcesByEntity: CustomResourcesByEntity,
): Promise<ObjectsByEntityResponse>;
// (undocumented)
getKubernetesObjectsByEntity(
kubernetesObjectsByEntity: KubernetesObjectsByEntity,
): Promise<ObjectsByEntityResponse>;
}
export { KubernetesObjectsProvider };
// @public (undocumented)
export interface KubernetesObjectsProviderOptions {
+2 -4
View File
@@ -21,13 +21,11 @@ import {
} from '@backstage/backend-plugin-api';
import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
import {
KubernetesBuilder,
KubernetesObjectsProvider,
} from '@backstage/plugin-kubernetes-backend';
import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';
import {
KubernetesObjectsProviderExtensionPoint,
kubernetesObjectsProviderExtensionPoint,
KubernetesObjectsProvider,
} from '@backstage/plugin-kubernetes-node';
class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint {
@@ -21,7 +21,7 @@ import {
import { CatalogApi } from '@backstage/catalog-client';
import { InputError, AuthenticationError } from '@backstage/errors';
import express, { Request } from 'express';
import { KubernetesObjectsProvider } from '../types/types';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-node';
import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node';
export const addResourceRoutesToRouter = (
@@ -47,13 +47,13 @@ import {
CustomResource,
KubernetesClustersSupplier,
KubernetesFetcher,
KubernetesObjectsProvider,
KubernetesObjectsProviderOptions,
KubernetesObjectTypes,
KubernetesServiceLocator,
ObjectsByEntityRequest,
ServiceLocatorMethod,
} from '../types/types';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-node';
import {
DEFAULT_OBJECTS,
KubernetesFanOutHandler,
@@ -25,8 +25,6 @@ import {
FetchResponseWrapper,
ObjectToFetch,
CustomResource,
CustomResourcesByEntity,
KubernetesObjectsByEntity,
} from '../types/types';
import { AuthenticationStrategy, KubernetesCredential } from '../auth/types';
import {
@@ -46,6 +44,10 @@ import {
CurrentResourceUsage,
PodStatus,
} from '@kubernetes/client-node';
import {
CustomResourcesByEntity,
KubernetesObjectsByEntity,
} from '@backstage/plugin-kubernetes-node';
/**
*
@@ -15,3 +15,9 @@
*/
export * from './types';
export type {
CustomResourcesByEntity,
KubernetesObjectsByEntity,
KubernetesObjectsProvider,
} from '@backstage/plugin-kubernetes-node';
@@ -21,9 +21,7 @@ import type {
CustomResourceMatcher,
FetchResponse,
KubernetesFetchError,
KubernetesRequestAuth,
KubernetesRequestBody,
ObjectsByEntityResponse,
} from '@backstage/plugin-kubernetes-common';
import { Config } from '@backstage/config';
import { KubernetesCredential } from '../auth/types';
@@ -229,33 +227,3 @@ export interface KubernetesObjectsProviderOptions {
* @public
*/
export type ObjectsByEntityRequest = KubernetesRequestBody;
/**
*
* @public
*/
export interface KubernetesObjectsByEntity {
entity: Entity;
auth: KubernetesRequestAuth;
}
/**
*
* @public
*/
export interface CustomResourcesByEntity extends KubernetesObjectsByEntity {
customResources: CustomResourceMatcher[];
}
/**
*
* @public
*/
export interface KubernetesObjectsProvider {
getKubernetesObjectsByEntity(
kubernetesObjectsByEntity: KubernetesObjectsByEntity,
): Promise<ObjectsByEntityResponse>;
getCustomResourcesByEntity(
customResourcesByEntity: CustomResourcesByEntity,
): Promise<ObjectsByEntityResponse>;
}
+32 -2
View File
@@ -3,13 +3,43 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { CustomResourceMatcher } from '@backstage/plugin-kubernetes-common';
import { Entity } from '@backstage/catalog-model';
import { ExtensionPoint } from '@backstage/backend-plugin-api';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-backend';
import { KubernetesObjectsProvider as KubernetesObjectsProvider_2 } from '@backstage/plugin-kubernetes-node';
import { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common';
import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
// @public (undocumented)
export interface CustomResourcesByEntity extends KubernetesObjectsByEntity {
// (undocumented)
customResources: CustomResourceMatcher[];
}
// @public (undocumented)
export interface KubernetesObjectsByEntity {
// (undocumented)
auth: KubernetesRequestAuth;
// (undocumented)
entity: Entity;
}
// @public (undocumented)
export interface KubernetesObjectsProvider {
// (undocumented)
getCustomResourcesByEntity(
customResourcesByEntity: CustomResourcesByEntity,
): Promise<ObjectsByEntityResponse>;
// (undocumented)
getKubernetesObjectsByEntity(
kubernetesObjectsByEntity: KubernetesObjectsByEntity,
): Promise<ObjectsByEntityResponse>;
}
// @public
export interface KubernetesObjectsProviderExtensionPoint {
// (undocumented)
addObjectsProvider(provider: KubernetesObjectsProvider): void;
addObjectsProvider(provider: KubernetesObjectsProvider_2): void;
}
// @public
+2 -1
View File
@@ -29,6 +29,7 @@
],
"dependencies": {
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/plugin-kubernetes-backend": "workspace:^"
"@backstage/catalog-model": "workspace:^",
"@backstage/plugin-kubernetes-common": "workspace:^"
}
}
+1 -1
View File
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { createExtensionPoint } from '@backstage/backend-plugin-api';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-backend';
import { KubernetesObjectsProvider } from '@backstage/plugin-kubernetes-node';
/**
* The interface for {@link kubernetesObjectsProviderExtensionPoint}.
+2
View File
@@ -33,3 +33,5 @@ export {
kubernetesObjectsProviderExtensionPoint,
type KubernetesObjectsProviderExtensionPoint,
} from './extensions';
export * from './types';
@@ -0,0 +1,17 @@
/*
* Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './types';
@@ -0,0 +1,53 @@
/*
* Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Entity } from '@backstage/catalog-model';
import {
CustomResourceMatcher,
KubernetesRequestAuth,
ObjectsByEntityResponse,
} from '@backstage/plugin-kubernetes-common';
/**
*
* @public
*/
export interface KubernetesObjectsProvider {
getKubernetesObjectsByEntity(
kubernetesObjectsByEntity: KubernetesObjectsByEntity,
): Promise<ObjectsByEntityResponse>;
getCustomResourcesByEntity(
customResourcesByEntity: CustomResourcesByEntity,
): Promise<ObjectsByEntityResponse>;
}
/**
*
* @public
*/
export interface KubernetesObjectsByEntity {
entity: Entity;
auth: KubernetesRequestAuth;
}
/**
*
* @public
*/
export interface CustomResourcesByEntity extends KubernetesObjectsByEntity {
customResources: CustomResourceMatcher[];
}
+11 -10
View File
@@ -7665,6 +7665,17 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-kubernetes-node@workspace:^, @backstage/plugin-kubernetes-node@workspace:plugins/kubernetes-node":
version: 0.0.0-use.local
resolution: "@backstage/plugin-kubernetes-node@workspace:plugins/kubernetes-node"
dependencies:
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/catalog-model": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/plugin-kubernetes-common": "workspace:^"
languageName: unknown
linkType: soft
"@backstage/plugin-kubernetes-react@workspace:^, @backstage/plugin-kubernetes-react@workspace:plugins/kubernetes-react":
version: 0.0.0-use.local
resolution: "@backstage/plugin-kubernetes-react@workspace:plugins/kubernetes-react"
@@ -7704,16 +7715,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-kubernetes-node@workspace:^, @backstage/plugin-kubernetes-node@workspace:plugins/kubernetes-node":
version: 0.0.0-use.local
resolution: "@backstage/plugin-kubernetes-node@workspace:plugins/kubernetes-node"
dependencies:
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/plugin-kubernetes-backend": "workspace:^"
languageName: unknown
linkType: soft
"@backstage/plugin-kubernetes@workspace:^, @backstage/plugin-kubernetes@workspace:plugins/kubernetes":
version: 0.0.0-use.local
resolution: "@backstage/plugin-kubernetes@workspace:plugins/kubernetes"