#!/usr/bin/python

import sys, getopt, os, time, errno
import logging
import logging.handlers

#sys.path.append('/usr/local/bin/thrift-ice-py')
 
#from ice import Ice
 
#from thrift import Thrift
#from thrift.transport import TSocket
#from thrift.transport import TTransport
#from thrift.protocol import TBinaryProtocol

sys_logger = logging.getLogger('ice-monitor')
sys_logger.setLevel(logging.DEBUG)
handler = logging.handlers.SysLogHandler(address = '/dev/log')
sys_logger.addHandler(handler)

def pid_exists(pid): 
    if pid < 0: 
        return False 
    try:
        os.kill(pid, 0) 
    except OSError as e:
        return e.errno == errno.EPERM
    else:
        return True
 
def main(argv):
    failcnt=0
    detected=0

    while True:
        time.sleep(10)
        try:
            file = open("/var/run/ice/ice.pid", "r")
            pid = file.readline()

            if(pid_exists(int(pid))):
                failcnt = 0
#                print "Process Running"
            else: 
                failcnt += 1
                print "ICE Process Offline"
                if (failcnt > 3):
                    sys_logger.debug("ICE Reset: ")
                    os.system("/etc/init.d/ice reset")
                    failcnt = 0

        except Exception, e:
            print e
            pass


if __name__ == "__main__":
   main(sys.argv[1:])
