From: Planet-Lab Support Date: Thu, 17 Aug 2006 20:21:10 +0000 (+0000) Subject: This commit was manufactured by cvs2svn to create branch X-Git-Tag: myplc-0_4-rc3~2 X-Git-Url: http://git.onelab.eu/?p=mom.git;a=commitdiff_plain;h=fd21f527deb80511e97e125ab72fff4fcbc650a4 This commit was manufactured by cvs2svn to create branch 'myplc-0_4-branch'. --- diff --git a/nm_mom.py b/nm_mom.py new file mode 100755 index 0000000..dc18817 --- /dev/null +++ b/nm_mom.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# +# Restarts NM if NM does not respond to periodic probes. +# +# Faiyaz Ahmed +# Copyright (C) 2006 The Trustees of Princeton University +# +# $Id: nm_mom.py,v 1.2 2006/08/17 20:12:09 faiyaza Exp $ +# + +import syslog +import os +import sys +import time + +import socket +import xmlrpclib +import bwlimit + +from sets import Set + +# Utility functions +from pl_mom import * + + +def restartNM(): + try: + pid = os.fork() + if pid == 0: + bwlimit.run("/etc/init.d/pl_nm stop") + time.sleep(10) + try: + nmpid = bwlimit.run("/bin/ps -e -o pid,cmd | grep nm.py")[0].split(" ")[0] + os.kill(int(nmpid), 9) + time.sleep(3) + print "NM %s forcefully killed." %nmpid + except: + print "NM %s killed." %nmpid + bwlimit.run("/etc/init.d/pl_nm restart") + print "NM restarted." + os._exit(0) + else: + os.waitpid(pid,0) + except Exception, err: + print "Warning: Exception received while restarting NM: %s" % err + + +def main(): + syslog.openlog("nm_mom") + sys.stdout = sys.stderr = Logger() + + nm = NM() + last_maxrate = 0 + try: + # Query something. If it doesnt come back... + vals = nm.query("pl_netflow", [('nm_net_max_rate', last_maxrate)]) + + except Exception, err: + print "Warning: Exception received while querying NM:", err + restartNM() + +if __name__ == '__main__': + main()