From 6c19c1479972069bd14ed96c921061365abae5b1 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 5 Apr 2024 15:36:11 +0200 Subject: [PATCH] chore: rework the breakage Signed-off-by: blam --- .changeset/chilled-boats-move.md | 5 +++++ plugins/kubernetes-backend/api-report.md | 6 +++--- .../src/service/KubernetesBuilder.ts | 10 +++++----- .../src/service/KubernetesProxy.test.ts | 14 +++++++------- .../src/service/KubernetesProxy.ts | 6 ++++-- 5 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 .changeset/chilled-boats-move.md diff --git a/.changeset/chilled-boats-move.md b/.changeset/chilled-boats-move.md new file mode 100644 index 0000000000..8afc497f64 --- /dev/null +++ b/.changeset/chilled-boats-move.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': minor +--- + +**BREAKING**: `KubernetesProxy` now requires the `DiscoveryService` to be passed to the constuctor diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index 143b667328..d491933e45 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -191,7 +191,7 @@ export class KubernetesBuilder { protected buildProxy( logger: Logger, clusterSupplier: KubernetesClustersSupplier_2, - httpAuth: HttpAuthService, + discovery: DiscoveryService, ): KubernetesProxy; // (undocumented) protected buildRouter( @@ -241,7 +241,7 @@ export class KubernetesBuilder { protected getProxy( logger: Logger, clusterSupplier: KubernetesClustersSupplier_2, - httpAuth: HttpAuthService, + discovery: DiscoveryService, ): KubernetesProxy; // (undocumented) protected getServiceLocator(): KubernetesServiceLocator_2; @@ -348,7 +348,7 @@ export type KubernetesProxyOptions = { logger: Logger; clusterSupplier: KubernetesClustersSupplier; authStrategy: AuthenticationStrategy; - httpAuth: HttpAuthService; + discovery: DiscoveryService; }; // @public @deprecated (undocumented) diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index 63ed66d4d6..3237b50417 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -157,7 +157,7 @@ export class KubernetesBuilder { const authStrategyMap = this.getAuthStrategyMap(); - const proxy = this.getProxy(logger, clusterSupplier, httpAuth); + const proxy = this.getProxy(logger, clusterSupplier, this.env.discovery); const serviceLocator = this.getServiceLocator(); @@ -350,7 +350,7 @@ export class KubernetesBuilder { protected buildProxy( logger: Logger, clusterSupplier: KubernetesClustersSupplier, - httpAuth: HttpAuthService, + discovery: DiscoveryService, ): KubernetesProxy { const authStrategyMap = this.getAuthStrategyMap(); const authStrategy = new DispatchStrategy({ @@ -360,7 +360,7 @@ export class KubernetesBuilder { logger, clusterSupplier, authStrategy, - httpAuth, + discovery, }); return this.proxy; } @@ -535,9 +535,9 @@ export class KubernetesBuilder { protected getProxy( logger: Logger, clusterSupplier: KubernetesClustersSupplier, - httpAuth: HttpAuthService, + discovery: DiscoveryService, ) { - return this.proxy ?? this.buildProxy(logger, clusterSupplier, httpAuth); + return this.proxy ?? this.buildProxy(logger, clusterSupplier, discovery); } protected getAuthStrategyMap() { diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index 81ae2e74bd..a22642b543 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -57,7 +57,7 @@ import { import type { Request } from 'express'; import { BackstageCredentials, - HttpAuthService, + DiscoveryService, } from '@backstage/backend-plugin-api'; const mockCertDir = createMockDirectory({ @@ -84,9 +84,9 @@ describe('KubernetesProxy', () => { authorizeConditional: jest.fn(), }; - const mockHttpAuth: jest.Mocked = { - credentials: jest.fn(), - issueUserCookie: jest.fn(), + const mockDisocveryApi: jest.Mocked = { + getBaseUrl: jest.fn(), + getExternalBaseUrl: jest.fn(), }; setupRequestMockHandlers(worker); @@ -162,7 +162,7 @@ describe('KubernetesProxy', () => { logger, clusterSupplier, authStrategy, - httpAuth: mockHttpAuth, + discovery: mockDisocveryApi, }); permissionApi.authorize.mockResolvedValue([ { result: AuthorizeResult.ALLOW }, @@ -552,7 +552,7 @@ describe('KubernetesProxy', () => { logger: getVoidLogger(), clusterSupplier: clusterSupplier, authStrategy: strategy, - httpAuth: mockHttpAuth, + discovery: mockDisocveryApi, }); worker.use( @@ -674,7 +674,7 @@ describe('KubernetesProxy', () => { logger: getVoidLogger(), clusterSupplier: new LocalKubectlProxyClusterLocator(), authStrategy: new AnonymousStrategy(), - httpAuth: mockHttpAuth, + discovery: mockDisocveryApi, }); worker.use( diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 478f704bc1..7c5df280e9 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -42,9 +42,11 @@ import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; import type { Request } from 'express'; import { IncomingHttpHeaders } from 'http'; import { + DiscoveryService, HttpAuthService, PermissionsService, } from '@backstage/backend-plugin-api'; +import { createLegacyAuthAdapters } from '@backstage/backend-common'; export const APPLICATION_JSON: string = 'application/json'; @@ -81,7 +83,7 @@ export type KubernetesProxyOptions = { logger: Logger; clusterSupplier: KubernetesClustersSupplier; authStrategy: AuthenticationStrategy; - httpAuth: HttpAuthService; + discovery: DiscoveryService; }; /** @@ -100,7 +102,7 @@ export class KubernetesProxy { this.logger = options.logger; this.clusterSupplier = options.clusterSupplier; this.authStrategy = options.authStrategy; - this.httpAuth = options.httpAuth; + this.httpAuth = createLegacyAuthAdapters({ discovery: options.discovery }); } public createRequestHandler(