@backstage/plugin-kubernetes-backend 0.16.4 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,79 @@
1
1
  # @backstage/plugin-kubernetes-backend
2
2
 
3
- ## 0.16.4
3
+ ## 0.17.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6c19c14: **BREAKING**: `KubernetesProxy` now requires the `DiscoveryService` to be passed to the constuctor
8
+ - 5dd8177: **BREAKING** Winston logger has been replaced with `LoggerService`
4
9
 
5
10
  ### Patch Changes
6
11
 
7
- - ba366f2: Fixed a crash reading `credentials` from `undefined`.
12
+ - f5cec55: Fixing issue where `BackstageCredentials` were not properly forwarded for all calls
13
+ - dd269e9: Fixed a bug where the proxy handler did not properly handle a missing header
14
+ - 9d89aed: Fixed a crash reading `credentials` from `undefined`.
15
+ - e5a2ccc: Updated dependency `@types/http-proxy-middleware` to `^1.0.0`.
8
16
  - Updated dependencies
9
- - @backstage/plugin-kubernetes-node@0.1.10
17
+ - @backstage/plugin-kubernetes-node@0.1.11
18
+ - @backstage/backend-common@0.21.7
19
+ - @backstage/plugin-permission-node@0.7.28
20
+ - @backstage/backend-plugin-api@0.6.17
21
+ - @backstage/plugin-auth-node@0.4.12
22
+ - @backstage/catalog-client@1.6.4
23
+ - @backstage/integration-aws-node@0.1.12
24
+ - @backstage/plugin-catalog-node@1.11.1
25
+ - @backstage/catalog-model@1.4.5
26
+ - @backstage/config@1.2.0
27
+ - @backstage/errors@1.2.4
28
+ - @backstage/types@1.1.1
29
+ - @backstage/plugin-kubernetes-common@0.7.5
30
+ - @backstage/plugin-permission-common@0.7.13
31
+
32
+ ## 0.17.0-next.1
33
+
34
+ ### Minor Changes
35
+
36
+ - 6c19c14: **BREAKING**: `KubernetesProxy` now requires the `DiscoveryService` to be passed to the constuctor
37
+
38
+ ### Patch Changes
39
+
40
+ - f5cec55: Fixing issue where `BackstageCredentials` were not properly forwarded for all calls
41
+ - Updated dependencies
42
+ - @backstage/plugin-kubernetes-node@0.1.11-next.1
43
+ - @backstage/backend-common@0.21.7-next.1
44
+ - @backstage/backend-plugin-api@0.6.17-next.1
45
+ - @backstage/plugin-auth-node@0.4.12-next.1
46
+ - @backstage/catalog-client@1.6.4-next.0
47
+ - @backstage/plugin-permission-node@0.7.28-next.1
48
+ - @backstage/catalog-model@1.4.5
49
+ - @backstage/config@1.2.0
50
+ - @backstage/errors@1.2.4
51
+ - @backstage/integration-aws-node@0.1.12
52
+ - @backstage/types@1.1.1
53
+ - @backstage/plugin-catalog-node@1.11.1-next.1
54
+ - @backstage/plugin-kubernetes-common@0.7.5
55
+ - @backstage/plugin-permission-common@0.7.13
56
+
57
+ ## 0.16.4-next.0
58
+
59
+ ### Patch Changes
60
+
61
+ - 9d89aed: Fixed a crash reading `credentials` from `undefined`.
62
+ - Updated dependencies
63
+ - @backstage/backend-common@0.21.7-next.0
64
+ - @backstage/plugin-kubernetes-node@0.1.11-next.0
65
+ - @backstage/backend-plugin-api@0.6.17-next.0
66
+ - @backstage/catalog-client@1.6.3
67
+ - @backstage/catalog-model@1.4.5
68
+ - @backstage/config@1.2.0
69
+ - @backstage/errors@1.2.4
70
+ - @backstage/integration-aws-node@0.1.12
71
+ - @backstage/types@1.1.1
72
+ - @backstage/plugin-auth-node@0.4.12-next.0
73
+ - @backstage/plugin-catalog-node@1.11.1-next.0
74
+ - @backstage/plugin-kubernetes-common@0.7.5
75
+ - @backstage/plugin-permission-common@0.7.13
76
+ - @backstage/plugin-permission-node@0.7.28-next.0
10
77
 
11
78
  ## 0.16.3
12
79
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-kubernetes-backend",
3
- "version": "0.16.4",
3
+ "version": "0.17.0",
4
4
  "main": "../dist/alpha.cjs.js",
5
5
  "types": "../dist/alpha.d.ts"
6
6
  }
package/dist/alpha.cjs.js CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var backendCommon = require('@backstage/backend-common');
6
5
  var backendPluginApi = require('@backstage/backend-plugin-api');
7
6
  var alpha = require('@backstage/plugin-catalog-node/alpha');
8
7
  var pluginKubernetesBackend = require('@backstage/plugin-kubernetes-backend');
@@ -142,9 +141,8 @@ const kubernetesPlugin = backendPluginApi.createBackendPlugin({
142
141
  auth,
143
142
  httpAuth
144
143
  }) {
145
- const winstonLogger = backendCommon.loggerToWinstonLogger(logger);
146
144
  const builder = pluginKubernetesBackend.KubernetesBuilder.createBuilder({
147
- logger: winstonLogger,
145
+ logger,
148
146
  config,
149
147
  catalogApi,
150
148
  permissions,
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { loggerToWinstonLogger } from '@backstage/backend-common';\nimport {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';\n\nimport { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';\n\nimport {\n kubernetesAuthStrategyExtensionPoint,\n kubernetesClusterSupplierExtensionPoint,\n kubernetesFetcherExtensionPoint,\n kubernetesObjectsProviderExtensionPoint,\n kubernetesServiceLocatorExtensionPoint,\n type AuthenticationStrategy,\n type KubernetesAuthStrategyExtensionPoint,\n type KubernetesClusterSupplierExtensionPoint,\n type KubernetesClustersSupplier,\n type KubernetesFetcher,\n type KubernetesFetcherExtensionPoint,\n type KubernetesObjectsProvider,\n type KubernetesObjectsProviderExtensionPoint,\n type KubernetesServiceLocator,\n type KubernetesServiceLocatorExtensionPoint,\n} from '@backstage/plugin-kubernetes-node';\n\nclass ObjectsProvider implements KubernetesObjectsProviderExtensionPoint {\n private objectsProvider: KubernetesObjectsProvider | undefined;\n\n getObjectsProvider() {\n return this.objectsProvider;\n }\n\n addObjectsProvider(provider: KubernetesObjectsProvider) {\n if (this.objectsProvider) {\n throw new Error(\n 'Multiple Kubernetes objects provider is not supported at this time',\n );\n }\n this.objectsProvider = provider;\n }\n}\n\nclass ClusterSuplier implements KubernetesClusterSupplierExtensionPoint {\n private clusterSupplier: KubernetesClustersSupplier | undefined;\n\n getClusterSupplier() {\n return this.clusterSupplier;\n }\n\n addClusterSupplier(clusterSupplier: KubernetesClustersSupplier) {\n if (this.clusterSupplier) {\n throw new Error(\n 'Multiple Kubernetes Cluster Suppliers is not supported at this time',\n );\n }\n this.clusterSupplier = clusterSupplier;\n }\n}\n\nclass Fetcher implements KubernetesFetcherExtensionPoint {\n private fetcher: KubernetesFetcher | undefined;\n\n getFetcher() {\n return this.fetcher;\n }\n\n addFetcher(fetcher: KubernetesFetcher) {\n if (this.fetcher) {\n throw new Error(\n 'Multiple Kubernetes Fetchers is not supported at this time',\n );\n }\n this.fetcher = fetcher;\n }\n}\n\nclass ServiceLocator implements KubernetesServiceLocatorExtensionPoint {\n private serviceLocator: KubernetesServiceLocator | undefined;\n\n getServiceLocator() {\n return this.serviceLocator;\n }\n\n addServiceLocator(serviceLocator: KubernetesServiceLocator) {\n if (this.serviceLocator) {\n throw new Error(\n 'Multiple Kubernetes Service Locators is not supported at this time',\n );\n }\n this.serviceLocator = serviceLocator;\n }\n}\n\nclass AuthStrategy implements KubernetesAuthStrategyExtensionPoint {\n private authStrategies: Array<{\n key: string;\n strategy: AuthenticationStrategy;\n }>;\n\n constructor() {\n this.authStrategies = new Array<{\n key: string;\n strategy: AuthenticationStrategy;\n }>();\n }\n\n static addAuthStrategiesFromArray(\n authStrategies: Array<{ key: string; strategy: AuthenticationStrategy }>,\n builder: KubernetesBuilder,\n ) {\n authStrategies.forEach(st => builder.addAuthStrategy(st.key, st.strategy));\n }\n\n getAuthenticationStrategies() {\n return this.authStrategies;\n }\n\n addAuthStrategy(key: string, authStrategy: AuthenticationStrategy) {\n this.authStrategies.push({ key, strategy: authStrategy });\n }\n}\n\n/**\n * This is the backend plugin that provides the Kubernetes integration.\n * @alpha\n */\n\nexport const kubernetesPlugin = createBackendPlugin({\n pluginId: 'kubernetes',\n register(env) {\n const extPointObjectsProvider = new ObjectsProvider();\n const extPointClusterSuplier = new ClusterSuplier();\n const extPointAuthStrategy = new AuthStrategy();\n const extPointFetcher = new Fetcher();\n const extPointServiceLocator = new ServiceLocator();\n\n env.registerExtensionPoint(\n kubernetesObjectsProviderExtensionPoint,\n extPointObjectsProvider,\n );\n env.registerExtensionPoint(\n kubernetesClusterSupplierExtensionPoint,\n extPointClusterSuplier,\n );\n env.registerExtensionPoint(\n kubernetesAuthStrategyExtensionPoint,\n extPointAuthStrategy,\n );\n env.registerExtensionPoint(\n kubernetesFetcherExtensionPoint,\n extPointFetcher,\n );\n env.registerExtensionPoint(\n kubernetesServiceLocatorExtensionPoint,\n extPointServiceLocator,\n );\n\n env.registerInit({\n deps: {\n http: coreServices.httpRouter,\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n discovery: coreServices.discovery,\n catalogApi: catalogServiceRef,\n permissions: coreServices.permissions,\n auth: coreServices.auth,\n httpAuth: coreServices.httpAuth,\n },\n async init({\n http,\n logger,\n config,\n discovery,\n catalogApi,\n permissions,\n auth,\n httpAuth,\n }) {\n const winstonLogger = loggerToWinstonLogger(logger);\n // TODO: expose all of the customization & extension points of the builder here\n const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({\n logger: winstonLogger,\n config,\n catalogApi,\n permissions,\n discovery,\n auth,\n httpAuth,\n })\n .setObjectsProvider(extPointObjectsProvider.getObjectsProvider())\n .setClusterSupplier(extPointClusterSuplier.getClusterSupplier())\n .setFetcher(extPointFetcher.getFetcher())\n .setServiceLocator(extPointServiceLocator.getServiceLocator());\n\n AuthStrategy.addAuthStrategiesFromArray(\n extPointAuthStrategy.getAuthenticationStrategies(),\n builder,\n );\n const { router } = await builder.build();\n http.use(router);\n },\n });\n },\n});\n"],"names":["createBackendPlugin","kubernetesObjectsProviderExtensionPoint","kubernetesClusterSupplierExtensionPoint","kubernetesAuthStrategyExtensionPoint","kubernetesFetcherExtensionPoint","kubernetesServiceLocatorExtensionPoint","coreServices","catalogServiceRef","loggerToWinstonLogger","KubernetesBuilder"],"mappings":"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"}
1
+ {"version":3,"file":"alpha.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';\n\nimport { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';\n\nimport {\n type AuthenticationStrategy,\n kubernetesAuthStrategyExtensionPoint,\n type KubernetesAuthStrategyExtensionPoint,\n type KubernetesClustersSupplier,\n kubernetesClusterSupplierExtensionPoint,\n type KubernetesClusterSupplierExtensionPoint,\n type KubernetesFetcher,\n kubernetesFetcherExtensionPoint,\n type KubernetesFetcherExtensionPoint,\n type KubernetesObjectsProvider,\n kubernetesObjectsProviderExtensionPoint,\n type KubernetesObjectsProviderExtensionPoint,\n type KubernetesServiceLocator,\n kubernetesServiceLocatorExtensionPoint,\n type KubernetesServiceLocatorExtensionPoint,\n} from '@backstage/plugin-kubernetes-node';\n\nclass ObjectsProvider implements KubernetesObjectsProviderExtensionPoint {\n private objectsProvider: KubernetesObjectsProvider | undefined;\n\n getObjectsProvider() {\n return this.objectsProvider;\n }\n\n addObjectsProvider(provider: KubernetesObjectsProvider) {\n if (this.objectsProvider) {\n throw new Error(\n 'Multiple Kubernetes objects provider is not supported at this time',\n );\n }\n this.objectsProvider = provider;\n }\n}\n\nclass ClusterSuplier implements KubernetesClusterSupplierExtensionPoint {\n private clusterSupplier: KubernetesClustersSupplier | undefined;\n\n getClusterSupplier() {\n return this.clusterSupplier;\n }\n\n addClusterSupplier(clusterSupplier: KubernetesClustersSupplier) {\n if (this.clusterSupplier) {\n throw new Error(\n 'Multiple Kubernetes Cluster Suppliers is not supported at this time',\n );\n }\n this.clusterSupplier = clusterSupplier;\n }\n}\n\nclass Fetcher implements KubernetesFetcherExtensionPoint {\n private fetcher: KubernetesFetcher | undefined;\n\n getFetcher() {\n return this.fetcher;\n }\n\n addFetcher(fetcher: KubernetesFetcher) {\n if (this.fetcher) {\n throw new Error(\n 'Multiple Kubernetes Fetchers is not supported at this time',\n );\n }\n this.fetcher = fetcher;\n }\n}\n\nclass ServiceLocator implements KubernetesServiceLocatorExtensionPoint {\n private serviceLocator: KubernetesServiceLocator | undefined;\n\n getServiceLocator() {\n return this.serviceLocator;\n }\n\n addServiceLocator(serviceLocator: KubernetesServiceLocator) {\n if (this.serviceLocator) {\n throw new Error(\n 'Multiple Kubernetes Service Locators is not supported at this time',\n );\n }\n this.serviceLocator = serviceLocator;\n }\n}\n\nclass AuthStrategy implements KubernetesAuthStrategyExtensionPoint {\n private authStrategies: Array<{\n key: string;\n strategy: AuthenticationStrategy;\n }>;\n\n constructor() {\n this.authStrategies = new Array<{\n key: string;\n strategy: AuthenticationStrategy;\n }>();\n }\n\n static addAuthStrategiesFromArray(\n authStrategies: Array<{ key: string; strategy: AuthenticationStrategy }>,\n builder: KubernetesBuilder,\n ) {\n authStrategies.forEach(st => builder.addAuthStrategy(st.key, st.strategy));\n }\n\n getAuthenticationStrategies() {\n return this.authStrategies;\n }\n\n addAuthStrategy(key: string, authStrategy: AuthenticationStrategy) {\n this.authStrategies.push({ key, strategy: authStrategy });\n }\n}\n\n/**\n * This is the backend plugin that provides the Kubernetes integration.\n * @alpha\n */\n\nexport const kubernetesPlugin = createBackendPlugin({\n pluginId: 'kubernetes',\n register(env) {\n const extPointObjectsProvider = new ObjectsProvider();\n const extPointClusterSuplier = new ClusterSuplier();\n const extPointAuthStrategy = new AuthStrategy();\n const extPointFetcher = new Fetcher();\n const extPointServiceLocator = new ServiceLocator();\n\n env.registerExtensionPoint(\n kubernetesObjectsProviderExtensionPoint,\n extPointObjectsProvider,\n );\n env.registerExtensionPoint(\n kubernetesClusterSupplierExtensionPoint,\n extPointClusterSuplier,\n );\n env.registerExtensionPoint(\n kubernetesAuthStrategyExtensionPoint,\n extPointAuthStrategy,\n );\n env.registerExtensionPoint(\n kubernetesFetcherExtensionPoint,\n extPointFetcher,\n );\n env.registerExtensionPoint(\n kubernetesServiceLocatorExtensionPoint,\n extPointServiceLocator,\n );\n\n env.registerInit({\n deps: {\n http: coreServices.httpRouter,\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n discovery: coreServices.discovery,\n catalogApi: catalogServiceRef,\n permissions: coreServices.permissions,\n auth: coreServices.auth,\n httpAuth: coreServices.httpAuth,\n },\n async init({\n http,\n logger,\n config,\n discovery,\n catalogApi,\n permissions,\n auth,\n httpAuth,\n }) {\n // TODO: expose all of the customization & extension points of the builder here\n const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({\n logger,\n config,\n catalogApi,\n permissions,\n discovery,\n auth,\n httpAuth,\n })\n .setObjectsProvider(extPointObjectsProvider.getObjectsProvider())\n .setClusterSupplier(extPointClusterSuplier.getClusterSupplier())\n .setFetcher(extPointFetcher.getFetcher())\n .setServiceLocator(extPointServiceLocator.getServiceLocator());\n\n AuthStrategy.addAuthStrategiesFromArray(\n extPointAuthStrategy.getAuthenticationStrategies(),\n builder,\n );\n const { router } = await builder.build();\n http.use(router);\n },\n });\n },\n});\n"],"names":["createBackendPlugin","kubernetesObjectsProviderExtensionPoint","kubernetesClusterSupplierExtensionPoint","kubernetesAuthStrategyExtensionPoint","kubernetesFetcherExtensionPoint","kubernetesServiceLocatorExtensionPoint","coreServices","catalogServiceRef","KubernetesBuilder"],"mappings":"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"}
package/dist/index.cjs.js CHANGED
@@ -21,7 +21,6 @@ var catalogModel = require('@backstage/catalog-model');
21
21
  var lodash = require('lodash');
22
22
  var fetch = require('node-fetch');
23
23
  var https = require('https');
24
- var pluginAuthNode = require('@backstage/plugin-auth-node');
25
24
  var pluginPermissionCommon = require('@backstage/plugin-permission-common');
26
25
  var httpProxyMiddleware = require('http-proxy-middleware');
27
26
 
@@ -471,7 +470,7 @@ function runPeriodically(fn, delayMs) {
471
470
 
472
471
  var name = "@backstage/plugin-kubernetes-backend";
473
472
  var description = "A Backstage backend plugin that integrates towards Kubernetes";
474
- var version = "0.16.4";
473
+ var version = "0.17.0";
475
474
  var main = "src/index.ts";
476
475
  var types = "src/index.ts";
477
476
  var license = "Apache-2.0";
@@ -539,7 +538,7 @@ var dependencies = {
539
538
  "@jest-mock/express": "^2.0.1",
540
539
  "@kubernetes/client-node": "0.20.0",
541
540
  "@types/express": "^4.17.6",
542
- "@types/http-proxy-middleware": "^0.19.3",
541
+ "@types/http-proxy-middleware": "^1.0.0",
543
542
  "@types/luxon": "^3.0.0",
544
543
  compression: "^1.7.4",
545
544
  cors: "^2.8.5",
@@ -882,10 +881,13 @@ const addResourceRoutesToRouter = (router, catalogApi, objectsProvider, auth, ht
882
881
  };
883
882
  router.post("/resources/workloads/query", async (req, res) => {
884
883
  const entity = await getEntityByReq(req);
885
- const response = await objectsProvider.getKubernetesObjectsByEntity({
886
- entity,
887
- auth: req.body.auth
888
- });
884
+ const response = await objectsProvider.getKubernetesObjectsByEntity(
885
+ {
886
+ entity,
887
+ auth: req.body.auth
888
+ },
889
+ { credentials: await httpAuth.credentials(req) }
890
+ );
889
891
  res.json(response);
890
892
  });
891
893
  router.post("/resources/custom/query", async (req, res) => {
@@ -897,11 +899,14 @@ const addResourceRoutesToRouter = (router, catalogApi, objectsProvider, auth, ht
897
899
  } else if (req.body.customResources.length === 0) {
898
900
  throw new errors.InputError("at least 1 customResource is required");
899
901
  }
900
- const response = await objectsProvider.getCustomResourcesByEntity({
901
- entity,
902
- customResources: req.body.customResources,
903
- auth: req.body.auth
904
- });
902
+ const response = await objectsProvider.getCustomResourcesByEntity(
903
+ {
904
+ entity,
905
+ customResources: req.body.customResources,
906
+ auth: req.body.auth
907
+ },
908
+ { credentials: await httpAuth.credentials(req) }
909
+ );
905
910
  res.json(response);
906
911
  });
907
912
  };
@@ -918,11 +923,11 @@ class CatalogRelationServiceLocator {
918
923
  this.clusterSupplier = clusterSupplier;
919
924
  }
920
925
  // As this implementation always returns all clusters serviceId is ignored here
921
- getClustersByEntity(entity, _requestContext) {
926
+ getClustersByEntity(entity, requestContext) {
922
927
  if (entity.relations && entity.relations.some(
923
928
  (r) => r.type === "dependsOn" && r.targetRef.includes("resource:")
924
929
  )) {
925
- return this.clusterSupplier.getClusters().then((clusters) => {
930
+ return this.clusterSupplier.getClusters({ credentials: requestContext.credentials }).then((clusters) => {
926
931
  return {
927
932
  clusters: clusters.filter(
928
933
  (c) => this.doesEntityDependOnCluster(entity, c)
@@ -954,8 +959,8 @@ class MultiTenantServiceLocator {
954
959
  this.clusterSupplier = clusterSupplier;
955
960
  }
956
961
  // As this implementation always returns all clusters serviceId is ignored here
957
- getClustersByEntity(_entity, _requestContext) {
958
- return this.clusterSupplier.getClusters().then((clusters) => ({ clusters }));
962
+ getClustersByEntity(_entity, requestContext) {
963
+ return this.clusterSupplier.getClusters({ credentials: requestContext.credentials }).then((clusters) => ({ clusters }));
959
964
  }
960
965
  }
961
966
 
@@ -971,8 +976,8 @@ class SingleTenantServiceLocator {
971
976
  this.clusterSupplier = clusterSupplier;
972
977
  }
973
978
  // As this implementation always returns all clusters serviceId is ignored here
974
- getClustersByEntity(_entity, _requestContext) {
975
- return this.clusterSupplier.getClusters().then((clusters) => {
979
+ getClustersByEntity(_entity, requestContext) {
980
+ return this.clusterSupplier.getClusters({ credentials: requestContext.credentials }).then((clusters) => {
976
981
  var _a, _b;
977
982
  if ((_b = (_a = _entity.metadata) == null ? void 0 : _a.annotations) == null ? void 0 : _b["backstage.io/kubernetes-cluster"]) {
978
983
  return {
@@ -1126,30 +1131,32 @@ class KubernetesFanOutHandler {
1126
1131
  this.objectTypesToFetch = new Set(objectTypesToFetch);
1127
1132
  this.authStrategy = authStrategy;
1128
1133
  }
1129
- async getCustomResourcesByEntity({
1130
- entity,
1131
- auth,
1132
- customResources
1133
- }) {
1134
+ async getCustomResourcesByEntity({ entity, auth, customResources }, options) {
1134
1135
  return this.fanOutRequests(
1135
1136
  entity,
1136
1137
  auth,
1138
+ { credentials: options.credentials },
1137
1139
  /* @__PURE__ */ new Set(),
1138
1140
  customResources
1139
1141
  );
1140
1142
  }
1141
- async getKubernetesObjectsByEntity({
1142
- entity,
1143
- auth
1144
- }) {
1145
- return this.fanOutRequests(entity, auth, this.objectTypesToFetch);
1143
+ async getKubernetesObjectsByEntity({ entity, auth }, options) {
1144
+ return this.fanOutRequests(
1145
+ entity,
1146
+ auth,
1147
+ {
1148
+ credentials: options.credentials
1149
+ },
1150
+ this.objectTypesToFetch
1151
+ );
1146
1152
  }
1147
- async fanOutRequests(entity, auth, objectTypesToFetch, customResources) {
1153
+ async fanOutRequests(entity, auth, options, objectTypesToFetch, customResources) {
1148
1154
  var _a, _b, _c, _d, _e, _f, _g;
1149
1155
  const entityName = ((_b = (_a = entity.metadata) == null ? void 0 : _a.annotations) == null ? void 0 : _b["backstage.io/kubernetes-id"]) || ((_c = entity.metadata) == null ? void 0 : _c.name);
1150
1156
  const { clusters } = await this.serviceLocator.getClustersByEntity(entity, {
1151
1157
  objectTypesToFetch,
1152
- customResources: customResources != null ? customResources : []
1158
+ customResources: customResources != null ? customResources : [],
1159
+ credentials: options.credentials
1153
1160
  });
1154
1161
  this.logger.info(
1155
1162
  `entity.metadata.name=${entityName} clusterDetails=[${clusters.map((c) => c.name).join(", ")}]`
@@ -1466,9 +1473,15 @@ class KubernetesProxy {
1466
1473
  __publicField$1(this, "logger");
1467
1474
  __publicField$1(this, "clusterSupplier");
1468
1475
  __publicField$1(this, "authStrategy");
1476
+ __publicField$1(this, "httpAuth");
1469
1477
  this.logger = options.logger;
1470
1478
  this.clusterSupplier = options.clusterSupplier;
1471
1479
  this.authStrategy = options.authStrategy;
1480
+ const legacy = backendCommon.createLegacyAuthAdapters({
1481
+ discovery: options.discovery,
1482
+ httpAuth: options.httpAuth
1483
+ });
1484
+ this.httpAuth = legacy.httpAuth;
1472
1485
  }
1473
1486
  createRequestHandler(options) {
1474
1487
  const { permissionApi } = options;
@@ -1477,9 +1490,7 @@ class KubernetesProxy {
1477
1490
  const authorizeResponse = await permissionApi.authorize(
1478
1491
  [{ permission: pluginKubernetesCommon.kubernetesProxyPermission }],
1479
1492
  {
1480
- token: pluginAuthNode.getBearerTokenFromAuthorizationHeader(
1481
- req.header("authorization")
1482
- )
1493
+ credentials: await this.httpAuth.credentials(req)
1483
1494
  }
1484
1495
  );
1485
1496
  const auth = authorizeResponse[0];
@@ -1504,7 +1515,8 @@ class KubernetesProxy {
1504
1515
  if (!middleware) {
1505
1516
  const logger = this.logger.child({ cluster: originalCluster.name });
1506
1517
  middleware = httpProxyMiddleware.createProxyMiddleware({
1507
- logProvider: () => logger,
1518
+ // TODO: Add 'log' to LoggerService
1519
+ logProvider: () => backendCommon.loggerToWinstonLogger(logger),
1508
1520
  ws: true,
1509
1521
  secure: !originalCluster.skipTLSVerify,
1510
1522
  changeOrigin: true,
@@ -1529,8 +1541,8 @@ class KubernetesProxy {
1529
1541
  cluster.caData
1530
1542
  )) == null ? void 0 : _a.toString()
1531
1543
  };
1532
- const authHeader = req.header(HEADER_KUBERNETES_AUTH);
1533
- if (authHeader) {
1544
+ const authHeader = req.headers[HEADER_KUBERNETES_AUTH.toLocaleLowerCase("en-US")];
1545
+ if (typeof authHeader === "string") {
1534
1546
  req.headers.authorization = authHeader;
1535
1547
  } else {
1536
1548
  const authObj = KubernetesProxy.authHeadersToKubernetesRequestAuth(
@@ -1553,7 +1565,7 @@ class KubernetesProxy {
1553
1565
  `Cluster '${originalCluster.name}' request error`,
1554
1566
  error
1555
1567
  );
1556
- logger.error(wrappedError);
1568
+ logger.error("Kubernetes proxy error", wrappedError);
1557
1569
  const body = {
1558
1570
  error: errors.serializeError(wrappedError, {
1559
1571
  includeStack: process.env.NODE_ENV === "development"
@@ -1570,7 +1582,9 @@ class KubernetesProxy {
1570
1582
  }
1571
1583
  async getClusterForRequest(req) {
1572
1584
  const clusterName = req.headers[HEADER_KUBERNETES_CLUSTER.toLowerCase()];
1573
- const clusters = await this.clusterSupplier.getClusters();
1585
+ const clusters = await this.clusterSupplier.getClusters({
1586
+ credentials: await this.httpAuth.credentials(req)
1587
+ });
1574
1588
  if (!clusters || clusters.length <= 0) {
1575
1589
  throw new errors.NotFoundError(`No Clusters configured`);
1576
1590
  }
@@ -1677,7 +1691,12 @@ class KubernetesBuilder {
1677
1691
  const fetcher = this.getFetcher();
1678
1692
  const clusterSupplier = this.getClusterSupplier();
1679
1693
  const authStrategyMap = this.getAuthStrategyMap();
1680
- const proxy = this.getProxy(logger, clusterSupplier);
1694
+ const proxy = this.getProxy(
1695
+ logger,
1696
+ clusterSupplier,
1697
+ this.env.discovery,
1698
+ httpAuth
1699
+ );
1681
1700
  const serviceLocator = this.getServiceLocator();
1682
1701
  const objectsProvider = this.getObjectsProvider({
1683
1702
  logger,
@@ -1818,7 +1837,7 @@ class KubernetesBuilder {
1818
1837
  buildHttpServiceLocator(_clusterSupplier) {
1819
1838
  throw new Error("not implemented");
1820
1839
  }
1821
- buildProxy(logger, clusterSupplier) {
1840
+ buildProxy(logger, clusterSupplier, discovery, httpAuth) {
1822
1841
  const authStrategyMap = this.getAuthStrategyMap();
1823
1842
  const authStrategy = new DispatchStrategy({
1824
1843
  authStrategyMap
@@ -1826,7 +1845,9 @@ class KubernetesBuilder {
1826
1845
  this.proxy = new KubernetesProxy({
1827
1846
  logger,
1828
1847
  clusterSupplier,
1829
- authStrategy
1848
+ authStrategy,
1849
+ discovery,
1850
+ httpAuth
1830
1851
  });
1831
1852
  return this.proxy;
1832
1853
  }
@@ -1844,10 +1865,13 @@ class KubernetesBuilder {
1844
1865
  const serviceId = req.params.serviceId;
1845
1866
  const requestBody = req.body;
1846
1867
  try {
1847
- const response = await objectsProvider.getKubernetesObjectsByEntity({
1848
- entity: requestBody.entity,
1849
- auth: requestBody.auth || {}
1850
- });
1868
+ const response = await objectsProvider.getKubernetesObjectsByEntity(
1869
+ {
1870
+ entity: requestBody.entity,
1871
+ auth: requestBody.auth || {}
1872
+ },
1873
+ { credentials: await httpAuth.credentials(req) }
1874
+ );
1851
1875
  res.json(response);
1852
1876
  } catch (e) {
1853
1877
  logger.error(
@@ -1957,9 +1981,9 @@ class KubernetesBuilder {
1957
1981
  }
1958
1982
  return objectTypesToFetch;
1959
1983
  }
1960
- getProxy(logger, clusterSupplier) {
1984
+ getProxy(logger, clusterSupplier, discovery, httpAuth) {
1961
1985
  var _a;
1962
- return (_a = this.proxy) != null ? _a : this.buildProxy(logger, clusterSupplier);
1986
+ return (_a = this.proxy) != null ? _a : this.buildProxy(logger, clusterSupplier, discovery, httpAuth);
1963
1987
  }
1964
1988
  getAuthStrategyMap() {
1965
1989
  var _a;