diff --git a/web/src/model/topology.ts b/web/src/model/topology.ts index 8e9bc9d0d..22b408d98 100644 --- a/web/src/model/topology.ts +++ b/web/src/model/topology.ts @@ -531,13 +531,18 @@ export const generateDataModel = ( // addPossibleGroups adds peer to one or more groups when relevant, and returns the smallest one const addPossibleGroups = (peer: TopologyMetricPeer): NodeModel | undefined => { // groups are all possible scopes except last one - const parentScopes = ContextSingleton.getScopes().slice(0, -1).reverse(); + const parentScopes = ContextSingleton.getScopes().slice(0, -1); // build parent tree from biggest to smallest group let parent: NodeModel | undefined = undefined; parentScopes.forEach(sc => { if (options.groupTypes.includes(`${sc.id}s`) && !_.isEmpty(peer[sc.id])) { - parent = addGroup({ [sc.id]: peer[sc.id] }, sc.id, parent, true); + parent = addGroup( + { [sc.id]: peer[sc.id], namespace: ['namespace', 'owner'].includes(sc.id) ? peer.namespace : undefined }, + sc.id, + parent, + true + ); } }); diff --git a/web/src/utils/metrics.ts b/web/src/utils/metrics.ts index b356e6cd6..f67f0a38d 100644 --- a/web/src/utils/metrics.ts +++ b/web/src/utils/metrics.ts @@ -170,12 +170,18 @@ const parseTopologyMetric = ( const sourceFields: Partial = { addr: raw.metric.SrcAddr, resource: nameAndType(raw.metric.SrcK8S_Name, raw.metric.SrcK8S_Type), - owner: nameAndType(raw.metric.SrcK8S_OwnerName, raw.metric.SrcK8S_OwnerType) + owner: + raw.metric.SrcK8S_Type !== raw.metric.SrcK8S_OwnerType + ? nameAndType(raw.metric.SrcK8S_OwnerName, raw.metric.SrcK8S_OwnerType) + : undefined }; const destFields: Partial = { addr: raw.metric.DstAddr, resource: nameAndType(raw.metric.DstK8S_Name, raw.metric.DstK8S_Type), - owner: nameAndType(raw.metric.DstK8S_OwnerName, raw.metric.DstK8S_OwnerType) + owner: + raw.metric.DstK8S_Type !== raw.metric.DstK8S_OwnerType + ? nameAndType(raw.metric.DstK8S_OwnerName, raw.metric.DstK8S_OwnerType) + : undefined }; getCustomScopes().forEach(sc => { if (!sc.labels.length) {