#!/bin/bash

# log contents
address="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_Host FROM T_Host where HST_No=$HSTNO;\"`"
port="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_Port FROM T_Host where HST_No=$HSTNO;\"`"
vmname="$VM"
action=1
step=1
result=0
content="Backup start"
reason=
write_log(){
    sqlite3 /unas/etc/vmbackup/vmbackup.db "INSERT INTO t_log( log_time, hst_address, hst_port, vm_name, log_action, log_step, log_result, log_content, log_reason)VALUES( DATETIME(CURRENT_TIMESTAMP, 'localtime'), \"$address\", \"$port\", \"$vmname\", \"$action\", \"$step\", \"$result\", \"$content\", \"$reason\");"
}

get_hst(){
    export GOVC_USERNAME="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_User FROM T_Host where HST_No=$HSTNO;\"`"
    export GOVC_PASSWORD="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_Password FROM T_Host where HST_No=$HSTNO;\"`"
    GOVC_HOST="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_Host FROM T_Host where HST_No=$HSTNO;\"`"
    GOVC_PORT="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_Port FROM T_Host where HST_No=$HSTNO;\"`"
    export GOVC_URL="$GOVC_HOST:$GOVC_PORT"
    export GOVC_INSECURE=true

    export GOVC_DATACENTER="`/unas/sbin/vmbackup/engine vm.info "$vmname" | grep -w '^  Path: ' | awk -F '/' '{print $2}'`"

    export esxi_dir="`sqlite3 /unas/etc/vmbackup/vmbackup.db \"SELECT HST_BackupDir FROM T_Host where HST_No=$HSTNO;\"`"
    export vm_stor_dir="$esxi_dir/vmbackup/$id"
}

vmx_backup(){
    get_hst
    cd /tmp
    /unas/sbin/vmbackup/engine datastore.download "$VM_FOLDER/$vmname/$vmname.vmx" "$vmname.vmx"
    mv "$vmname.vmx" "$vm_stor_dir/$vmname.vmx"
    chown www-data:www-data "$vm_stor_dir/$vmname.vmx"
}

vmx_backup
run_dir=/run/vmbackup/backup/$id
backup_id=`echo run job=$id level=$LEVEL yes | bconsole | grep -e 'Job queued\. JobId=[1-9][0-9]*' | awk -F = '{print $2}'`

if [ -n "$backup_id" ];then
    write_log

    status=`echo wait jobid=$backup_id | bconsole | grep JobStatus=`
    if echo $status | grep -q 'JobStatus=OK (T)';then
        step=99
        content="Backup completed"
        result=0
        write_log
        php /unas/sbin/vmbackup/clean_job.php $id
    else
        step=84
        content="Backup failed"
        result=1
        write_log
    fi
else
    reason="Failed to create backup job"
    content="Failed to create backup job"
    result=1
    write_log
fi

rm -rf $run_dir
