/** * @see CoreServerService#connectAgent(ConnectAgentRequest) */ @Override public ConnectAgentResults connectAgent(ConnectAgentRequest request) throws AgentRegistrationException, AgentNotSupportedException { String agentName = request.getAgentName(); AgentVersion agentVersion = request.getAgentVersion(); log.info("Agent [" + agentName + "][" + agentVersion + "] would like to connect to this server"); AgentVersionCheckResults agentVersionCheckResults = getAgentManager().isAgentVersionSupported(agentVersion); if (!agentVersionCheckResults.isSupported()) { log.warn("Agent [" + agentName + "][" + agentVersion + "] would like to connect to this server but it is not supported"); throw new AgentNotSupportedException("Agent [" + agentName + "] is an unsupported agent: " + agentVersion); } Agent agent = getAgentManager().getAgentByName(agentName); if (agent == null) { throw new AgentRegistrationException("Agent [" + agentName + "] is not registered"); } Server server = getServerManager().getServer(); agent.setServer(server); agent.setLastAvailabilityPing(Long.valueOf(System.currentTimeMillis())); getAgentManager().updateAgent(agent); getAlertConditionCacheManager().reloadCachesForAgent(agent.getId()); getPartitionEventManager().auditPartitionEvent(getSubjectManager().getOverlord(), PartitionEventType.AGENT_CONNECT, agentName + " - " + server.getName()); log.info("Agent [" + agentName + "] has connected to this server at " + new Date()); return new ConnectAgentResults(System.currentTimeMillis(), agent.isBackFilled(), agentVersionCheckResults.getLatestAgentVersion()); }