Refactoring in progress...
[nodemanager.git] / nm.py
1 """Node Manager"""
2
3 import optparse
4 import time
5
6 from config import *
7 import accounts
8 import api
9 import database
10 import delegate
11 import logger
12 import plc
13 import sliver_vs
14 import tools
15
16
17 parser = optparse.OptionParser()
18 parser.add_option('-d', '--daemon',
19                   action='store_true', dest='daemon', default=False,
20                   help='run daemonized')
21 parser.add_option('-s', '--startup',
22                   action='store_true', dest='startup', default=False,
23                   help='run all sliver startup scripts')
24 (options, args) = parser.parse_args()
25
26 def run():
27     try:
28         if options.daemon: tools.daemon()
29
30         accounts.register_class(sliver_vs.Sliver_VS)
31         accounts.register_class(delegate.Delegate)
32
33         other_pid = tools.pid_file()
34         if other_pid != None:
35             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)
36             return
37
38         database.start()
39         api.start()
40         while True:
41             try: plc.fetch_and_update()
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)