diff --git a/.changeset/proud-coins-laugh.md b/.changeset/proud-coins-laugh.md new file mode 100644 index 0000000000..31d82ef100 --- /dev/null +++ b/.changeset/proud-coins-laugh.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +Support Rancher urls with an existing path component diff --git a/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.test.ts b/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.test.ts index 877a9afdfb..cb200387a3 100644 --- a/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.test.ts +++ b/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.test.ts @@ -99,4 +99,19 @@ describe('clusterLinks - rancher formatter', () => { 'https://k8s.foo.com/explorer/autoscaling.horizontalpodautoscaler/bar/foobar', ); }); + it('should support subpaths in dashboardUrl', () => { + const url = rancherFormatter({ + dashboardUrl: new URL('https://k8s.foo.com/dashboard/c/c-28a4b/'), + object: { + metadata: { + name: 'foobar', + namespace: 'bar', + }, + }, + kind: 'Deployment', + }); + expect(url.href).toBe( + 'https://k8s.foo.com/dashboard/c/c-28a4b/explorer/apps.deployment/bar/foobar', + ); + }); }); diff --git a/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.ts b/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.ts index 0796d78c77..a3a274496e 100644 --- a/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.ts +++ b/plugins/kubernetes/src/utils/clusterLinks/formatters/rancher.ts @@ -28,9 +28,9 @@ export function rancherFormatter(options: ClusterLinksFormatterOptions): URL { const namespace = options.object.metadata?.namespace; const validKind = kindMappings[options.kind.toLocaleLowerCase('en-US')]; if (validKind && name && namespace) { - result.pathname = `explorer/${validKind}/${namespace}/${name}`; + result.pathname += `explorer/${validKind}/${namespace}/${name}`; } else if (namespace) { - result.pathname = 'explorer/workload'; + result.pathname += 'explorer/workload'; } return result; }