xref: /openbmc/phosphor-debug-collector/tools/dreport.d/include.d/functions (revision 3598158b90a69177f25f2ff6aab05c385c8fc987)
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"
17*3598158bSAlexander Filippov        rm -f "$name_dir/$file_name"
189d817ba6SJayanth Othayoth        return 1
199d817ba6SJayanth Othayoth    fi
209d817ba6SJayanth Othayoth
219d817ba6SJayanth Othayoth    if check_size "$name_dir/$file_name"; then
229d817ba6SJayanth Othayoth        log_info "Collected $desc"
239d817ba6SJayanth Othayoth    else
249d817ba6SJayanth Othayoth        log_warning "Skipping $desc"
259d817ba6SJayanth Othayoth    fi
269d817ba6SJayanth Othayoth}
279d817ba6SJayanth Othayoth
289d817ba6SJayanth Othayoth# @brief Copy the file or directory into the dreport packaging,
299d817ba6SJayanth Othayoth#        if it is in the user allowed dump size limit.
309d817ba6SJayanth Othayoth# @param $1 Copy file or directory name.
319d817ba6SJayanth Othayoth# @param $2 Plugin description used for logging.
329d817ba6SJayanth Othayothfunction add_copy_file()
339d817ba6SJayanth Othayoth{
349d817ba6SJayanth Othayoth    file_name="$1"
359d817ba6SJayanth Othayoth    desc="$2"
369d817ba6SJayanth Othayoth
374d9b3a75SJayanth Othayoth    cp -Lr $file_name $name_dir
389d817ba6SJayanth Othayoth    if [ $? -ne 0 ]; then
399d817ba6SJayanth Othayoth        log_error "Failed to copy $desc $file_name"
40*3598158bSAlexander Filippov        rm -fr "$name_dir/$file_name"
419d817ba6SJayanth Othayoth        return $RESOURCE_UNAVAILABLE
429d817ba6SJayanth Othayoth    fi
439d817ba6SJayanth Othayoth    if check_size "$name_dir/$(basename "$file_name")"; then
449d817ba6SJayanth Othayoth        log_info "Copied $desc $file_name"
459d817ba6SJayanth Othayoth        return $SUCCESS
469d817ba6SJayanth Othayoth    else
479d817ba6SJayanth Othayoth        log_warning "Skipping copy $desc $file_name"
48a96d0b28SJayanth Othayoth        return $RESOURCE_UNAVAILABLE
499d817ba6SJayanth Othayoth    fi
509d817ba6SJayanth Othayoth}
515ba7176cSMarri Devender Rao# @brief Copy the symbolic link file to the dreport packaging,
525ba7176cSMarri Devender Rao#        if it is in the user allowed dump size limit.
535ba7176cSMarri Devender Rao# @param $1 symbolic link file name
545ba7176cSMarri Devender Rao# @param $2 Plugin description used for logging.
555ba7176cSMarri Devender Raofunction add_copy_sym_link_file()
565ba7176cSMarri Devender Rao{
575ba7176cSMarri Devender Rao    file_name="$1"
585ba7176cSMarri Devender Rao    desc="$2"
595ba7176cSMarri Devender Rao
605ba7176cSMarri Devender Rao    cp $file_name $name_dir
615ba7176cSMarri Devender Rao    if [ $? -ne 0 ]; then
625ba7176cSMarri Devender Rao        log_error "Failed to copy $desc $file_name"
63*3598158bSAlexander Filippov        rm -fr "$name_dir/$file_name"
645ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
655ba7176cSMarri Devender Rao    fi
665ba7176cSMarri Devender Rao    if check_size "$name_dir/$(basename "$file_name")"; then
675ba7176cSMarri Devender Rao        log_info "Copied $desc $file_name"
685ba7176cSMarri Devender Rao        return $SUCCESS
695ba7176cSMarri Devender Rao    else
705ba7176cSMarri Devender Rao        log_warning "Skipping copy $desc $file_name"
715ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
725ba7176cSMarri Devender Rao    fi
735ba7176cSMarri Devender Rao}
749d817ba6SJayanth Othayoth
759d817ba6SJayanth Othayoth# @brief Calculate file or directory compressed size based on input
769d817ba6SJayanth Othayoth#        and check whether the size in the allowed size limit.
779d817ba6SJayanth Othayoth#        Remove the file or directory from the name_dir
789d817ba6SJayanth Othayoth#        if the check fails.
799d817ba6SJayanth Othayoth# @param $1 Source file or directory
809d817ba6SJayanth Othayoth# @return 0 on success, error code if size exceeds the limit.
819d817ba6SJayanth Othayoth# Limitation: compress and tar will have few bytes size difference
829d817ba6SJayanth Othayothfunction check_size()
839d817ba6SJayanth Othayoth{
849d817ba6SJayanth Othayoth    source=$1
859d817ba6SJayanth Othayoth
869d817ba6SJayanth Othayoth    #No size check required in case dump_size is set to unlimited
879d817ba6SJayanth Othayoth    if [ $dump_size = $UNLIMITED ]; then
889d817ba6SJayanth Othayoth        return 0
899d817ba6SJayanth Othayoth    fi
909d817ba6SJayanth Othayoth
919d817ba6SJayanth Othayoth    #get the file or directory size
929d817ba6SJayanth Othayoth    if [[ -d $source ]] && [[ -n $source ]]; then
939d817ba6SJayanth Othayoth        tar -cf "$source.tar" -C \
949d817ba6SJayanth Othayoth            $(dirname "$source") $(basename "$source")
959d817ba6SJayanth Othayoth        size=$(stat -c%s "$source.tar")
969d817ba6SJayanth Othayoth        rm "$source.tar"
979d817ba6SJayanth Othayoth    else
989d817ba6SJayanth Othayoth        size=$(stat -c%s "$source")
999d817ba6SJayanth Othayoth    fi
1009d817ba6SJayanth Othayoth
1019d817ba6SJayanth Othayoth    if [ $((size + cur_dump_size)) -gt $dump_size ]; then
1029d817ba6SJayanth Othayoth        #Exceed the allowed limit,
1039d817ba6SJayanth Othayoth        #tar and compress the files and check the size
1049d817ba6SJayanth Othayoth        tar -Jcf "$name_dir.tar.xz" -C \
1059d817ba6SJayanth Othayoth            $(dirname "$name_dir") $(basename "$name_dir")
1069d817ba6SJayanth Othayoth        size=$(stat -c%s "$name_dir.tar.xz")
1079d817ba6SJayanth Othayoth        if [ $size -gt $dump_size ]; then
1089d817ba6SJayanth Othayoth            #Remove the the specific data from the name_dir and continue
1099d817ba6SJayanth Othayoth            rm "$source" "$name_dir.tar.xz"
1109d817ba6SJayanth Othayoth            return $RESOURCE_UNAVAILABLE
1119d817ba6SJayanth Othayoth        else
1129d817ba6SJayanth Othayoth            rm "$name_dir.tar.xz"
1139d817ba6SJayanth Othayoth        fi
1149d817ba6SJayanth Othayoth    fi
1159d817ba6SJayanth Othayoth
1169d817ba6SJayanth Othayoth    cur_dump_size=$((size + cur_dump_size))
1179d817ba6SJayanth Othayoth    return $SUCCESS
1189d817ba6SJayanth Othayoth}
1199d817ba6SJayanth Othayoth
1209d817ba6SJayanth Othayoth# @brief log the error message
1219d817ba6SJayanth Othayoth# @param error message
1229d817ba6SJayanth Othayothfunction log_error()
1239d817ba6SJayanth Othayoth{
124fdc0c3a1SDhruvaraj Subhashchandran    echo $($TIME_STAMP) "ERROR: $*" >> $dreport_log
1259d817ba6SJayanth Othayoth    if ((quiet != TRUE)); then
126fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "ERROR: $*" >&2
1279d817ba6SJayanth Othayoth    fi
1289d817ba6SJayanth Othayoth}
1299d817ba6SJayanth Othayoth
1309d817ba6SJayanth Othayoth# @brief log warning message
1319d817ba6SJayanth Othayoth# @param warning message
1329d817ba6SJayanth Othayothfunction log_warning()
1339d817ba6SJayanth Othayoth{
1349d817ba6SJayanth Othayoth    if ((verbose == TRUE)); then
135fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "WARNING: $*" >> $dreport_log
1369d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
137fdc0c3a1SDhruvaraj Subhashchandran            echo $($TIME_STAMP) "WARNING: $*" >&2
1389d817ba6SJayanth Othayoth        fi
1399d817ba6SJayanth Othayoth    fi
1409d817ba6SJayanth Othayoth}
1419d817ba6SJayanth Othayoth
1429d817ba6SJayanth Othayoth# @brief log info message
1439d817ba6SJayanth Othayoth# @param info message
1449d817ba6SJayanth Othayothfunction log_info()
1459d817ba6SJayanth Othayoth{
1469d817ba6SJayanth Othayoth    if ((verbose == TRUE)); then
147fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "INFO: $*" >> $dreport_log
1489d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
149fdc0c3a1SDhruvaraj Subhashchandran            echo $($TIME_STAMP) "INFO: $*" >&1
1509d817ba6SJayanth Othayoth        fi
1519d817ba6SJayanth Othayoth    fi
1529d817ba6SJayanth Othayoth}
1539d817ba6SJayanth Othayoth
1549d817ba6SJayanth Othayoth# @brief log summary message
1559d817ba6SJayanth Othayoth# @param message
1569d817ba6SJayanth Othayothfunction log_summary()
1579d817ba6SJayanth Othayoth{
158fdc0c3a1SDhruvaraj Subhashchandran    echo $($TIME_STAMP) "$*" >> $summary_log
1599d817ba6SJayanth Othayoth    if ((quiet != TRUE)); then
160fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "$*" >&1
1619d817ba6SJayanth Othayoth    fi
1629d817ba6SJayanth Othayoth}
163