def start_master_daemon_func(): try: set_logger() register_socket(master_daemon.tag) server = SimpleJSONRPCServer(('0.0.0.0', master_daemon.port)) logging.info('Started master daemon (port %s)' % master_daemon.port) server.register_function(add) server.register_function(check_connectivity) server.register_function(get_trex_path) server.register_function(update_trex) # trex_daemon_server server.register_function(trex_daemon_server.is_running, 'is_trex_daemon_running') server.register_function(trex_daemon_server.restart, 'restart_trex_daemon') server.register_function(trex_daemon_server.start, 'start_trex_daemon') server.register_function(trex_daemon_server.stop, 'stop_trex_daemon') # stl rpc proxy server.register_function(stl_rpc_proxy.is_running, 'is_stl_rpc_proxy_running') server.register_function(stl_rpc_proxy.restart, 'restart_stl_rpc_proxy') server.register_function(stl_rpc_proxy.start, 'start_stl_rpc_proxy') server.register_function(stl_rpc_proxy.stop, 'stop_stl_rpc_proxy') server.register_function(server.funcs.keys, 'get_methods') # should be last signal.signal(signal.SIGTSTP, stop_handler) # ctrl+z signal.signal(signal.SIGTERM, stop_handler) # kill server.serve_forever() except KeyboardInterrupt: logging.info('Ctrl+C') except Exception as e: logging.error('Closing due to error: %s' % e)
def start_master_daemon_func(): funcs_by_name = {} # master_daemon functions funcs_by_name['add'] = add funcs_by_name['check_connectivity'] = check_connectivity funcs_by_name['get_trex_path'] = get_trex_path funcs_by_name['update_trex'] = update_trex # trex_daemon_server funcs_by_name['is_trex_daemon_running'] = trex_daemon_server.is_running funcs_by_name['restart_trex_daemon'] = trex_daemon_server.restart funcs_by_name['start_trex_daemon'] = trex_daemon_server.start funcs_by_name['stop_trex_daemon'] = trex_daemon_server.stop # stl rpc proxy funcs_by_name['is_stl_rpc_proxy_running'] = stl_rpc_proxy.is_running funcs_by_name['restart_stl_rpc_proxy'] = stl_rpc_proxy.restart funcs_by_name['start_stl_rpc_proxy'] = stl_rpc_proxy.start funcs_by_name['stop_stl_rpc_proxy'] = stl_rpc_proxy.stop try: set_logger() register_socket(master_daemon.tag) server = SimpleJSONRPCServer(('0.0.0.0', master_daemon.port)) logging.info('Started master daemon (port %s)' % master_daemon.port) for name, func in funcs_by_name.items(): server.register_function(partial(log_usage, name, func), name) server.register_function(server.funcs.keys, 'get_methods') # should be last signal.signal(signal.SIGTSTP, stop_handler) # ctrl+z signal.signal(signal.SIGTERM, stop_handler) # kill server.serve_forever() except KeyboardInterrupt: logging.info('Ctrl+C') except Exception as e: logging.error('Closing due to error: %s' % e)
def start(self): """This method fires up the daemon server based on initialized parameters of the class""" # initialize the server instance with given resources register_socket('trex_daemon_server') try: print "Firing up TRex REST daemon @ port {trex_port} ...\n".format( trex_port = self.trex_daemon_port ) logger.info("Firing up TRex REST daemon @ port {trex_port} ...".format( trex_port = self.trex_daemon_port )) logger.info("current working dir is: {0}".format(self.TREX_PATH) ) logger.info("current files dir is : {0}".format(self.trex_files_path) ) logger.debug("Starting TRex server. Registering methods to process.") logger.info(self.get_trex_version(base64 = False)) self.server = SimpleJSONRPCServer( (self.trex_host, self.trex_daemon_port) ) except socket.error as e: if e.errno == errno.EADDRINUSE: logger.error("TRex server requested address already in use. Aborting server launching.") print "TRex server requested address already in use. Aborting server launching." raise socket.error(errno.EADDRINUSE, "TRex daemon requested address already in use. " "Server launch aborted. Please make sure no other process is " "using the desired server properties.") elif isinstance(e, socket.gaierror) and e.errno == -3: # handling Temporary failure in name resolution exception raise socket.gaierror(-3, "Temporary failure in name resolution.\n" "Make sure provided hostname has DNS resolving.") else: raise # set further functionality and peripherals to server instance self.server.register_function(self.add) self.server.register_function(self.cancel_reservation) self.server.register_function(self.connectivity_check) self.server.register_function(self.connectivity_check, 'check_connectivity') # alias self.server.register_function(self.force_trex_kill) self.server.register_function(self.get_file) self.server.register_function(self.get_files_list) self.server.register_function(self.get_files_path) self.server.register_function(self.get_running_info) self.server.register_function(self.get_running_status) self.server.register_function(self.get_trex_cmds) self.server.register_function(self.get_trex_daemon_log) self.server.register_function(self.get_trex_log) self.server.register_function(self.get_trex_version) self.server.register_function(self.is_reserved) self.server.register_function(self.is_running) self.server.register_function(self.kill_all_trexes) self.server.register_function(self.push_file) self.server.register_function(self.reserve_trex) self.server.register_function(self.start_trex) self.server.register_function(self.stop_trex) self.server.register_function(self.wait_until_kickoff_finish) signal.signal(signal.SIGTSTP, self.stop_handler) signal.signal(signal.SIGTERM, self.stop_handler) try: self.zmq_monitor.start() self.server.serve_forever() except KeyboardInterrupt: logger.info("Daemon shutdown request detected." ) finally: self.zmq_monitor.join() # close ZMQ monitor thread resources self.server.shutdown()
def start_master_daemon_func(): register_socket(master_daemon.tag) server = SimpleJSONRPCServer(('0.0.0.0', master_daemon.port)) print('Started master daemon (port %s)' % master_daemon.port) server.register_function(add) server.register_function(check_connectivity) server.register_function(get_trex_path) server.register_function(update_trex) # trex_daemon_server server.register_function(trex_daemon_server.is_running, 'is_trex_daemon_running') server.register_function(trex_daemon_server.restart, 'restart_trex_daemon') server.register_function(trex_daemon_server.start, 'start_trex_daemon') server.register_function(trex_daemon_server.stop, 'stop_trex_daemon') # stl rpc proxy server.register_function(stl_rpc_proxy.is_running, 'is_stl_rpc_proxy_running') server.register_function(stl_rpc_proxy.restart, 'restart_stl_rpc_proxy') server.register_function(stl_rpc_proxy.start, 'start_stl_rpc_proxy') server.register_function(stl_rpc_proxy.stop, 'stop_stl_rpc_proxy') server.register_function(server.funcs.keys, 'get_methods') # should be last server.serve_forever()
def start(self): """This method fires up the daemon server based on initialized parameters of the class""" # initialize the server instance with given resources register_socket('trex_daemon_server') try: print("Firing up TRex REST daemon @ port {trex_port} ...\n".format( trex_port=self.trex_daemon_port)) logger.info( "Firing up TRex REST daemon @ port {trex_port} ...".format( trex_port=self.trex_daemon_port)) logger.info("current working dir is: {0}".format(self.TREX_PATH)) logger.info("current files dir is : {0}".format( self.trex_files_path)) logger.debug( "Starting TRex server. Registering methods to process.") logger.info(self.get_trex_version(base64=False)) self.server = SimpleJSONRPCServer( (self.trex_host, self.trex_daemon_port)) except socket.error as e: if e.errno == errno.EADDRINUSE: logger.error( "TRex server requested address already in use. Aborting server launching." ) print( "TRex server requested address already in use. Aborting server launching." ) raise socket.error( errno.EADDRINUSE, "TRex daemon requested address already in use. " "Server launch aborted. Please make sure no other process is " "using the desired server properties.") elif isinstance(e, socket.gaierror) and e.errno == -3: # handling Temporary failure in name resolution exception raise socket.gaierror( -3, "Temporary failure in name resolution.\n" "Make sure provided hostname has DNS resolving.") else: raise # set further functionality and peripherals to server instance self.server.register_function(self.add) self.server.register_function(self.cancel_reservation) self.server.register_function(self.connectivity_check) self.server.register_function(self.connectivity_check, 'check_connectivity') # alias self.server.register_function(self.force_trex_kill) self.server.register_function(self.get_file) self.server.register_function(self.get_files_list) self.server.register_function(self.get_files_path) self.server.register_function(self.get_running_info) self.server.register_function(self.get_running_status) self.server.register_function(self.get_trex_cmds) self.server.register_function(self.get_trex_config) self.server.register_function(self.get_trex_daemon_log) self.server.register_function(self.get_trex_log) self.server.register_function(self.get_trex_version) self.server.register_function(self.is_reserved) self.server.register_function(self.is_running) self.server.register_function(self.kill_all_trexes) self.server.register_function(self.push_file) self.server.register_function(self.reserve_trex) self.server.register_function(self.start_trex) self.server.register_function(self.stop_trex) self.server.register_function(self.wait_until_kickoff_finish) signal.signal(signal.SIGTSTP, self.stop_handler) signal.signal(signal.SIGTERM, self.stop_handler) try: self.zmq_monitor.start() self.server.serve_forever() except KeyboardInterrupt: logger.info("Daemon shutdown request detected.") finally: self.zmq_monitor.join() # close ZMQ monitor thread resources self.server.shutdown()