@@ -165,8 +165,7 @@ save_cmd() {
165
165
# This is required if $cmd has quoted strings that should be bunched
166
166
# as one argument, e.g. vtysh -c "COMMAND HERE" needs to have
167
167
# "COMMAND HERE" bunched together as 1 arg to vtysh -c
168
- if $do_gzip
169
- then
168
+ if $do_gzip ; then
170
169
tarpath=" ${tarpath} .gz"
171
170
filepath=" ${filepath} .gz"
172
171
local cmds=" $cmd 2>&1 | gzip -c > '${filepath} '"
@@ -223,6 +222,71 @@ save_cmd_all_ns() {
223
222
fi
224
223
}
225
224
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
+
226
290
# ##############################################################################
227
291
# Returns namespace option to be used with vtysh commmand, based on the ASIC ID.
228
292
# Returns empty string if no ASIC ID is provided
@@ -241,6 +305,7 @@ get_vtysh_namespace() {
241
305
else
242
306
ns=" -n ${asic_id} "
243
307
fi
308
+ echo " $ns "
244
309
}
245
310
246
311
# ##############################################################################
@@ -502,17 +567,27 @@ save_redis_info() {
502
567
# RM
503
568
# BASE
504
569
# TARFILE
570
+ # NOOP
505
571
# Arguments:
506
572
# *procfiles: variable-length list of proc file paths to save
507
573
# Returns:
508
574
# None
509
575
# ##############################################################################
510
576
save_proc () {
511
577
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
516
591
}
517
592
518
593
# ##############################################################################
@@ -553,41 +628,6 @@ save_saidump() {
553
628
fi
554
629
}
555
630
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
-
591
631
# ##############################################################################
592
632
# Save platform related info
593
633
# Globals:
@@ -598,11 +638,11 @@ save_platform() {
598
638
# None
599
639
# ##############################################################################
600
640
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 "
606
646
}
607
647
608
648
# ##############################################################################
@@ -809,6 +849,9 @@ collect_broadcom() {
809
849
save_bcmcmd_all_ns " \" mirror dest show\" " " mirror.dest.summary"
810
850
save_bcmcmd_all_ns " \" port *\" " " port.summary"
811
851
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"
812
855
}
813
856
814
857
# ##############################################################################
@@ -868,22 +911,26 @@ save_log_files() {
868
911
# ##############################################################################
869
912
# Save warmboot files
870
913
# Globals:
871
- # TARDIR, TARFILE, TAR, DUMPDIR, TECHSUPPORT_TIME_INFO
914
+ # TARDIR, TARFILE, TAR, DUMPDIR, TECHSUPPORT_TIME_INFO, NOOP
872
915
# Arguments:
873
916
# None
874
917
# Returns:
875
918
# None
876
919
# ##############################################################################
877
920
save_warmboot_files () {
878
921
# Copy the warmboot files
879
- mkdir -p $TARDIR
880
- $CP $V -rf /host/warmboot $TARDIR
881
-
882
922
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
887
934
end_t=$( date +%s%3N)
888
935
echo " [ Warm-boot Files ] : $(( $end_t - $start_t )) msec" >> $TECHSUPPORT_TIME_INFO
889
936
}
@@ -1137,24 +1184,6 @@ main() {
1137
1184
end_t=$( date +%s%3N)
1138
1185
echo " [ TAR /etc Files ] : $(( $end_t - $start_t )) msec" >> $TECHSUPPORT_TIME_INFO
1139
1186
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
1158
1187
save_log_files
1159
1188
save_warmboot_files
1160
1189
save_crash_files
0 commit comments