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()
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()
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()
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()
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)
def setUp(self): self._factory = Factory() self._factory.create_master(EphemeralStore())