From 91e32ae7e11017a62b1d498acb5d844e367135fe Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 14:20:46 -0600 Subject: [PATCH 1/6] update fetcher to append resource to path instead of replace Signed-off-by: Lucas De Souza --- plugins/kubernetes-backend/src/service/KubernetesFetcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts index 6ef4397e9c..5016459df8 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts @@ -203,7 +203,7 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher { ); } - url.pathname = resourcePath; + url.pathname += resourcePath; if (labelSelector) { url.search = `labelSelector=${labelSelector}`; } From ad2fa51086ec3e322feeeaafbb28f2696523e30c Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 14:37:22 -0600 Subject: [PATCH 2/6] adding a test Signed-off-by: Lucas De Souza --- .../src/service/KubernetesFetcher.test.ts | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts index 065416f8c1..6482ba5f9e 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.test.ts @@ -170,6 +170,71 @@ describe('KubernetesFetcher', () => { }); }); + it('should support clusters with a base path', async () => { + worker.use( + rest.get( + 'http://localhost:9999/k8s/clusters/1234/api/v1/pods', + (req, res, ctx) => + res( + checkToken(req, ctx, 'token'), + withLabels(req, ctx, { + items: [{ metadata: { name: 'pod-name' } }], + }), + ), + ), + rest.get( + 'http://localhost:9999/k8s/clusters/1234/api/v1/services', + (req, res, ctx) => + res( + checkToken(req, ctx, 'token'), + 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', + serviceAccountToken: 'token', + authProvider: 'serviceAccount', + }, + objectTypesToFetch: OBJECTS_TO_FETCH, + labelSelector: '', + customResources: [], + }); + + expect(result).toStrictEqual({ + errors: [], + responses: [ + { + type: 'pods', + resources: [ + { + metadata: { + name: 'pod-name', + labels: { 'backstage.io/kubernetes-id': 'some-service' }, + }, + }, + ], + }, + { + 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) => @@ -688,6 +753,7 @@ describe('KubernetesFetcher', () => { expect(agent.options.rejectUnauthorized).toBe(false); }); }); + it('should use namespace if provided', async () => { worker.use( rest.get( From 083bf1b9faefd99df731b13e234ad8727014682f Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 14:41:21 -0600 Subject: [PATCH 3/6] adding a changeset Signed-off-by: Lucas De Souza --- .changeset/quick-ears-type.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quick-ears-type.md diff --git a/.changeset/quick-ears-type.md b/.changeset/quick-ears-type.md new file mode 100644 index 0000000000..70711313e6 --- /dev/null +++ b/.changeset/quick-ears-type.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +fixes a bug afecting clusers that have a base path in the url. The base path was being replaced with the resource path instead of being appended From f9466ada441e07a23ff4eea188276fd929b2704c Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 14:44:49 -0600 Subject: [PATCH 4/6] fix typos Signed-off-by: Lucas De Souza --- .changeset/quick-ears-type.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/quick-ears-type.md b/.changeset/quick-ears-type.md index 70711313e6..d5fce1d0cd 100644 --- a/.changeset/quick-ears-type.md +++ b/.changeset/quick-ears-type.md @@ -2,4 +2,4 @@ '@backstage/plugin-kubernetes-backend': patch --- -fixes a bug afecting clusers that have a base path in the url. The base path was being replaced with the resource path instead of being appended +fixes a bug affecting clusters that have a base path in the URL. The base path was being replaced with the resource path instead of being appended From 27710cf922b575c63259852365d504a13769c859 Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 15:00:49 -0600 Subject: [PATCH 5/6] fix test cases Signed-off-by: Lucas De Souza --- plugins/kubernetes-backend/src/service/KubernetesFetcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts index 5016459df8..60216c6a14 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts @@ -202,8 +202,8 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher { ), ); } + url.pathname = (url.pathname + resourcePath).replace('//', '/'); - url.pathname += resourcePath; if (labelSelector) { url.search = `labelSelector=${labelSelector}`; } From 420316821948b942afe09a5fad766a3ebf0acb90 Mon Sep 17 00:00:00 2001 From: Lucas De Souza Date: Thu, 12 Jan 2023 15:07:05 -0600 Subject: [PATCH 6/6] different appreach without replace Signed-off-by: Lucas De Souza --- .../kubernetes-backend/src/service/KubernetesFetcher.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts index 60216c6a14..6161c040d7 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts @@ -202,7 +202,12 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher { ), ); } - url.pathname = (url.pathname + resourcePath).replace('//', '/'); + + if (url.pathname === '/') { + url.pathname = resourcePath; + } else { + url.pathname += resourcePath; + } if (labelSelector) { url.search = `labelSelector=${labelSelector}`;