def start_all_agents_thread(self): logger.info("Launching Hestia's agents") for agent in self.config.get_agents(): agent.start_command_thread() logger.info("Hestia's agents launched") self.agents_threads_are_started = True
def stop_all_agents_thread(self): logger.info("Stoping Hestia's agents") for agent in self.config.get_agents(): agent.stop_command_thread() logger.info("Hestia's agents stopped") self.agents_threads_are_started = False
def configuration_error_handler(self): self.config.start_reconection() self.stop_all_agents_thread() logger.error("Connection failed !") while (self.config.have_to_be_waited()): logger.info("Connection lost Hestia is trying to reconnect") self.delay() if not self.config.can_run(): self.server_is_running = False
def set_up_databases(self): agents_in_db_list = self.board_model.get_list_agents(self.configuration.board['name']) for db_agent in agents_in_db_list: agent_find = False for config_file_agent in self.configuration.agents_datas: if config_file_agent["name"] == db_agent: agent_find = True if not agent_find: logger.info(db_agent + " not found removing from database") self.board_model.remove_agent_data(self.configuration.board['name'], db_agent)
def set_up_databases(self): agents_in_db_list = self.board_model.get_list_agents( self.configuration.board['name']) for db_agent in agents_in_db_list: agent_find = False for config_file_agent in self.configuration.agents_datas: if config_file_agent["name"] == db_agent: agent_find = True if not agent_find: logger.info(db_agent + " not found removing from database") self.board_model.remove_agent_data( self.configuration.board['name'], db_agent)
def try_to_reconnect(self): number_of_reconnection_attempt = 6 delay = 10 for i in range(0, number_of_reconnection_attempt): if self.server_can_run: self.is_trying_to_reconected = False pass try: self.server_can_run = self.all_ressources_are_available() except: self.is_trying_to_reconected = True if not self.server_can_run: logger.error("Reconnection failed !") time.sleep(delay) else: logger.info("Hestia is coming back !")
def run(self): logger.info("Hestia is running !") while self.server_is_running: if not self.agents_threads_are_started: self.start_all_agents_thread() try: if self.config.all_ressources_are_available(): self.delay() else: self.configuration_error_handler() except KeyboardInterrupt: self.server_is_running = False except: logger.error("[CRITICAL ERROR] ") self.server_is_running = False logger.info("Hestia is quitting !") sys.exit(0)
def init_attr(self, json_configuration_file): self.configuration = configuration_loader(json_configuration_file) if self.configuration.is_loaded: logger.info("Initialize communication with Hestia city") self.board_model = board_model(self.configuration.mongo_datas) logger.info("Communication with Hestia city established") self.set_up_databases() logger.info("Initialisation of the Hestia agent's") self.agents = [] self.initialize_agents() logger.info("Hestia agent's ready") self.server_can_run = True
from src.server.server.server_core import server_core from src.commons.utils.logger import logger import sys if __name__ == "__main__": args = sys.argv[1:] #try: if len(args) >= 2: logger.set_level(args[1]) elif len(args) <= 0: logger.error("[MAIN] Please add configuration file path to launch command parameters") logger.info("Hello !") server = server_core(args[0]) #start all the threads server.run() logger.info("Bye !") #except: # logger.error("[CRITICAL_ERROR] Hestia is stoping !]") # exit(1) exit(0)
from src.server.server.server_core import server_core from src.commons.utils.logger import logger import sys if __name__ == "__main__": args = sys.argv[1:] #try: if len(args) >= 2: logger.set_level(args[1]) elif len(args) <= 0: logger.error( "[MAIN] Please add configuration file path to launch command parameters" ) logger.info("Hello !") server = server_core(args[0]) #start all the threads server.run() logger.info("Bye !") #except: # logger.error("[CRITICAL_ERROR] Hestia is stoping !]") # exit(1) exit(0)