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