diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/x2gobroker/brokers/base_broker.py index 3de1426..297f6ee 100644 --- a/x2gobroker/brokers/base_broker.py +++ b/x2gobroker/brokers/base_broker.py @@ -1381,15 +1381,26 @@ class X2GoBroker(object): server_port = profile['sshport'] # try to retrieve a remote broker agent - remote_agent = self.get_remote_agent(profile_id) + remote_agents = self.get_all_remote_agents(profile_id) + print(remote_agents) + remote_agent = {} # check for already running sessions for the given user (if any is given) session_list = [] - if remote_agent and username: - try: - success, session_list = x2gobroker.agent.list_sessions(username=username, remote_agent=remote_agent) - except x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException: - session_list = [] + if remote_agents and username: + for agent in remote_agents: + try: + _, session_list_temp = x2gobroker.agent.list_sessions(username=username, remote_agent=agent) + print(session_list_temp) + if len(session_list_temp) > 0: + # session list is not empty + session_list.extend(session_list_temp) + remote_agent = agent + except x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException: + session_list_temp = [] + remote_agents.remove(agent) + if len(session_list) == 0 and len(remote_agents) > 0: + remote_agent = random.choice(remote_agents) session_info = None