Source code for pacifica.metadata.__main__

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""Metadata Module."""
import os
from time import sleep
from threading import Thread
from argparse import ArgumentParser, SUPPRESS
import cherrypy
from pacifica.metadata.rest.root import Root, error_page_default
from pacifica.metadata.orm.sync import OrmSync
from pacifica.metadata.globals import CHERRYPY_CONFIG, CONFIG_FILE


[docs]def stop_later(doit=False): """Used for unit testing stop after 10 seconds.""" if not doit: # pragma: no cover return def sleep_then_exit(): """sleep for 10 seconds then call cherrypy exit.""" sleep(10) cherrypy.engine.exit() sleep_thread = Thread(target=sleep_then_exit) sleep_thread.daemon = True sleep_thread.start()
[docs]def main(): """Main method to start the httpd server.""" parser = ArgumentParser(description='Run the metadata server.') parser.add_argument('--cpconfig', metavar='CPCONFIG', type=str, default=CHERRYPY_CONFIG, dest='cpconfig', help='cherrypy config file') parser.add_argument('-c', '--config', metavar='CONFIG', type=str, default=CONFIG_FILE, dest='config', help='database config file') parser.add_argument('-p', '--port', metavar='PORT', type=int, default=8121, dest='port', help='port to listen on') parser.add_argument('-a', '--address', metavar='ADDRESS', default='localhost', dest='address', help='address to listen on') parser.add_argument('--stop-after-a-moment', help=SUPPRESS, default=False, dest='stop_later', action='store_true') args = parser.parse_args() os.environ['METADATA_CONFIG'] = args.config OrmSync.connect_and_check() stop_later(args.stop_later) cherrypy.config.update({'error_page.default': error_page_default}) cherrypy.config.update({ 'server.socket_host': args.address, 'server.socket_port': args.port }) cherrypy.quickstart(Root(), '/', args.cpconfig)
if __name__ == '__main__': main()