/** * Update an Agent's setup information. When an agent's 'setup' is called after it has already * been setup, the connection information (i.e. address to contact, port, etc.) are updated but * the same agent token is kept. */ private UpdateAgent_result cmdUpdateAgent(LatherContext ctx, UpdateAgent_args args) throws LatherRemoteException { Agent agent; String errRes; try { checkUserCanManageAgent(ctx, args.getUser(), args.getPword(), "update"); } catch (PermissionException exc) { return new UpdateAgent_result("Permission denied"); } validateAgent(ctx, args.getAgentToken(), false); String agentIP = args.getAgentIP(); int port = args.getAgentPort(); boolean isNewTransportAgent = args.isNewTransportAgent(); boolean unidirectional = args.isUnidirectional(); boolean acceptValidation = args.isAcceptCertificates(); try { agent = agentManager.getAgent(args.getAgentToken()); if ((errRes = testAgentConn( agentIP, port, agent.getAuthToken(), isNewTransportAgent, unidirectional, acceptValidation)) != null) { return new UpdateAgent_result(errRes); } log.info( "Updating agent at " + agentIP + ":" + port + "" + "; new transport=" + isNewTransportAgent + "; unidirectional=" + unidirectional); if (isNewTransportAgent) { agentManager.updateNewTransportAgent(args.getAgentToken(), agentIP, port, unidirectional); } else { agentManager.updateLegacyAgent(args.getAgentToken(), agentIP, port); } } catch (AgentNotFoundException exc) { return new UpdateAgent_result("Agent not found for update"); } return new UpdateAgent_result(); }