#! /usr/local/bin/python
# $Id: check_todo_age.py 1391 2007-06-07 21:45:11Z jnieuwen $

# Usage: command2nagios.py <nagiosfile> <command>

import fcntl
import os
import re
import sys
import datetime

todofile = sys.argv[2]
jnieuwenfile = sys.argv[1]
critical = 0
warning = 0

todofd = open(todofile,"r")
try:
	todofd.readline()
	for todo in todofd.readlines():
		if not re.match('- wait:',todo):
			date = re.sub('^[^:]+:',"",todo)
			date = re.sub(':.*',"",date)
			(year,month,day) = re.split('-',date,3)
			tododate = datetime.date(int(year),int(month),int(day))
			if datetime.date.today() - tododate > datetime.timedelta(30):
				critical += 1
			elif datetime.date.today() - tododate > datetime.timedelta(14):
				warning += 1
finally:
	todofd.close

file = open(jnieuwenfile,"r+")
try:
	if critical > 0:
		fcntl.flock(file,fcntl.LOCK_SH)
		nagiosfile=file.readlines()
		fcntl.flock(file,fcntl.LOCK_UN)
		file.close()
		file = open(jnieuwenfile,"w")
		fcntl.flock(file,fcntl.LOCK_EX)
		for line in nagiosfile:
			if re.match('^todoage',line):
				file.write("todoage:2:CRITICAL - " +str( critical) + " old todos\n")
			else:
				file.write(line)
		fcntl.flock(file,fcntl.LOCK_UN)
	elif warning > 0:
		fcntl.flock(file,fcntl.LOCK_SH)
		nagiosfile=file.readlines()
		fcntl.flock(file,fcntl.LOCK_UN)
		file.close()
		file = open(jnieuwenfile,"w")
		fcntl.flock(file,fcntl.LOCK_EX)
		for line in nagiosfile:
			if re.match('^todoage',line):
				file.write("todoage:1:WARNING - " + str(warning) + " old todos\n")
			else:
				file.write(line)
		fcntl.flock(file,fcntl.LOCK_UN)
	else:
		fcntl.flock(file,fcntl.LOCK_SH)
		nagiosfile=file.readlines()
		fcntl.flock(file,fcntl.LOCK_UN)
		file.close()
		file = open(jnieuwenfile,"w")
		fcntl.flock(file,fcntl.LOCK_EX)
		for line in nagiosfile:
			if re.match('^todoage',line):
				file.write("todoage:0:OK - no to old todas\n")
			else:
				file.write(line)
		fcntl.flock(file,fcntl.LOCK_UN)
finally:
	file.close()

