Exemplo n.º 1
0
def main():
    parser = argparse.ArgumentParser(
        description='Start Pinball master server.')
    parser.add_argument(
        '-c',
        '--config_file',
        dest='config_file',
        required=True,
        help='full path to the pinball setting configure file')
    parser.add_argument(
        '-p',
        '--port',
        dest='port',
        type=int,
        default=PinballConfig.MASTER_PORT,
        help='port to run on')
    options = parser.parse_args(sys.argv[1:])

    PinballConfig.parse(options.config_file)
    master_port = options.port if options.port else PinballConfig.MASTER_PORT
    factory = Factory(master_port=master_port)

    # The reason why these imports are not at the top level is that some of the
    # imported code (db models initializing table names) depends on parameters
    # passed on the command line (master name).  Those imports need to be delayed
    # until after command line parameter parsing.
    from pinball.persistence.store import DbStore
    factory.create_master(DbStore())
    factory.run_master_server()
Exemplo n.º 2
0
 def setUp(self):
     self._factory = Factory()
     store = EphemeralStore()
     self._factory.create_master(store)
     emailer = Emailer('some_host', '8080')
     self._scheduler = Scheduler(self._factory.get_client(), store, emailer)
     self._client = self._factory.get_client()
     self._post_schedule_token()
Exemplo n.º 3
0
 def setUp(self):
     self._factory = Factory()
     self._store = EphemeralStore()
     self._factory.create_master(self._store)
     self._emailer = mock.Mock()
     self._worker = Worker(self._factory.get_client(), self._store,
                           self._emailer)
     self._client = self._factory.get_client()
Exemplo n.º 4
0
def main():
    _register_signal_listener()

    parser = argparse.ArgumentParser(
        description='Start Pinball master and workers.')
    parser.add_argument(
        '-c',
        '--config_file',
        dest='config_file',
        required=True,
        help='full path to the pinball setting configure file')
    parser.add_argument(
        '-m',
        '--mode',
        dest='mode',
        choices=['master', 'scheduler', 'workers', 'ui'],
        default='master',
        help='execution mode')

    options = parser.parse_args(sys.argv[1:])
    PinballConfig.parse(options.config_file)

    if hasattr(PinballConfig, 'MASTER_NAME') and PinballConfig.MASTER_NAME:
        master_name(PinballConfig.MASTER_NAME)
    _pinball_imports()
    if PinballConfig.UI_HOST:
        emailer = Emailer(PinballConfig.UI_HOST, PinballConfig.UI_PORT)
    else:
        emailer = Emailer(socket.gethostname(), PinballConfig.UI_PORT)

    if options.mode == 'ui':
        hostport = '%s:%d' % (socket.gethostname(), PinballConfig.UI_PORT)
        cache_thread.start_cache_thread(DbStore())
        if not PinballConfig.UI_HOST:
            hostport = 'localhost:%d' % PinballConfig.UI_PORT

        # Disable reloader to prevent auto refresh on file changes.  The
        # problem with auto-refresh is that it starts multiple processes.  Some
        # of those processes will become orphans if we kill the UI in a wrong
        # way.
        management.call_command('runserver', hostport, interactive=False,
                                use_reloader=False)
        return

    factory = Factory(master_hostname=PinballConfig.MASTER_HOST,
                      master_port=PinballConfig.MASTER_PORT)
    threads = []
    if options.mode == 'master':
        factory.create_master(DbStore())
    elif options.mode == 'scheduler':
        threads.append(_create_scheduler(factory, emailer))
    else:
        assert options.mode == 'workers'
        if PinballConfig.UI_HOST:
            emailer = Emailer(PinballConfig.UI_HOST, PinballConfig.UI_PORT)
        else:
            emailer = Emailer(socket.gethostname(), PinballConfig.UI_PORT)
        threads = _create_workers(PinballConfig.WORKERS, factory, emailer)

    try:
        if options.mode == 'master':
            factory.run_master_server()
        else:
            _wait_for_threads(threads)
    except KeyboardInterrupt:
        LOG.info('Exiting')
        sys.exit()
Exemplo n.º 5
0
def main():
    parser = argparse.ArgumentParser(
        description='Interact with Pinball master server.')
    parser.add_argument('-p',
                        '--port',
                        dest='port',
                        type=int,
                        default=PinballConfig.MASTER_PORT,
                        help='port of the pinball master server')
    parser.add_argument('-s',
                        '--host',
                        dest='host',
                        default='localhost',
                        help='hostname of the pinball master server')
    parser.add_argument('-f',
                        '--force',
                        dest='force',
                        action='store_true',
                        default=False,
                        help='do not ask for confirmation')
    parser.add_argument('-r',
                        '--recursive',
                        dest='recursive',
                        action='store_true',
                        default=False,
                        help='perform the operation recursively')
    parser.add_argument('-n', '--name', dest='name', help='token name')
    parser.add_argument('-v',
                        '--version',
                        dest='version',
                        type=int,
                        help='token version')
    parser.add_argument('-o',
                        '--owner',
                        dest='owner',
                        help='token owner; must be provided if '
                        'expiration_time is set')
    parser.add_argument('-t',
                        '--expiration_time',
                        dest='expiration_time',
                        type=int,
                        help='ownership expiration time in seconds since '
                        'epoch; must be provided if owner is set')
    parser.add_argument('-d', '--data', dest='data', help='token data')
    parser.add_argument('-i',
                        '--priority',
                        dest='priority',
                        type=float,
                        default=0,
                        help='token priority')
    parser.add_argument('command',
                        choices=_COMMANDS.keys(),
                        help='command name')
    parser.add_argument('command_args', nargs='*')
    options = parser.parse_args(sys.argv[1:])

    command = _COMMANDS[options.command]()
    command.prepare(options)
    factory = Factory(master_hostname=options.host, master_port=options.port)
    client = factory.get_client()
    print command.execute(client, None)
Exemplo n.º 6
0
 def setUp(self):
     self._factory = Factory()
     self._factory.create_master(EphemeralStore())