#!/bin/bash

if [ -z $SPOOLDIR ]; then
    SPOOLDIR=/var/spool/statusd
fi

STF=$SPOOLDIR/zfs.status

if ! [ -d /sys/module/zfs ]; then
	echo "NO ZFS"
	exit 1
fi

function zfs_check()
{
	ZCR=`zpool status -x`
	if ! [ "$ZCR" == "all pools are healthy" ]; then
		ZLR=`zpool list -H -o health,name 2>&1 | \
		awk -F'\t' '$1 != "ONLINE" {print $2 ":" $1}' | \
		paste -s -d, -`
		if [ -n "$ZLR" ]; then
			echo "$ZLR"
			return 2
		else
			PLIST=`echo "$ZCR" | grep 'pool:' |awk '{print $2 ":WARNING"}'`
			echo $PLIST
			return 1
		fi
	fi
}

if [ "$1" != "cron" -a -f $STF ]; then
    ZS=`cat $STF`
else
    ZS=`zfs_check`
    echo -n "$ZS" >$STF
fi
if [ "x$ZS" != "x" ]; then
	echo "$ZS"
	echo "$ZS" | grep ':WARNING' >/dev/null 2>&1 && exit 1
	exit 2
else
	echo "OK"
	exit 0
fi
