def server(port, socket, auth, title, cors_origin, workers, interval): """Create pge server to provide authorize service.""" (base_api, cors) = api.base_api(title, cors_origin) endpoint = cgroup_api.init(base_api, cors, interval=interval) if not endpoint.startswith('/'): endpoint = '/' + endpoint if port: rest_server = rest.TcpRestServer(port, auth_type=auth, protect=[endpoint], workers=workers) # TODO: need to rename that - conflicts with import socket. elif socket: rest_server = rest.UdsRestServer(socket) else: click.echo('port or socket must be specified') sys.exit(1) try: rest_server.run() except sock.error as sock_err: print(sock_err) if sock_err.errno == errno.EADDRINUSE: # TODO: hack, but please keep it for now, otherwise on the # setup several master processes run on same server # lookup api (listen on port 8080) is in tight loop. time.sleep(5)
def server(register, port, auth, modules, title, cors_origin): """Runs nodeinfo server.""" if port == 0: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('0.0.0.0', 0)) port = sock.getsockname()[1] sock.close() hostname = sysinfo.hostname() hostport = '%s:%s' % (hostname, port) if register: zkclient = context.GLOBAL.zk.conn zkclient.add_listener(zkutils.exit_on_lost) appname = 'root.%s#%010d' % (hostname, os.getpid()) path = z.path.endpoint(appname, 'tcp', 'nodeinfo') _LOGGER.info('register endpoint: %s %s', path, hostport) zkutils.create(zkclient, path, hostport, acl=[_SERVERS_ACL], ephemeral=True) _LOGGER.info('Starting nodeinfo server on port: %s', port) utils.drop_privileges() api_paths = [] if modules: api_paths = api.init(modules, title.replace('_', ' '), cors_origin) rest_server = rest.TcpRestServer(port, auth_type=auth, protect=api_paths) rest_server.run()
def top(port, socket, auth, title, modules, cors_origin, workers, backlog, authz): """Run Treadmill API server.""" context.GLOBAL.zk.add_listener(zkutils.exit_on_lost) api_paths = api.init(modules, title.replace('_', ' '), cors_origin, authz) if port: rest_server = rest.TcpRestServer(port, auth_type=auth, protect=api_paths, workers=workers, backlog=backlog) # TODO: need to rename that - conflicts with import socket. elif socket: rest_server = rest.UdsRestServer(socket, auth_type=auth, workers=workers, backlog=backlog) else: click.echo('port or socket must be specified') sys.exit(1) try: rest_server.run() except sock.error as sock_err: print(sock_err) if sock_err.errno == errno.EADDRINUSE: # TODO: hack, but please keep it for now, otherwise on the # setup several master processes run on same server # lookup api (listen on port 8080) is in tight loop. time.sleep(5)
def server(approot, register, port, auth, modules, title, cors_origin): """Runs nodeinfo server.""" if port == 0: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('0.0.0.0', 0)) port = sock.getsockname()[1] sock.close() hostname = sysinfo.hostname() hostport = '%s:%s' % (hostname, port) if register: zkclient = context.GLOBAL.zk.conn zkclient.add_listener(zkutils.exit_on_lost) appname = 'root.%s#%010d' % (hostname, os.getpid()) app_pattern = 'root.%s#*' % (hostname) path = z.path.endpoint(appname, 'tcp', 'nodeinfo') _LOGGER.info('register endpoint: %s %s', path, hostport) zkutils.create(zkclient, path, hostport, acl=[zkclient.make_servers_acl()], ephemeral=True) # TODO: remove "legacy" endpoint registration once conversion is # complete. tm_env = appenv.AppEnvironment(approot) # TODO: need to figure out how to handle windows. assert os.name != 'nt' endpoints_mgr = endpoints.EndpointsMgr(tm_env.endpoints_dir) endpoints_mgr.unlink_all( app_pattern, endpoint='nodeinfo', proto='tcp' ) endpoints_mgr.create_spec( appname=appname, endpoint='nodeinfo', proto='tcp', real_port=port, pid=os.getpid(), port=port, owner='/proc/{}'.format(os.getpid()), ) _LOGGER.info('Starting nodeinfo server on port: %s', port) utils.drop_privileges() api_paths = [] if modules: api_modules = {module: None for module in modules} api_paths = api.init( api_modules, title.replace('_', ' '), cors_origin ) rest_server = rest.TcpRestServer(port, auth_type=auth, protect=api_paths) rest_server.run()
def top(port, socket, auth, title, modules, config, params, cors_origin, workers, backlog, authz): """Run Treadmill API server.""" context.GLOBAL.zk.add_listener(zkutils.exit_on_lost) api_modules = {module: {} for module in modules} for module, cfg in config: if module not in api_modules: raise click.UsageError('Orphan config: %s, not in: %r' % (module, modules)) api_modules[module] = yaml.load(stream=cfg) cfg.close() for module, param in params: if module not in api_modules: raise click.UsageError('Orphan config: %s, not in: %r' % (module, modules)) api_modules[module].update(yaml.load(param)) api_paths = api.init(api_modules, title.replace('_', ' '), cors_origin, authz) if port: rest_server = rest.TcpRestServer(port, auth_type=auth, protect=api_paths, workers=workers, backlog=backlog) # TODO: need to rename that - conflicts with import socket. elif socket: rest_server = rest.UdsRestServer(socket, auth_type=auth, workers=workers, backlog=backlog) else: click.echo('port or socket must be specified') sys.exit(1) try: rest_server.run() except sock.error as sock_err: _LOGGER.warning('Socker error: %s', sock_err) if sock_err.errno == errno.EADDRINUSE: # TODO: hack, but please keep it for now, otherwise on the # setup several master processes run on same server # lookup api (listen on port 8080) is in tight loop. time.sleep(5)
def top(port, socket, auth, title, modules, cors_origin, workers, authz): """Run Treadmill API server.""" context.GLOBAL.zk.add_listener(zkutils.exit_on_lost) api_paths = api.init(modules, title.replace('_', ' '), cors_origin, authz) if port: rest_server = rest.TcpRestServer(port, auth_type=auth, protect=api_paths, workers=workers) elif socket: rest_server = rest.UdsRestServer(socket) else: click.echo('port or socket must be specified') sys.exit(1) rest_server.run()
def server(approot, register, port, auth, modules, config, title, cors_origin, rate_limit_global, rate_limit_module, rate_limit_by): """Runs nodeinfo server.""" rate_limit = _get_rate_limit( rate_limit_global, rate_limit_module, rate_limit_by ) rest_server = rest.TcpRestServer(port, auth_type=auth, rate_limit=rate_limit) port = rest_server.port hostname = sysinfo.hostname() hostport = '%s:%s' % (hostname, port) if register: zkclient = context.GLOBAL.zk.conn zkclient.add_listener(zkutils.exit_on_lost) appname = 'root.%s#%010d' % (hostname, os.getpid()) app_pattern = 'root.%s#*' % (hostname) path = z.path.endpoint(appname, 'tcp', 'nodeinfo') _LOGGER.info('register endpoint: %s %s', path, hostport) zkutils.create(zkclient, path, hostport, acl=[zkclient.make_servers_acl()], ephemeral=True) # TODO: remove "legacy" endpoint registration once conversion is # complete. tm_env = appenv.AppEnvironment(approot) endpoints_mgr = endpoints.EndpointsMgr(tm_env.endpoints_dir) endpoints_mgr.unlink_all( app_pattern, endpoint='nodeinfo', proto='tcp' ) # On Linux endpoint for nodeinfo is a symlink pointing to # /proc/{pid}, on Windows it's just a regular file owner = '/proc/{}'.format(os.getpid()) if os.name == 'posix' \ else None endpoints_mgr.create_spec( appname=appname, endpoint='nodeinfo', proto='tcp', real_port=port, pid=os.getpid(), port=port, owner=owner, ) _LOGGER.info('Starting nodeinfo server on port: %s', port) utils.drop_privileges() if modules: api_modules = {module: None for module in modules} for module, cfg in config: if module not in api_modules: raise click.UsageError( 'Orphan config: %s, not in: %r' % (module, api_modules) ) api_modules[module] = yaml.load(stream=cfg) cfg.close() rest_server.protect = api.init( api_modules, title.replace('_', ' '), cors_origin ) rest_server.run()