Skip to content

Commit 2f6e36e

Browse files
authored
[CLI][techsupport] Add NOOP option for commands that did not have that option (sonic-net#1445)
1 parent 1fa4b94 commit 2f6e36e

File tree

1 file changed

+101
-72
lines changed

1 file changed

+101
-72
lines changed

scripts/generate_dump

+101-72
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,7 @@ save_cmd() {
165165
# This is required if $cmd has quoted strings that should be bunched
166166
# as one argument, e.g. vtysh -c "COMMAND HERE" needs to have
167167
# "COMMAND HERE" bunched together as 1 arg to vtysh -c
168-
if $do_gzip
169-
then
168+
if $do_gzip; then
170169
tarpath="${tarpath}.gz"
171170
filepath="${filepath}.gz"
172171
local cmds="$cmd 2>&1 | gzip -c > '${filepath}'"
@@ -223,6 +222,71 @@ save_cmd_all_ns() {
223222
fi
224223
}
225224

225+
###############################################################################
226+
# Copies a given file from a specified docker to the given target location
227+
# default (host) namespace in single ASIC platform
228+
# Globals:
229+
# None
230+
# Arguments:
231+
# docker: docker name
232+
# filename: the filename to copy
233+
# destination: destination filename
234+
# Returns:
235+
# None
236+
###############################################################################
237+
copy_from_docker() {
238+
local start_t=$(date +%s%3N)
239+
local end_t=0
240+
local docker=$1
241+
local filename=$2
242+
local dstpath=$3
243+
local timeout_cmd="timeout --foreground ${TIMEOUT_MIN}m"
244+
245+
if $NOOP; then
246+
echo "${timeout_cmd} sudo docker exec -i ${docker} touch ${filename}"
247+
echo "${timeout_cmd} sudo docker cp ${docker}:${filename} ${dstpath}"
248+
else
249+
eval "${timeout_cmd} sudo docker exec -i ${docker} touch ${filename}"
250+
if [ $? -ne 0 ]; then
251+
echo "Command: $cmd timedout after ${TIMEOUT_MIN} minutes."
252+
fi
253+
eval "${timeout_cmd} sudo docker cp ${docker}:${filename} ${dstpath}"
254+
if [ $? -ne 0 ]; then
255+
echo "Command: $cmd timedout after ${TIMEOUT_MIN} minutes."
256+
fi
257+
fi
258+
end_t=$(date +%s%3N)
259+
echo "[ copy_from_docker:${docker}:${filename} ] : $(($end_t-$start_t)) msec" \
260+
>> $TECHSUPPORT_TIME_INFO
261+
}
262+
263+
###############################################################################
264+
# Copies a given file from a specified docker to the given target location
265+
# default (host) namespace in single ASIC platform
266+
# Globals:
267+
# NUM_ASICS
268+
# Arguments:
269+
# docker: docker name
270+
# filename: the filename to copy
271+
# destination: destination filename
272+
# Returns:
273+
# None
274+
###############################################################################
275+
copy_from_masic_docker() {
276+
local docker=$1
277+
local filename=$2
278+
local dstpath=$3
279+
280+
if [[ ("$NUM_ASICS" > 1) ]]; then
281+
for (( i=0; i<$NUM_ASICS; i++ ))
282+
do
283+
copy_from_docker "$docker$i" "$filename" "$dstpath.$i"
284+
done
285+
else
286+
copy_from_docker "$docker" "$filename" "$dstpath"
287+
fi
288+
}
289+
226290
###############################################################################
227291
# Returns namespace option to be used with vtysh commmand, based on the ASIC ID.
228292
# Returns empty string if no ASIC ID is provided
@@ -241,6 +305,7 @@ get_vtysh_namespace() {
241305
else
242306
ns=" -n ${asic_id}"
243307
fi
308+
echo "$ns"
244309
}
245310

246311
###############################################################################
@@ -502,17 +567,27 @@ save_redis_info() {
502567
# RM
503568
# BASE
504569
# TARFILE
570+
# NOOP
505571
# Arguments:
506572
# *procfiles: variable-length list of proc file paths to save
507573
# Returns:
508574
# None
509575
###############################################################################
510576
save_proc() {
511577
local procfiles="$@"
512-
$MKDIR $V -p $TARDIR/proc \
513-
&& (for f in $procfiles; do ( [ -e $f ] && $CP $V -r $f $TARDIR/proc ) || echo "$f not found" > $TARDIR/$f; done) \
514-
&& $TAR $V -rhf $TARFILE -C $DUMPDIR --mode=+rw $BASE/proc \
515-
&& $RM $V -rf $TARDIR/proc
578+
$MKDIR $V -p $TARDIR/proc
579+
for f in $procfiles
580+
do
581+
if $NOOP; then
582+
if [ -e $f ]; then
583+
echo "$CP $V -r $f $TARDIR/proc"
584+
fi
585+
else
586+
( [ -e $f ] && $CP $V -r $f $TARDIR/proc ) || echo "$f not found" > $TARDIR/$f
587+
fi
588+
done
589+
$TAR $V -rhf $TARFILE -C $DUMPDIR --mode=+rw $BASE/proc
590+
$RM $V -rf $TARDIR/proc
516591
}
517592

518593
###############################################################################
@@ -553,41 +628,6 @@ save_saidump() {
553628
fi
554629
}
555630

556-
###############################################################################
557-
# Runs a 'show platform' command, append the output to 'filename' and add to the incrementally built tar.
558-
# Globals:
559-
# LOGDIR
560-
# BASE
561-
# MKDIR
562-
# TAR
563-
# TARFILE
564-
# DUMPDIR
565-
# V
566-
# RM
567-
# Arguments:
568-
# type: the type of platform information
569-
# filename: the filename to save the output as in $BASE/dump
570-
# Returns:
571-
# None
572-
###############################################################################
573-
save_platform() {
574-
local start_t=$(date +%s%3N)
575-
local end_t=0
576-
local type="$1"
577-
local filename=$2
578-
local filepath="${LOGDIR}/$filename"
579-
local tarpath="${BASE}/dump/$filename"
580-
[ ! -d $LOGDIR ] && $MKDIR $V -p $LOGDIR
581-
582-
eval "show platform $type" &>> "$filepath"
583-
echo $'\r' >> "$filepath"
584-
585-
($TAR $V -uhf $TARFILE -C $DUMPDIR "$tarpath" \
586-
|| abort "${ERROR_TAR_FAILED}" "tar append operation failed. Aborting to prevent data loss.")
587-
end_t=$(date +%s%3N)
588-
echo "[ save_platform:$type ] : $(($end_t-$start_t)) msec" >> $TECHSUPPORT_TIME_INFO
589-
}
590-
591631
###############################################################################
592632
# Save platform related info
593633
# Globals:
@@ -598,11 +638,11 @@ save_platform() {
598638
# None
599639
###############################################################################
600640
save_platform_info() {
601-
save_platform "syseeprom" "platform"
602-
save_platform "psustatus" "platform"
603-
save_platform "ssdhealth" "platform"
604-
save_platform "temperature" "platform"
605-
save_platform "fan" "platform"
641+
save_cmd "show platform syseeprom" "syseeprom"
642+
save_cmd "show platform psustatus" "psustatus"
643+
save_cmd "show platform ssdhealth" "ssdhealth"
644+
save_cmd "show platform temperature" "temperature"
645+
save_cmd "show platform fan" "fan"
606646
}
607647

608648
###############################################################################
@@ -809,6 +849,9 @@ collect_broadcom() {
809849
save_bcmcmd_all_ns "\"mirror dest show\"" "mirror.dest.summary"
810850
save_bcmcmd_all_ns "\"port *\"" "port.summary"
811851
save_bcmcmd_all_ns "\"d chg my_station_tcam\"" "mystation.tcam.summary"
852+
853+
copy_from_masic_docker "syncd" "/var/log/diagrun.log" "/var/log/diagrun.log"
854+
copy_from_masic_docker "syncd" "/var/log/bcm_diag_post" "/var/log/bcm_diag_post"
812855
}
813856

814857
###############################################################################
@@ -868,22 +911,26 @@ save_log_files() {
868911
###############################################################################
869912
# Save warmboot files
870913
# Globals:
871-
# TARDIR, TARFILE, TAR, DUMPDIR, TECHSUPPORT_TIME_INFO
914+
# TARDIR, TARFILE, TAR, DUMPDIR, TECHSUPPORT_TIME_INFO, NOOP
872915
# Arguments:
873916
# None
874917
# Returns:
875918
# None
876919
###############################################################################
877920
save_warmboot_files() {
878921
# Copy the warmboot files
879-
mkdir -p $TARDIR
880-
$CP $V -rf /host/warmboot $TARDIR
881-
882922
start_t=$(date +%s%3N)
883-
($TAR $V --warning=no-file-removed -rhf $TARFILE -C $DUMPDIR --mode=+rw \
884-
$BASE/warmboot \
885-
|| abort "${ERROR_TAR_FAILED}" "Tar append operation failed. Aborting for safety.") \
886-
&& $RM $V -rf $TARDIR
923+
if $NOOP; then
924+
echo "$CP $V -rf /host/warmboot $TARDIR"
925+
else
926+
mkdir -p $TARDIR
927+
$CP $V -rf /host/warmboot $TARDIR
928+
929+
($TAR $V --warning=no-file-removed -rhf $TARFILE -C $DUMPDIR --mode=+rw \
930+
$BASE/warmboot \
931+
|| abort "${ERROR_TAR_FAILED}" "Tar append operation failed. Aborting for safety.") \
932+
&& $RM $V -rf $TARDIR
933+
fi
887934
end_t=$(date +%s%3N)
888935
echo "[ Warm-boot Files ] : $(($end_t-$start_t)) msec" >> $TECHSUPPORT_TIME_INFO
889936
}
@@ -1137,24 +1184,6 @@ main() {
11371184
end_t=$(date +%s%3N)
11381185
echo "[ TAR /etc Files ] : $(($end_t-$start_t)) msec" >> $TECHSUPPORT_TIME_INFO
11391186

1140-
if [ "$asic" = "broadcom" ]; then
1141-
if [[ ("$NUM_ASICS" > 1) ]]; then
1142-
for (( i=0; i<$NUM_ASICS; i++ ))
1143-
do
1144-
sudo docker exec -i syncd$i touch /var/log/diagrun.log
1145-
sudo docker exec -i syncd$i touch /var/log/bcm_diag_post
1146-
1147-
sudo docker cp syncd$i:/var/log/diagrun.log /var/log/diagrun.log.$i
1148-
sudo docker cp syncd$i:/var/log/bcm_diag_post /var/log/bcm_diag_post.$i
1149-
done
1150-
else
1151-
sudo docker exec -i syncd touch /var/log/diagrun.log
1152-
sudo docker exec -i syncd touch /var/log/bcm_diag_post
1153-
1154-
sudo docker cp syncd:/var/log/diagrun.log /var/log/diagrun.log
1155-
sudo docker cp syncd:/var/log/bcm_diag_post /var/log/bcm_diag_post
1156-
fi
1157-
fi
11581187
save_log_files
11591188
save_warmboot_files
11601189
save_crash_files

0 commit comments

Comments
 (0)