From dee155e3495be8def98c44d0672ede44a055f52b Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Date: Mon, 1 Mar 2021 08:38:15 -0500 Subject: [PATCH] Fix topology crash due to selfLink deprecation --- .../src/operators/TopologyOperatorBackedPanel.tsx | 4 ++-- .../src/operators/operator-topology-types.ts | 1 + .../src/operators/operators-data-transformer.ts | 13 +++++++------ .../src/operators/operatorsDataModelReconciler.ts | 3 ++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/frontend/packages/topology/src/operators/TopologyOperatorBackedPanel.tsx b/frontend/packages/topology/src/operators/TopologyOperatorBackedPanel.tsx index 8107249d8eb..be4d6fe5280 100644 --- a/frontend/packages/topology/src/operators/TopologyOperatorBackedPanel.tsx +++ b/frontend/packages/topology/src/operators/TopologyOperatorBackedPanel.tsx @@ -50,9 +50,9 @@ const ConnectedTopologyOperatorBackedPanel: React.FC = ({ item, onClickTab, selectedDetailsTab }) => { const { t } = useTranslation(); - const { name, resource } = item; + const { name, resource, data } = item; const { namespace } = resource.metadata; - const csvName = resource.metadata.selfLink.split('/').pop(); + const { csvName } = data; const reference = referenceFor(resource); const actionExtensions = useExtensions( isClusterServiceVersionAction, diff --git a/frontend/packages/topology/src/operators/operator-topology-types.ts b/frontend/packages/topology/src/operators/operator-topology-types.ts index 26b60c29899..238ef11e2b9 100644 --- a/frontend/packages/topology/src/operators/operator-topology-types.ts +++ b/frontend/packages/topology/src/operators/operator-topology-types.ts @@ -1,4 +1,5 @@ export type OperatorGroupData = { + csvName: string; operatorKind: string; builderImage: string; apiVersion: string; diff --git a/frontend/packages/topology/src/operators/operators-data-transformer.ts b/frontend/packages/topology/src/operators/operators-data-transformer.ts index 5d406d49c1a..b9b7b28bf80 100644 --- a/frontend/packages/topology/src/operators/operators-data-transformer.ts +++ b/frontend/packages/topology/src/operators/operators-data-transformer.ts @@ -85,7 +85,7 @@ export const getServiceBindingEdges = ( export const getOperatorGroupResource = ( resource: K8sResourceKind, resources?: TopologyDataResources, -): K8sResourceKind => { +): { operatorGroupItem: K8sResourceKind; csvName: string } => { const installedOperators = resources?.clusterServiceVersions?.data as ClusterServiceVersionKind[]; const operatorBackedServiceKindMap = getOperatorBackedServiceKindMap(installedOperators); // added this as needs to hide operator backed if belong to source @@ -102,14 +102,14 @@ export const getOperatorGroupResource = ( const operator: K8sResourceKind = (installedOperators.find((op) => op.metadata.uid === ownerUid) as K8sResourceKind) || operatorBackedServiceKind; - + const csvName = operator.metadata.name; const operatorName = ownerReference?.name ?? appGroup ? `${appGroup}:${operator.metadata.name}` : operator.metadata.name; const groupUid = ownerReference?.uid ?? `${operatorName}:${operator.metadata.uid}`; - return _.merge({}, operator, { + const operatorGroupItem = _.merge({}, operator, { apiVersion: ownerReference?.apiVersion ?? '', kind: ownerReference?.kind ?? 'Operator', metadata: { @@ -117,6 +117,7 @@ export const getOperatorGroupResource = ( uid: groupUid, }, }); + return { operatorGroupItem, csvName }; } return null; }; @@ -126,11 +127,11 @@ export const getOperatorGroupResources = (resources: TopologyDataResources) => { WORKLOAD_TYPES.forEach((key) => { if (resources[key]?.data && resources[key].data.length) { resources[key].data.forEach((resource) => { - const group = getOperatorGroupResource(resource, resources); - if (!group) { + const groupResource = getOperatorGroupResource(resource, resources); + if (!groupResource?.operatorGroupItem) { return; } - obsGroups.push(group); + obsGroups.push(groupResource.operatorGroupItem); }); } }); diff --git a/frontend/packages/topology/src/operators/operatorsDataModelReconciler.ts b/frontend/packages/topology/src/operators/operatorsDataModelReconciler.ts index 8db8f427d31..e9684592da3 100644 --- a/frontend/packages/topology/src/operators/operatorsDataModelReconciler.ts +++ b/frontend/packages/topology/src/operators/operatorsDataModelReconciler.ts @@ -93,7 +93,7 @@ export const operatorsDataModelReconciler = ( const operatorNodes = operatorGroupNodes[key]; const baseNode = operatorNodes[0] as OdcNodeModel; - const operatorGroupItem = getOperatorGroupResource(baseNode.resource, resources); + const { operatorGroupItem, csvName } = getOperatorGroupResource(baseNode.resource, resources); if (operatorGroupItem) { const data = { id: operatorGroupItem.metadata.uid, @@ -109,6 +109,7 @@ export const operatorsDataModelReconciler = ( resource: operatorGroupItem, groupResources: operatorNodes, data: { + csvName, operatorKind: operatorGroupItem.kind, builderImage: getImageForCSVIcon(operatorGroupItem?.spec?.icon?.[0]) || getDefaultOperatorIcon(),