Support for -s. More comments. Removed out of date documentation and bwcap.
[nodemanager.git] / nm.py
1 """Node Manager"""
2
3 import optparse
4 import time
5 import xmlrpclib
6
7 import logger
8 import sm
9 import tools
10
11
12 parser = optparse.OptionParser()
13 parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default=False, help='run daemonized')
14 parser.add_option('-s', '--startup', action='store_true', dest='startup', default=False, help='run all sliver startup scripts')
15 (options, args) = parser.parse_args()
16
17 # XXX - awaiting a real implementation
18 data = []
19 modules = []
20
21 def GetSlivers():
22     for mod in modules: mod.GetSlivers_callback(data)
23
24 def start_and_register_callback(mod):
25     mod.start(options)
26     modules.append(mod)
27
28
29 def run():
30     try:
31         if options.daemon: tools.daemon()
32
33
34         other_pid = tools.pid_file()
35         if other_pid != None:
36             print """There might be another instance of the node manager running as pid %d.  If this is not the case, please remove the pid file %s""" % (other_pid, tools.PID_FILE)
37             return
38
39         start_and_register_callback(sm)
40         while True:
41             try: GetSlivers()
42             except: logger.log_exc()
43             time.sleep(10)
44     except: logger.log_exc()
45
46
47 if __name__ == '__main__': run()
48 else:
49     # This is for debugging purposes.  Open a copy of Python and import nm
50     tools.as_daemon_thread(run)