From f46bbde9a37cb6caca137317f13685b274afc5e0 Mon Sep 17 00:00:00 2001 From: dror1212 Date: Tue, 4 Aug 2026 11:46:00 +0300 Subject: [PATCH 1/3] Handle hosted clusters without SSH keys Signed-off-by: dror1212 --- frontend/src/resources/hosted-cluster.ts | 2 +- frontend/src/resources/utils/get-cluster.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/resources/hosted-cluster.ts b/frontend/src/resources/hosted-cluster.ts index 0e21306c7f9..89444b0d4af 100644 --- a/frontend/src/resources/hosted-cluster.ts +++ b/frontend/src/resources/hosted-cluster.ts @@ -46,7 +46,7 @@ export interface HostedCluster extends IResource { pullSecret: { name: string } - sshKey: { + sshKey?: { name: string } networking: { diff --git a/frontend/src/resources/utils/get-cluster.ts b/frontend/src/resources/utils/get-cluster.ts index fab4c1f0efd..79292e1f88e 100644 --- a/frontend/src/resources/utils/get-cluster.ts +++ b/frontend/src/resources/utils/get-cluster.ts @@ -611,7 +611,7 @@ export function getCluster({ ? { agent: !!hostedCluster.spec.platform?.agent, nodePools: clusterNodePools, - secretNames: [hostedCluster.spec?.sshKey.name || '', hostedCluster.spec?.pullSecret?.name || ''].filter( + secretNames: [hostedCluster.spec?.sshKey?.name || '', hostedCluster.spec?.pullSecret?.name || ''].filter( (name) => !!name ), hostingNamespace: hostedCluster.metadata?.namespace || '', From 1909db00bebb30e16c98841dd730f49117b55ca9 Mon Sep 17 00:00:00 2001 From: dror1212 Date: Tue, 4 Aug 2026 12:08:55 +0300 Subject: [PATCH 2/3] Add coverage for hosted clusters without SSH keys Signed-off-by: dror1212 --- .../src/resources/utils/get-cluster.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/frontend/src/resources/utils/get-cluster.test.ts b/frontend/src/resources/utils/get-cluster.test.ts index 34c5ff32a9e..c78bda0d029 100644 --- a/frontend/src/resources/utils/get-cluster.test.ts +++ b/frontend/src/resources/utils/get-cluster.test.ts @@ -5,6 +5,7 @@ import { ClusterCurator, ClusterCuratorApiVersion, ClusterCuratorKind } from '.. import { ClusterDeployment, ClusterDeploymentApiVersion, ClusterDeploymentKind } from '../cluster-deployment' import { ClusterStatus, + getCluster, getClusterStatus, getDistributionInfo, getHCUpgradePercent, @@ -1028,6 +1029,22 @@ const mockClusterCuratorPosthookFailed: ClusterCurator = { }, } +describe('getCluster', () => { + it('should handle a hosted cluster without an SSH key', () => { + const { sshKey: _sshKey, ...spec } = mockHostedCluster.spec + const hostedCluster = { ...mockHostedCluster, spec } as HostedClusterK8sResource + + const cluster = getCluster({ + hostedCluster, + managedClusterAddOns: [], + clusterManagementAddOns: {}, + nodePools: [], + }) + + expect(cluster.hypershift?.secretNames).toEqual(['psecret']) + }) +}) + describe('getDistributionInfo', () => { it('should have correct available updates and available channels', () => { const d = getDistributionInfo( From a590862e4bafc991e3ccf8444903cd5750f0852f Mon Sep 17 00:00:00 2001 From: Kevin Cormier Date: Mon, 10 Aug 2026 11:01:40 -0400 Subject: [PATCH 3/3] Tweak code Signed-off-by: Kevin Cormier --- frontend/src/resources/hosted-cluster.ts | 2 +- frontend/src/resources/utils/get-cluster.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/resources/hosted-cluster.ts b/frontend/src/resources/hosted-cluster.ts index 89444b0d4af..bbc36791dbe 100644 --- a/frontend/src/resources/hosted-cluster.ts +++ b/frontend/src/resources/hosted-cluster.ts @@ -43,7 +43,7 @@ export interface HostedCluster extends IResource { release: { image: string } - pullSecret: { + pullSecret?: { name: string } sshKey?: { diff --git a/frontend/src/resources/utils/get-cluster.ts b/frontend/src/resources/utils/get-cluster.ts index 79292e1f88e..97276a6aa2a 100644 --- a/frontend/src/resources/utils/get-cluster.ts +++ b/frontend/src/resources/utils/get-cluster.ts @@ -611,7 +611,7 @@ export function getCluster({ ? { agent: !!hostedCluster.spec.platform?.agent, nodePools: clusterNodePools, - secretNames: [hostedCluster.spec?.sshKey?.name || '', hostedCluster.spec?.pullSecret?.name || ''].filter( + secretNames: [hostedCluster.spec?.sshKey?.name, hostedCluster.spec?.pullSecret?.name].filter( (name) => !!name ), hostingNamespace: hostedCluster.metadata?.namespace || '',