From 7ee5b30ba7c4be5e0a26c1f39734a36d2dbfd197 Mon Sep 17 00:00:00 2001 From: Jamie Klassen Date: Mon, 22 Jan 2024 10:47:12 -0500 Subject: [PATCH] ConfigClusterLocator reads title Signed-off-by: Jamie Klassen --- .changeset/tidy-peaches-nail.md | 5 ++++ plugins/kubernetes-backend/config.d.ts | 2 ++ .../ConfigClusterLocator.test.ts | 24 ++++++++++++++++++- .../cluster-locator/ConfigClusterLocator.ts | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 .changeset/tidy-peaches-nail.md diff --git a/.changeset/tidy-peaches-nail.md b/.changeset/tidy-peaches-nail.md new file mode 100644 index 0000000000..d044a6bfaa --- /dev/null +++ b/.changeset/tidy-peaches-nail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Clusters in the app-config can now specify a `title` property for human readability. diff --git a/plugins/kubernetes-backend/config.d.ts b/plugins/kubernetes-backend/config.d.ts index de7f79b66c..777a3392db 100644 --- a/plugins/kubernetes-backend/config.d.ts +++ b/plugins/kubernetes-backend/config.d.ts @@ -43,6 +43,8 @@ export interface Config { url: string; /** @visibility frontend */ name: string; + /** @visibility frontend */ + title?: string; /** @visibility secret */ serviceAccountToken?: string; /** @visibility frontend */ diff --git a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts index d36f10bb13..3f014b2869 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts @@ -21,8 +21,8 @@ import { ANNOTATION_KUBERNETES_AWS_ASSUME_ROLE, ANNOTATION_KUBERNETES_AWS_EXTERNAL_ID, } from '@backstage/plugin-kubernetes-common'; +import { ClusterDetails } from '@backstage/plugin-kubernetes-node'; import { ConfigClusterLocator } from './ConfigClusterLocator'; -import { ClusterDetails } from '../types/types'; import { AuthenticationStrategy } from '../auth'; describe('ConfigClusterLocator', () => { @@ -78,6 +78,28 @@ describe('ConfigClusterLocator', () => { ]); }); + it('reads `title` property', async () => { + const sut = ConfigClusterLocator.fromConfig( + new ConfigReader({ + clusters: [ + { + name: 'cluster-name', + title: 'cluster-title', + url: 'url', + authMetadata: { 'kubernetes.io/auth-provider': 'serviceAccount' }, + }, + ], + }), + authStrategy, + ); + + const result = await sut.getClusters(); + + expect(result).toEqual([ + expect.objectContaining({ title: 'cluster-title' }), + ]); + }); + it('two clusters returns two cluster details', async () => { const config: Config = new ConfigReader({ clusters: [ diff --git a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts index 6fd5f3b1cb..6403ec89a7 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts @@ -56,8 +56,10 @@ export class ConfigClusterLocator implements KubernetesClustersSupplier { `'authMetadata.${ANNOTATION_KUBERNETES_AUTH_PROVIDER}' parameter`, ); } + const title = c.getOptionalString('title'); const clusterDetails: ClusterDetails = { name, + ...(title && { title }), url: c.getString('url'), skipTLSVerify: c.getOptionalBoolean('skipTLSVerify') ?? false, skipMetricsLookup: c.getOptionalBoolean('skipMetricsLookup') ?? false,