#!/bin/bash
################################################################################
# Copyright (c) 2019 VMware, Inc. All rights reserved.
################################################################################
# Wrapper script aimed at collecting telemetry data for startup on a vCenter server
# for PostgreSQL.

if [ -z $VMWARE_POSTGRES_BASE ]; then
   echo "VMWARE_POSTGRES_BASE is not set."
   echo "Check your installation."
   exit 1
fi
SANITY_FILE=$VMWARE_POSTGRES_BASE/scripts/vpostgres_sanity_checks
if [ -f $SANITY_FILE ]; then
   source $SANITY_FILE
else
   echo "Sanity check file for environment variables of VMware Postgres"
   echo "is not available. Check your installation."
   exit 1
fi

if [ -z $VMWARE_CIS_HOME ]; then
   echo "VMWARE_CIS_HOME is not set."
   echo "Check your installation."
   exit 1
fi

# Wrapper to log given message to stderr, which is something that
# can be digested by vMon when running this script as part of the
# pre-start command of service vmware-vpostgres.
log_stderr()
{
   >&2 echo ${1}
}

# Show utility help
show_help()
{
   ERROR_NUM=$1
   log_stderr "Usage: `basename $0`"
   log_stderr "Example: `basename $0`"
   exit $ERROR_NUM
}

EXPECTED_ARGS=0
if [ $# -ne $EXPECTED_ARGS ]; then
   # Leave with an error code
   show_help 1
fi

# Grab PostgreSQL version and build number which will be forwarded to VAC as telemetry
# data for start up.
log_stderr "Generating telemetry data for startup"
# Postgres version and build number
CURRENT_VER=($(${VMWARE_POSTGRES_BASE}/bin/postgres --version |awk -F ' ' '{print$6}' | awk -F '-' '{print$1 "\t" $2}'))
# Get vCenter version
VC_VER=$(grep 'NAME:VC' ${VMWARE_CFG_DIR}/.buildInfo |awk -F '-' '{print$2}')
log_stderr "Push telemetry data"
${VMWARE_POSTGRES_BASE}/bin/vmw_vpg_config/pg_trigger_telemetry.py --event-type='startup' --data1="${CURRENT_VER[0]}" --data2="${CURRENT_VER[1]}" --data3="${VC_VER}"
# Failures to push telemetry data shouldn't impact start up
ERRNUM=$?
if [ "$ERRNUM" != 0 ]; then
   # Do not return an error in the event of a failure, as telemetry data loss should not result in a critical failure.
   log_stderr "Could not generate telemetry data"
fi
exit 0