#!/bin/bash
#
# plugin to monitor OpenVZ bean counters.
#
#
#%# family=auto
#%# capabilities=autoconf suggest

ATTR=`basename $0 | sed -e 's/^vebc_.*_//'`
STATS=`basename $0 | sed -e 's/^vebc_//' -e 's/_[0-9]*$//' -e 's/_/ /g'`

if [ "$1" = "autoconf" ]; then
    if [ -r /proc/bc/0/resources ]; then
	echo yes
	exit 0
    else
	echo "no (/proc/bc/0/resources not found)"
	exit 1
    fi
fi

if [ "$1" = "suggest" ]; then
    if [ -r /proc/bc/0/resources ]; then
	cat /proc/bc/0/resources |
	    while read str; do
		vals=($str)
		echo ${vals[0]}
	    done
	exit 0
    else
	exit 1
    fi
fi

if [ "$1" = "config" ]; then
    #       echo "graph_order down up"
    echo "graph_title beancounter for CT$ATTR: $STATS"
    echo "graph_category CT$ATTR"
    echo "graph_info 'Container bean counters info'"

    readme="false"
    cat /proc/user_beancounters | while read myid stuff; do
	line=""
	if [ "$myid" == "$ATTR:" ]; then
	    readme="true"
	    line="$stuff"
	    echo $line
	else
	    loid=`echo $myid | sed -e 's/.*:/:/'`
	    if [ "$loid" == ":" ]; then
		readme="false"
	    fi
	    if [ "$readme" == "true" ]; then
		line="$myid $stuff"
		echo $line
	    fi
	fi
    done | while read name value top warn max failcnt; do
	okname="dummy"
	for statname in $STATS; do
	    if [ "$name" == "$statname" ]; then
		okname=$name
	    fi
	done

        if [ "$okname" != "dummy" ]; then
	    echo $okname.label $name
	    echo $okname.warning $warn
	    echo $okname.critical $max
	fi
    done
    exit 0
fi;

readme="false"
cat /proc/user_beancounters | while read myid stuff; do
    line=""
    if [ "$myid" == "$ATTR:" ]; then
	readme="true"
	line="$stuff"
	echo $line
    else
	loid=`echo $myid | sed -e 's/.*:/:/'`
	if [ "$loid" == ":" ]; then
	    readme="false"
	fi
	if [ "$readme" == "true" ]; then
	    line="$myid $stuff"
	    echo $line
	fi
    fi
done | while read name value x; do
    okname="dummy"
    for statname in $STATS; do
	if [ "$name" == "$statname" ]; then
	    okname=$name
	fi
    done
    if [ "$okname" != "dummy" ]; then
	echo $okname.value $value
    fi

done
