+++ /dev/null
-#!/usr/bin/python
-#
-# Restarts NM if NM does not respond to periodic probes.
-#
-# Faiyaz Ahmed <faiyaza@cs.princeton.edu>
-# 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()