#!/bin/bash

[ -r /etc/check_mk/perun_flag.cfg ] && . /etc/check_mk/perun_flag.cfg
[ ${#FLAG} -eq 0 ] && exit 0
[[ "x$LOG_FILE" == "x" ]] && exit 0

CACHE_FILE="/var/lib/check_mk_agent/perun_flag_${FLAG[1]}.cache"

CACHE_SIZE=$(stat -c %s $CACHE_FILE 2>/dev/null)
[ -z $CACHE_SIZE ] && CACHE_SIZE=0
echo "<<<perun_flag>>>"

#if file is missing or from different day, create new one
if [[ ! -f $CACHE_FILE || $CACHE_SIZE -lt 5 || $(date +%D) != $(date -d @$(stat --printf="%Z" $CACHE_FILE) +%D) ]] ; then

    if [[ "${FLAG[1]}" == "isManaged" ]]; then
        # Zjisti stroje, ktere se prihlasily k puppetu za posledni den, vyhazej z nich testovaci stroje
        #
        LOG_FILE=$(sed "s/YESTERDAY/$(date -d "yesterday" +%Y-%m-%d)/" <<< "$LOG_FILE")
        zgrep "Compiled catalog" $LOG_FILE |sed 's/.*Compiled catalog for //'|sed 's/ .*//'|sort|uniq >/var/tmp/managed_nodes_all.txt
        grep "^#@ managed_nodes:" /etc/puppet/code/environments/production/manifests/site.pp |sed 's/.* //' >/var/tmp/managed_nodes_ignore.txt
        grep -v -f /var/tmp/managed_nodes_ignore.txt /var/tmp/managed_nodes_all.txt > $CACHE_FILE
    fi

    if [[ "${FLAG[1]}" == "isMonitored" ]]; then
        # Na monitorovacim serveru zjisti stroje, ktere jsou monitorovane
        #
        NAGIOS_CGI_CONFIG='/omd/sites/metacentrum/etc/nagios/cgi.cfg' \
        REMOTE_USER='cmkadmin' \
        REQUEST_METHOD='GET' \
        QUERY_STRING='style=hostdetail&jsonoutput' \
        /omd/sites/metacentrum/tools/cgi-bin/icinga/status.cgi \
            | awk '{if ($2 == "\"host_name\":") print substr($3,2, length($3)-3)}' \
                > $CACHE_FILE

        # Vyrad ze seznamu vyjimy (localhost)
        #
        sed -i '/^localhost$/d' $CACHE_FILE
    fi
fi

echo "FLAG: ${FLAG[1]}"
cat $CACHE_FILE 2>/dev/null

