...
[nodemanager.git] / nm.py
1 """Node Manager"""
2
3 import optparse
4 import time
5
6 import accounts
7 import api
8 import database
9 import delegate
10 import logger
11 import plc
12 import sliver_vs
13 import tools
14
15
16 parser = optparse.OptionParser()
17 parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default=False, help='run daemonized')
18 parser.add_option('-s', '--startup', action='store_true', dest='startup', default=False, help='run all sliver startup scripts')
19 (options, args) = parser.parse_args()
20
21 def run():
22     try:
23         if options.daemon: tools.daemon()
24
25         accounts.register_class(sliver_vs.Sliver_VS)
26         accounts.register_class(delegate.Delegate)
27
28         other_pid = tools.pid_file()
29         if other_pid != None:
30             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, PID_FILE)
31             return
32
33         database.start()
34         api.start()
35         while True:
36             try: plc.fetch_and_update()
37             except: logger.log_exc()
38             time.sleep(10)
39     except: logger.log_exc()
40
41
42 if __name__ == '__main__': run()
43 else:
44     # This is for debugging purposes.  Open a copy of Python and import nm
45     tools.as_daemon_thread(run)