/** * Add the agent system data model share request on cache. * * @param id agent id in db. */ @Override public void requestShareAgentSystemDataModel(Long id) { AgentInfo agent = getAgent(id, false); if (agent == null) { return; } agentRequestCache.put( extractRegionFromAgentRegion(agent.getRegion()) + "|" + createAgentKey(agent), new ClustedAgentRequest(agent.getIp(), agent.getName(), SHARE_AGENT_SYSTEM_DATA_MODEL)); }
/** * Stop agent. In cluster mode, it queues the agent stop request to agentRequestCache. * * @param id agent id in db */ @Override public void stopAgent(Long id) { AgentInfo agent = getAgent(id, false); if (agent == null) { return; } agentRequestCache.put( extractRegionFromAgentRegion(agent.getRegion()) + "|" + createAgentKey(agent), new ClustedAgentRequest(agent.getIp(), agent.getName(), STOP_AGENT)); }
/** * Get a agent on given id. * * @param id agent id * @return agent */ public AgentInfo getAgent(long id) { AgentInfo agentInfo = agentRepository.findOne(id); if (agentInfo == null) { return null; } AgentControllerIdentityImplementation agentIdentity = agentManager.getAgentIdentityByIp(agentInfo.getIp()); if (agentIdentity != null) { agentInfo.setStatus(agentManager.getAgentState(agentIdentity)); agentInfo.setPort(agentManager.getAgentConnectingPort(agentIdentity)); agentInfo.setHostName(agentIdentity.getName()); agentInfo.setRegion(agentIdentity.getRegion()); agentInfo.setAgentIdentity(agentIdentity); } return agentInfo; }
@CacheEvict(allEntries = true, value = "agents") private AgentInfo creatAgentInfo( AgentControllerIdentityImplementation agentIdentity, List<AgentInfo> agents) { AgentInfo agentInfo = new AgentInfo(); for (AgentInfo each : agents) { if (each != null && StringUtils.equals(each.getIp(), agentIdentity.getIp())) { agentInfo = each; break; } } if (!StringUtils.equals(agentInfo.getHostName(), agentIdentity.getName()) || !StringUtils.equals(agentInfo.getRegion(), agentIdentity.getRegion())) { agentInfo.setHostName(agentIdentity.getName()); agentInfo.setRegion(agentIdentity.getRegion()); agentInfo.setIp(agentIdentity.getIp()); agentInfo = agentRepository.save(agentInfo); } agentInfo.setPort(agentManager.getAgentConnectingPort(agentIdentity)); agentInfo.setStatus(agentManager.getAgentState(agentIdentity)); // need to save agent info into DB, like ip and port maybe changed. return agentInfo; }