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