github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/acceptancetests/repository/charms/network-health/scripts/simple-server.py (about)

     1  #!/usr/bin/python3
     2  import argparse
     3  import http.server
     4  import socketserver
     5  import os
     6  
     7  SERVE_FILE_PATH = 'SIMPLE_HTTP_SERVER_INDEX_FILE'
     8  
     9  
    10  class SimpleRequestHandler(http.server.SimpleHTTPRequestHandler):
    11      """Simple request handler that always returns file supplied by env var."""
    12      def translate_path(self, path):
    13          return os.environ[SERVE_FILE_PATH]
    14  
    15  
    16  def parse_args(argv):
    17      parser = argparse.ArgumentParser(description="Simple http server.")
    18      parser.add_argument('--file-path', help='Path to file to serve.')
    19      parser.add_argument(
    20          '--port', default=8000, type=int, help='Port to serve on.')
    21  
    22      return parser.parse_args()
    23  
    24  
    25  def main(argv=None):
    26      args = parse_args(argv)
    27      server_details = ("", args.port)
    28      Handler = SimpleRequestHandler
    29      os.environ[SERVE_FILE_PATH] = args.file_path
    30      httpd = socketserver.TCPServer(server_details, Handler)
    31      try:
    32          httpd.serve_forever()
    33      except KeyboardInterrupt:
    34          print('Caught keyboard interrupt. Exiting.')
    35  
    36  
    37  if __name__ == '__main__':
    38      main()