xref: /openbmc/phosphor-debug-collector/tools/dreport.d/include.d/functions (revision a96d0b289898599f48cd82e37045c3497e8002a2)
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        log_warning "Skipping copy $desc $file_name"
46*a96d0b28SJayanth Othayoth        return $RESOURCE_UNAVAILABLE
479d817ba6SJayanth Othayoth    fi
489d817ba6SJayanth Othayoth}
495ba7176cSMarri Devender Rao# @brief Copy the symbolic link file to the dreport packaging,
505ba7176cSMarri Devender Rao#        if it is in the user allowed dump size limit.
515ba7176cSMarri Devender Rao# @param $1 symbolic link file name
525ba7176cSMarri Devender Rao# @param $2 Plugin description used for logging.
535ba7176cSMarri Devender Raofunction add_copy_sym_link_file()
545ba7176cSMarri Devender Rao{
555ba7176cSMarri Devender Rao    file_name="$1"
565ba7176cSMarri Devender Rao    desc="$2"
575ba7176cSMarri Devender Rao
585ba7176cSMarri Devender Rao    cp $file_name $name_dir
595ba7176cSMarri Devender Rao    if [ $? -ne 0 ]; then
605ba7176cSMarri Devender Rao        log_error "Failed to copy $desc $file_name"
615ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
625ba7176cSMarri Devender Rao    fi
635ba7176cSMarri Devender Rao    if check_size "$name_dir/$(basename "$file_name")"; then
645ba7176cSMarri Devender Rao        log_info "Copied $desc $file_name"
655ba7176cSMarri Devender Rao        return $SUCCESS
665ba7176cSMarri Devender Rao    else
675ba7176cSMarri Devender Rao        log_warning "Skipping copy $desc $file_name"
685ba7176cSMarri Devender Rao        return $RESOURCE_UNAVAILABLE
695ba7176cSMarri Devender Rao    fi
705ba7176cSMarri 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{
121fdc0c3a1SDhruvaraj Subhashchandran   echo $($TIME_STAMP) "ERROR: $*" >> $dreport_log
1229d817ba6SJayanth Othayoth   if ((quiet != TRUE)); then
123fdc0c3a1SDhruvaraj Subhashchandran      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
132fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "WARNING: $*" >> $dreport_log
1339d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
134fdc0c3a1SDhruvaraj Subhashchandran            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
144fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "INFO: $*" >> $dreport_log
1459d817ba6SJayanth Othayoth        if ((quiet != TRUE)); then
146fdc0c3a1SDhruvaraj Subhashchandran            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{
155fdc0c3a1SDhruvaraj Subhashchandran    echo $($TIME_STAMP) "$*" >> $summary_log
1569d817ba6SJayanth Othayoth    if ((quiet != TRUE)); then
157fdc0c3a1SDhruvaraj Subhashchandran        echo $($TIME_STAMP) "$*" >&1
1589d817ba6SJayanth Othayoth    fi
1599d817ba6SJayanth Othayoth}
160