added create_network(), delete_network(), create_subnet(), delete_subnet(), process_t...
[plcapi.git] / RestServer.py
1 #!/usr/bin/python
2 #
3 # Standalone WSGI PLCAPI Server
4 #
5 # Tony Mack <tmack@cs.princeton.edu>
6 # Copyright (C) 2006 The Trustees of Princeton University
7 #
8
9 import os
10 import sys
11 import traceback
12 from optparse import OptionParser
13 from gevent import pywsgi
14 # Append PLC to the system path
15 sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0])))
16 from PLC.RestAPI import app
17
18 # Defaults
19 addr = "0.0.0.0"
20 port = 8000
21 config_file = '/etc/planetlab/plcapi_config'
22 keyfile=None
23 certfile=None
24
25
26 # Get options
27 parser = OptionParser()
28 parser.add_option('-p', '--port', dest='port', metavar='<port>', help='TCP port number to listen on')
29 parser.add_option('-f', '--config', dest='config', metavar='<config>', help='PLCAPI configuration file')
30 options = None
31 args = None 
32 try:
33     (options, args) = parser.parse_args()
34 except:
35     print "Usage: %s [OPTION]..." % sys.argv[0]
36     print "Options:"
37     print "     -p PORT, --port=PORT    TCP port number to listen on (default: %d)" % port
38     print "     -f FILE, --config=FILE  PLC configuration file (default: %s)" % config
39     print "     -h, --help              This message"
40     sys.exit(1) 
41
42 if options.config:
43     config = Config(options.config)
44     addr = config.api_host
45     keyfile = config.api_ssl_key
46     certfile = config.api_ssl_cert
47  
48 if options.port:
49     port = int(options.port)
50
51 app.debug = True
52 if keyfile and certfile:
53     app.run(host=addr, port=port, ssl_context=(certfile, keyfile))
54 else:    
55     app.run(host=addr, port=port)
56