From 77dec31aa0ae35d30ec458e96d8de4663d7241a2 Mon Sep 17 00:00:00 2001 From: Shantanu Shrivastava Date: Fri, 27 Sep 2024 04:57:46 +0000 Subject: [PATCH] Add support of the pensando-dpu platform to generate-dump utility. Signed-off-by: Bhukya Siddhu --- scripts/generate_dump | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/scripts/generate_dump b/scripts/generate_dump index 38774c4a37..0f86c70278 100755 --- a/scripts/generate_dump +++ b/scripts/generate_dump @@ -1676,6 +1676,56 @@ collect_nvidia_bluefield() { fi } +############################################################################### +# Collect Pensando specific information +# Globals: +# MKDIR +# V +# NOOP +# RM +# Arguments: +# None +# Returns: +# None +############################################################################### +collect_pensando() { + trap 'handle_error $? $LINENO' ERR + platform=$(grep 'onie_platform=' /host/machine.conf | cut -d '=' -f 2) + pipeline=`cat /usr/share/sonic/device/${platform}/default_pipeline` + if [ ${pipeline} = "polaris" ]; then + dpu_container_name="polaris" + else + dpu_container_name="dpu" + fi + local dpu_dump_folder="/root/dpu_dump" + $MKDIR $V -p $dpu_dump_folder + if $NOOP; then + echo "docker exec ${dpu_container_name} /nic/tools/collect_techsupport.sh" + else + output=$(docker exec ${dpu_container_name} /nic/tools/collect_techsupport.sh 2>&1) + exit_code=$? + if echo "${output}" | grep -q "Techsupport log file is at"; then + log_file_path=$(echo "${output}" | grep -oP '(?<=Techsupport log file is at ).*') + log_file_name=$(basename "${log_file_path}") + copy_from_docker ${dpu_container_name} ${log_file_path} ${dpu_dump_folder} + save_file ${dpu_dump_folder}/${log_file_name} ${dpu_container_name}_techsupport false + else + echo "${dpu_container_name} container techsupport log file is not generated..." + fi + if { [ ${exit_code} -eq 0 ] && echo "${output}" | grep -qv "Continuing with already running TS threads.."; } || [ ${exit_code} -eq 11 ]; then + if echo "${output}" | grep -q "Techsupport collected at"; then + file_path=$(echo "${output}" | grep -oP '(?<=Techsupport collected at ).*') + file_name=$(basename "${file_path}") + copy_from_docker ${dpu_container_name} ${file_path} ${dpu_dump_folder} + save_file ${dpu_dump_folder}/${file_name} ${dpu_container_name}_techsupport false + fi + else + echo "Failed to collect ${dpu_container_name} container techsupport..." + fi + fi + $RM $V -rf $dpu_dump_folder +} + ############################################################################### # Save log file # Globals: @@ -2110,6 +2160,10 @@ main() { collect_marvell fi + if [ "$asic" = "pensando" ]; then + collect_pensando + fi + # 2nd counter snapshot late. Need 2 snapshots to make sense of counters trend. save_counter_snapshot $asic 2