public AgentInstance findElasticAgent(final String elasticAgentId, final String elasticPluginId) { Collection<AgentInstance> values = agentInstances.values().stream().filter(agentInstance -> { if (!agentInstance.isElastic()) { return false; } ElasticAgentMetadata elasticAgentMetadata = agentInstance.elasticAgentMetadata(); return elasticAgentMetadata.elasticAgentId().equals(elasticAgentId) && elasticAgentMetadata.elasticPluginId().equals(elasticPluginId); }).collect(Collectors.toList()); if (values.size() == 0) { return null; } if (values.size() > 1) { Collection<String> uuids = values.stream().map(AgentInstance::getUuid).collect(Collectors.toList()); throw new IllegalStateException(String.format("Found multiple agents with the same elastic agent id [%s]", StringUtils.join(uuids, ", "))); } return values.iterator().next(); } }
public static AgentMetadata toAgentMetadata(ElasticAgentMetadata obj) { return new AgentMetadata(obj.elasticAgentId(), obj.agentState().toString(), obj.buildState().toString(), obj.configStatus().toString()); }
public LinkedMultiValueMap<String, ElasticAgentMetadata> allElasticAgentsGroupedByPluginId() { LinkedMultiValueMap<String, ElasticAgentMetadata> map = new LinkedMultiValueMap<>(); for (Map.Entry<String, AgentInstance> entry : agentInstances.entrySet()) { AgentInstance agentInstance = entry.getValue(); if (agentInstance.isElastic()) { ElasticAgentMetadata metadata = agentInstance.elasticAgentMetadata(); map.add(metadata.elasticPluginId(), metadata); } } return map; }
public ElasticAgentMetadata elasticAgentMetadata() { ElasticAgentRuntimeInfo runtimeInfo = (ElasticAgentRuntimeInfo) this.agentRuntimeInfo; return new ElasticAgentMetadata(getUuid(), runtimeInfo.getElasticAgentId(), runtimeInfo.getElasticPluginId(), this.agentRuntimeInfo.getRuntimeStatus(), getAgentConfigStatus()); }
public boolean shouldAssignWork(ElasticAgentMetadata metadata, String environment, ElasticProfile elasticProfile, JobIdentifier identifier) { GoPluginDescriptor pluginDescriptor = pluginManager.getPluginDescriptorFor(metadata.elasticPluginId()); Map<String, String> configuration = elasticProfile.getConfigurationAsMap(true); if (!StringUtils.equals(elasticProfile.getPluginId(), metadata.elasticPluginId())) { return false; } return elasticAgentPluginRegistry.shouldAssignWork(pluginDescriptor, toAgentMetadata(metadata), environment, configuration, identifier); }
public void jobCompleted(JobInstance job) { AgentInstance agentInstance = agentService.findAgent(job.getAgentUuid()); if (!agentInstance.isElastic()) { LOGGER.debug("Agent {} is not elastic. Skipping further execution.", agentInstance.getUuid()); return; } if (job.isAssignedToAgent()) { jobCreationTimeMap.remove(job.getId()); } String pluginId = agentInstance.elasticAgentMetadata().elasticPluginId(); String elasticAgentId = agentInstance.elasticAgentMetadata().elasticAgentId(); elasticAgentPluginRegistry.reportJobCompletion(pluginId, elasticAgentId, job.getIdentifier()); } }
@Test public void syncConfigShouldUpdateElasticAgentRuntimeInfo() { AgentInstance agent = AgentInstanceMother.idle(); AgentConfig agentConfig = new AgentConfig(agent.getUuid(), agent.getHostname(), agent.getIpAddress()); agentConfig.setElasticAgentId("i-123456"); agentConfig.setElasticPluginId("com.example.aws"); assertFalse(agent.isElastic()); agent.syncConfig(agentConfig); assertTrue(agent.isElastic()); assertEquals("i-123456", agent.elasticAgentMetadata().elasticAgentId()); assertEquals("com.example.aws", agent.elasticAgentMetadata().elasticPluginId()); }
.add("elastic_plugin_id", agentInstance.elasticAgentMetadata().elasticPluginId()) .add("elastic_agent_id", agentInstance.elasticAgentMetadata().elasticAgentId()); } else { outputWriter.addChildList("resources", sortedResources(agentInstance));