fix: localKubectlProxy auth provider throwing error (#17139)

* fix: localKubectlProxy auth provider throwing error

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* docs: changeset

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

---------

Signed-off-by: Matthew Clarke <mclarke@spotify.com>
This commit is contained in:
Matthew Clarke
2023-03-29 04:29:10 -04:00
committed by GitHub
parent 1e6ba37371
commit 76e8f08fa2
3 changed files with 58 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes-backend': patch
---
fix localKubectlProxy auth provider fetching
@@ -235,6 +235,55 @@ describe('KubernetesFetcher', () => {
],
});
});
it('localKubectlProxy authProvider fetches resources correctly', async () => {
worker.use(
rest.get(
'http://localhost:9999/k8s/clusters/1234/api/v1/services',
(req, res, ctx) =>
res(
withLabels(req, ctx, {
items: [{ metadata: { name: 'service-name' } }],
}),
),
),
);
const result = await sut.fetchObjectsForService({
serviceId: 'some-service',
clusterDetails: {
name: 'cluster1',
url: 'http://localhost:9999/k8s/clusters/1234',
authProvider: 'localKubectlProxy',
},
objectTypesToFetch: new Set([
{
group: '',
apiVersion: 'v1',
plural: 'services',
objectType: 'services',
},
]),
labelSelector: '',
customResources: [],
});
expect(result).toStrictEqual({
errors: [],
responses: [
{
type: 'services',
resources: [
{
metadata: {
name: 'service-name',
labels: { 'backstage.io/kubernetes-id': 'some-service' },
},
},
],
},
],
});
});
it('should return pods, services', async () => {
worker.use(
rest.get('http://localhost:9999/api/v1/pods', (req, res, ctx) =>
@@ -191,7 +191,10 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
let url: URL;
let requestInit: RequestInit;
if (clusterDetails.serviceAccountToken) {
if (
clusterDetails.serviceAccountToken ||
clusterDetails.authProvider === 'localKubectlProxy'
) {
[url, requestInit] = this.fetchArgsFromClusterDetails(clusterDetails);
} else if (fs.pathExistsSync(Config.SERVICEACCOUNT_TOKEN_PATH)) {
[url, requestInit] = this.fetchArgsInCluster();