From 4f51104f65577a332ee00d34d2a0debaec27be82 Mon Sep 17 00:00:00 2001 From: Nikhil Ashoka Date: Fri, 28 Feb 2025 18:32:20 +0530 Subject: [PATCH] 1060: Updated Upstream Ports - Updated the logic to get the Enabled Upstream Port to determine the IO slots. - Defect: https://jazz07.rchland.ibm.com:13443/jazz/web/projects/CSSD#action=com.ibm.team.workitem.viewWorkItem&id=681010 Signed-off-by: Nikhil Ashoka --- .../HardwareStatus/PcieTopologyStore.js | 63 ++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/src/store/modules/HardwareStatus/PcieTopologyStore.js b/src/store/modules/HardwareStatus/PcieTopologyStore.js index 29ed9d2102..bc51ed31fb 100644 --- a/src/store/modules/HardwareStatus/PcieTopologyStore.js +++ b/src/store/modules/HardwareStatus/PcieTopologyStore.js @@ -499,9 +499,23 @@ const PcieTopologyStore = { cableMembers[index]?.Links?.UpstreamPorts && cableMembers[index]?.Links?.UpstreamPorts?.length > 0 ) { - const grandparentUrl = cableMembers[ - index - ].Links?.UpstreamPorts[0]['@odata.id'] + let enabledUpstreamPort = {}; + if (cableMembers[index]?.Links?.UpstreamPorts?.length === 1) { + enabledUpstreamPort = + cableMembers[index].Links?.UpstreamPorts[0]; + } else { + const upstreamPortsPromises = cableMembers[ + index + ]?.Links?.UpstreamPorts.map(async (usp) => { + await api.get(usp?.['@odata.id']).then(({ data }) => { + if (data?.Status?.State !== 'Absent') { + enabledUpstreamPort = usp; + } + }); + }); + await Promise.all(upstreamPortsPromises); + } + const grandparentUrl = enabledUpstreamPort?.['@odata.id'] .split('/Ports') .shift(); cablesData.detailedInfo.grandparentUri = grandparentUrl; @@ -515,9 +529,7 @@ const PcieTopologyStore = { const singlePort = element?.portsData[m]; if ( singlePort['@odata.id'] === - cableMembers[index]?.Links?.UpstreamPorts[0][ - '@odata.id' - ] + enabledUpstreamPort?.['@odata.id'] ) { cablesData.detailedInfo.upstreamPorts.push( singlePort @@ -573,9 +585,7 @@ const PcieTopologyStore = { } } if (!isAdapterSet) { - const gparentUri = cableMembers[index]?.Links?.UpstreamPorts[0][ - '@odata.id' - ] + const gparentUri = enabledUpstreamPort?.['@odata.id'] .split('/Ports') .shift(); cablesData.detailedInfo.grandparentUri = gparentUri; @@ -587,9 +597,7 @@ const PcieTopologyStore = { for (let p = 0; p < uspPorts.length; p++) { if ( uspPorts[p]['@odata.id'] === - cableMembers[index]?.Links?.UpstreamPorts[0][ - '@odata.id' - ] + enabledUpstreamPort?.['@odata.id'] ) { cablesData.detailedInfo['grandParentInfo'] = {}; cablesData.detailedInfo.grandParentInfo.data = @@ -646,16 +654,29 @@ const PcieTopologyStore = { cableMembers[index]?.Links?.UpstreamPorts && cableMembers[index]?.Links?.UpstreamPorts?.length > 0 ) { - await api - .get( - cableMembers[index]?.Links?.UpstreamPorts[0]['@odata.id'] - ) - .then((coresponse) => { - correspondingUSP = coresponse.data; - }) - .catch((error) => { - console.log('error', error); + if (cableMembers[index]?.Links?.UpstreamPorts?.length === 1) { + await api + .get( + cableMembers[index]?.Links?.UpstreamPorts[0]['@odata.id'] + ) + .then((coresponse) => { + correspondingUSP = coresponse.data; + }) + .catch((error) => { + console.log('error', error); + }); + } else { + const upstreamPortsPromises = cableMembers[ + index + ]?.Links?.UpstreamPorts.map(async (usp) => { + await api.get(usp?.['@odata.id']).then(({ data }) => { + if (data?.Status?.State !== 'Absent') { + correspondingUSP = data; + } + }); }); + await Promise.all(upstreamPortsPromises); + } } const gparentUri = cableMembers[index]?.Links?.DownstreamPorts[0][ '@odata.id'