#!/bin/bash

# Johan : quick & dirty to fix

#
# Variables
#

date_jour=$(date +%Y-%m-%d)
ok=0
err=0

#
# Usage
#

usage(){
    echo ""
    echo "Usage : check_k8s_dump_pvc -d BACKUP_DIRECTORY -l PVC_LIST"
    echo ""
    echo "OPTIONS :"
    echo "   -h     Print help"
    echo "   -d     Backup directory that contains the dumps (default: $backup_directory)"
    echo "   -l     PVC to check exclusively (comma separated and must match the backup folder name)"
    echo ""
    echo "Required: the dump name must be like dump-NAME-YYYY-MM-JJ_*.tar.gz"
    echo ""
}


#
# Getopts
#

while getopts ":h:l:d:*" opt; do
    case $opt in
        l)
            pvc_list="$OPTARG"
            ;;
        d)
            backup_directory="$OPTARG"
            if [[ ! -d $backup_directory ]] ; then
                echo "UNKNOWN: The backup directory doens't exist ($backup_directory)"
                exit 3
            fi
            ;;
        h)
            usage
            exit 3
            ;;
        \?)
            usage
            exit 3
            ;;
         *)
            usage
            exit 3
            ;;
    esac
done

if [[ -z $pvc_list ]] || [[ -z $backup_directory ]] ; then
    echo "UNKNOWN: The options "-d" and "-l" are mandatory"
    exit 3
fi

#
# Au boulot
#
for pvc in $(echo $pvc_list | sed "s/,/ /g") ; do
    pvc_folder="$backup_directory/$pvc"

    if [[ ! -d $pvc_folder ]] ; then
        err=$((err+1))
        err_message="$err_message- $pvc (aucun dump)\n"
        continue
    fi

    if ( ! ls $pvc_folder/dump-$pvc-"$date_jour"_*.tar.gz &> /dev/null ) ; then
        err=$((err+1))
        if [ "$(ls -A $pvc_folder)" ]; then
            last_dump=$(ls $pvc_folder | tail -n 1 | rev | cut -d "_" -f 2 | awk -F"-" '{print $3"-"$2"-"$1}' | rev)
            err_message="$err_message- $pvc (last dump : $last_dump)\n"
        else
            err_message="$err_message- $pvc (aucun dump)\n"
        fi
    else
        ok_message="$ok_message- $pvc\n"
        ok=$((ok+1))
    fi
done

if [[ $err -eq 0 ]] ; then
    echo "OK: Tous les PVC ont ete dumpes aujourd'hui"
    echo -e $ok_message
    exit 0
else
    echo "WARNING: Un ou plusieurs PVC n'ont pas ete dumpes aujourd'hui :"
    echo -e $err_message
    if [[ $ok -gt 0 ]] ; then
        echo "Liste des PVC qui ont ete bien dumpees :"
        echo -e $ok_message
    fi
    exit 1
fi


