#!/bin/bash

set -e

MONRUN_CONFDIR='/etc/monrun/conf.d/'
MONRUN_BASENAME='mysql-monitor'
MONRUN_TEMPLATE='/usr/share/yandex-du-mysql-monitor/mysql-monitor.conf.template'
MONRUN_TEMPLATE_PXC='/usr/share/yandex-du-mysql-monitor/mysql-monitor-pxc.conf.template'
LM='/usr/local/bin/lm'
# ppcbackup дописан для примера.
BACKUP_HOSTS_PATTERN='standby|backup'
HEAVY_HOST_PATTERN='heavy|logs'
# Максимальное отставание слейва для обычных и бекапных машин. WARN = 0,7 * CRIT.
MAX_BEHIND=600
BACKUP_MAX_BEHIND=3600
HEAVY_MAX_BEHIND=3600

[ ! -x $LM ] && (echo "$LM not found!"; exit 2)

AVAIL_INSTS=`$LM --complete`

if [ "x$AVAIL_INSTS" = "x" ]; then
	echo "Can't find any active instances in lm. Check lm --complete."
	exit 2
fi

# На бекапных хостах база может существенно отставать во время бекапа.
MYHOSTNAME=`hostname -f`
if echo $MYHOSTNAME | grep -q -E "$BACKUP_HOSTS_PATTERN"; then
	CRIT_TIME=$BACKUP_MAX_BEHIND
elif echo $MYHOSTNAME | grep -q -E "$HEAVY_HOSTS_PATTERN"; then
	CRIT_TIME=$HEAVY_MAX_BEHIND
else
	CRIT_TIME=$MAX_BEHIND
fi

pxc=`dpkg -l 'percona-xtradb-cluster-server*' | grep ^ii | wc -l`
if [ $pxc -ne 0 ]; then
	echo "PXC detected, additional checks will be generated"
fi
echo -e "Generating monrun configs for instances:\n$AVAIL_INSTS\n"

rm $MONRUN_CONFDIR/$MONRUN_BASENAME* >/dev/null 2>&1 || true
for instance in $AVAIL_INSTS; do
	echo "Instance: $instance"
	conf=$MONRUN_CONFDIR/$MONRUN_BASENAME-$instance.conf
	sed "s/__INSTANCE__/$instance/g;s/__CRIT_TIME__/$CRIT_TIME/" $MONRUN_TEMPLATE > $conf
	if [ $pxc -ne 0 ]; then
		sed "s/__INSTANCE__/$instance/g;s/__CRIT_TIME__/$CRIT_TIME/" $MONRUN_TEMPLATE_PXC >> $conf
	fi
done

regenerate-monrun-tasks
