#!/usr/bin/python # # Standalone WSGI PLCAPI Server # # Tony Mack # Copyright (C) 2006 The Trustees of Princeton University # import os import sys import traceback from optparse import OptionParser from gevent import pywsgi # Append PLC to the system path sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0]))) from PLC.RestAPI import app # Defaults addr = "0.0.0.0" port = 8000 config_file = '/etc/planetlab/plcapi_config' keyfile=None certfile=None # Get options parser = OptionParser() parser.add_option('-p', '--port', dest='port', metavar='', help='TCP port number to listen on') parser.add_option('-f', '--config', dest='config', metavar='', help='PLCAPI configuration file') options = None args = None try: (options, args) = parser.parse_args() except: print "Usage: %s [OPTION]..." % sys.argv[0] print "Options:" print " -p PORT, --port=PORT TCP port number to listen on (default: %d)" % port print " -f FILE, --config=FILE PLC configuration file (default: %s)" % config print " -h, --help This message" sys.exit(1) if options.config: config = Config(options.config) addr = config.api_host keyfile = config.api_ssl_key certfile = config.api_ssl_cert if options.port: port = int(options.port) app.debug = True if keyfile and certfile: app.run(host=addr, port=port, ssl_context=(certfile, keyfile)) else: app.run(host=addr, port=port)