xref: /openbmc/phosphor-debug-collector/tools/dreport.d/include.d/functions (revision 5ba7176ca2755080e35daba0b5417386abf17f6d)
19d817ba6SJayanth Othayoth#!/usr/bin/env bash
29d817ba6SJayanth Othayoth
39d817ba6SJayanth Othayoth# @brief Execute the command and save the output into the dreport
49d817ba6SJayanth Othayoth#        packaging, if it is in the user allowed dump size limit.
59d817ba6SJayanth Othayoth# @param $1 Command to be executed.
69d817ba6SJayanth Othayoth# @param $2 Save file name.
79d817ba6SJayanth Othayoth# @param $3 Plugin description used for logging.
89d817ba6SJayanth Othayothfunction add_cmd_output()
99d817ba6SJayanth Othayoth{
109d817ba6SJayanth Othayoth    command="$1"
119d817ba6SJayanth Othayoth    file_name="$2"
129d817ba6SJayanth Othayoth    desc="$3"
139d817ba6SJayanth Othayoth
149d817ba6SJayanth Othayoth    eval $command >> "$name_dir/$file_name"
159d817ba6SJayanth Othayoth    if [ $? -ne 0 ]; then
169d817ba6SJayanth Othayoth        log_error "Failed to collect $desc"
179d817ba6SJayanth Othayoth        return 1
189d817ba6SJayanth Othayoth    fi
199d817ba6SJayanth Othayoth
209d817ba6SJayanth Othayoth    if check_size "$name_dir/$file_name"; then
219d817ba6SJayanth Othayoth        log_info "Collected $desc"
229d817ba6SJayanth Othayoth    else
239d817ba6SJayanth Othayoth        log_warning "Skipping $desc"
249d817ba6SJayanth Othayoth    fi
259d817ba6SJayanth Othayoth}
269d817ba6SJayanth Othayoth
279d817ba6SJayanth Othayoth# @brief Copy the file or directory into the dreport packaging,
289d817ba6SJayanth Othayoth#        if it is in the user allowed dump size limit.
299d817ba6SJayanth Othayoth# @param $1 Copy file or directory name.
309d817ba6SJayanth Othayoth# @param $2 Plugin description used for logging.
319d817ba6SJayanth Othayothfunction add_copy_file()
329d817ba6SJayanth Othayoth{
339d817ba6SJayanth Othayoth    file_name="$1"
349d817ba6SJayanth Othayoth    desc="$2"
359d817ba6SJayanth Othayoth
369d817ba6SJayanth Othayoth    cp -r $file_name $name_dir
379d817ba6SJayanth Othayoth    if [ $? -ne 0 ]; then
389d817ba6SJayanth Othayoth        log_error "Failed to copy $desc $file_name"
399d817ba6SJayanth Othayoth        return $RESOURCE_UNAVAILABLE
409d817ba6SJayanth Othayoth    fi
419d817ba6SJayanth Othayoth    if check_size "$name_dir/$(basename "$file_name")"; then
429d817ba6SJayanth Othayoth        log_info "Copied $desc $file_name"
439d817ba6SJayanth Othayoth        return $SUCCESS
449d817ba6SJayanth Othayoth    else
459d817ba6SJayanth Othayoth        return $RESOURCE_UNAVAILABLE
469d817ba6SJayanth Othayoth        log_warning "Skipping copy $desc $file_name"
479d817ba6SJayanth Othayoth    fi
489d817ba6SJayanth Othayoth}
49*5ba7176cSMarri Devender Rao# @brief Copy the symbolic link file to the dreport packaging,
50*5ba7176cSMarri Devender Rao#        if it is in the user allowed dump size limit.
51*5ba7176cSMarri Devender Rao# @param $1 symbolic link file name
52*5ba7176cSMarri Devender Rao# @param $2 Plugin description used for logging.
53*5ba7176cSMarri Devender Raofunction add_copy_sym_link_file()
54*5ba7176cSMarri Devender Rao{
55*5ba7176cSMarri Devender Rao    file_name="$1"
56*5ba7176cSMarri Devender Rao    desc="$2"
57*5ba7176cSMarri Devender Rao
58*5ba7176cSMarri Devender Rao    cp $file_name $name_dir
59*5ba7176cSMarri Devender Rao    if [ $? -ne 0 ]; then
60*5ba7176cSMarri Devender Rao        log_error "Failed to copy $desc $file_name"
61*5ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
62*5ba7176cSMarri Devender Rao    fi
63*5ba7176cSMarri Devender Rao    if check_size "$name_dir/$(basename "$file_name")"; then
64*5ba7176cSMarri Devender Rao        log_info "Copied $desc $file_name"
65*5ba7176cSMarri Devender Rao        return $SUCCESS
66*5ba7176cSMarri Devender Rao    else
67*5ba7176cSMarri Devender Rao        log_warning "Skipping copy $desc $file_name"
68*5ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
69*5ba7176cSMarri Devender Rao    fi
70*5ba7176cSMarri Devender Rao}
719d817ba6SJayanth Othayoth
729d817ba6SJayanth Othayoth# @brief Calculate file or directory compressed size based on input
739d817ba6SJayanth Othayoth#        and check whether the size in the allowed size limit.
749d817ba6SJayanth Othayoth#        Remove the file or directory from the name_dir
759d817ba6SJayanth Othayoth#        if the check fails.
769d817ba6SJayanth Othayoth# @param $1 Source file or directory
779d817ba6SJayanth Othayoth# @return 0 on success, error code if size exceeds the limit.
789d817ba6SJayanth Othayoth# Limitation: compress and tar will have few bytes size difference
799d817ba6SJayanth Othayothfunction check_size()
809d817ba6SJayanth Othayoth{
819d817ba6SJayanth Othayoth    source=$1
829d817ba6SJayanth Othayoth
839d817ba6SJayanth Othayoth    #No size check required in case dump_size is set to unlimited
849d817ba6SJayanth Othayoth    if [ $dump_size = $UNLIMITED ]; then
859d817ba6SJayanth Othayoth        return 0
869d817ba6SJayanth Othayoth    fi
879d817ba6SJayanth Othayoth
889d817ba6SJayanth Othayoth    #get the file or directory size
899d817ba6SJayanth Othayoth    if [[ -d $source ]] && [[ -n $source ]]; then
909d817ba6SJayanth Othayoth        tar -cf "$source.tar" -C \
919d817ba6SJayanth Othayoth                 $(dirname "$source") $(basename "$source")
929d817ba6SJayanth Othayoth        size=$(stat -c%s "$source.tar")
939d817ba6SJayanth Othayoth        rm "$source.tar"
949d817ba6SJayanth Othayoth    else
959d817ba6SJayanth Othayoth        size=$(stat -c%s "$source")
969d817ba6SJayanth Othayoth    fi
979d817ba6SJayanth Othayoth
989d817ba6SJayanth Othayoth    if [ $((size + cur_dump_size)) -gt $dump_size ]; then
999d817ba6SJayanth Othayoth        #Exceed the allowed limit,
1009d817ba6SJayanth Othayoth        #tar and compress the files and check the size
1019d817ba6SJayanth Othayoth        tar -Jcf "$name_dir.tar.xz" -C \
1029d817ba6SJayanth Othayoth                  $(dirname "$name_dir") $(basename "$name_dir")
1039d817ba6SJayanth Othayoth        size=$(stat -c%s "$name_dir.tar.xz")
1049d817ba6SJayanth Othayoth        if [ $size -gt $dump_size ]; then
1059d817ba6SJayanth Othayoth            #Remove the the specific data from the name_dir and continue
1069d817ba6SJayanth Othayoth            rm "$source" "$name_dir.tar.xz"
1079d817ba6SJayanth Othayoth            return $RESOURCE_UNAVAILABLE
1089d817ba6SJayanth Othayoth        else
1099d817ba6SJayanth Othayoth            rm "$name_dir.tar.xz"
1109d817ba6SJayanth Othayoth        fi
1119d817ba6SJayanth Othayoth    fi
1129d817ba6SJayanth Othayoth
1139d817ba6SJayanth Othayoth    cur_dump_size=$((size + cur_dump_size))
1149d817ba6SJayanth Othayoth    return $SUCCESS
1159d817ba6SJayanth Othayoth}
1169d817ba6SJayanth Othayoth
1179d817ba6SJayanth Othayoth# @brief log the error message
1189d817ba6SJayanth Othayoth# @param error message
1199d817ba6SJayanth Othayothfunction log_error()
1209d817ba6SJayanth Othayoth{
1219d817ba6SJayanth Othayoth   echo $($TIME_STAMP) "ERROR: $@" >> $dreport_log
1229d817ba6SJayanth Othayoth   if ((quiet != TRUE)); then
1239d817ba6SJayanth Othayoth      echo $($TIME_STAMP) "ERROR: $@" >&2
1249d817ba6SJayanth Othayoth   fi
1259d817ba6SJayanth Othayoth}
1269d817ba6SJayanth Othayoth
1279d817ba6SJayanth Othayoth# @brief log warning message
1289d817ba6SJayanth Othayoth# @param warning message
1299d817ba6SJayanth Othayothfunction log_warning()
1309d817ba6SJayanth Othayoth{
1319d817ba6SJayanth Othayoth    if ((verbose == TRUE)); then
1329d817ba6SJayanth Othayoth        echo $($TIME_STAMP) "WARNING: $@" >> $dreport_log
1339d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
1349d817ba6SJayanth Othayoth            echo $($TIME_STAMP) "WARNING: $@" >&2
1359d817ba6SJayanth Othayoth        fi
1369d817ba6SJayanth Othayoth    fi
1379d817ba6SJayanth Othayoth}
1389d817ba6SJayanth Othayoth
1399d817ba6SJayanth Othayoth# @brief log info message
1409d817ba6SJayanth Othayoth# @param info message
1419d817ba6SJayanth Othayothfunction log_info()
1429d817ba6SJayanth Othayoth{
1439d817ba6SJayanth Othayoth    if ((verbose == TRUE)); then
1449d817ba6SJayanth Othayoth        echo $($TIME_STAMP) "INFO: $@" >> $dreport_log
1459d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
1469d817ba6SJayanth Othayoth            echo $($TIME_STAMP) "INFO: $@" >&1
1479d817ba6SJayanth Othayoth        fi
1489d817ba6SJayanth Othayoth    fi
1499d817ba6SJayanth Othayoth}
1509d817ba6SJayanth Othayoth
1519d817ba6SJayanth Othayoth# @brief log summary message
1529d817ba6SJayanth Othayoth# @param message
1539d817ba6SJayanth Othayothfunction log_summary()
1549d817ba6SJayanth Othayoth{
1559d817ba6SJayanth Othayoth    echo $($TIME_STAMP) "$@" >> $summary_log
1569d817ba6SJayanth Othayoth    if ((quiet != TRUE)); then
1579d817ba6SJayanth Othayoth        echo $($TIME_STAMP) "$@" >&1
1589d817ba6SJayanth Othayoth    fi
1599d817ba6SJayanth Othayoth}
160