public String apply(AgentStatus input) { return input.getAgentId(); } };
@Override public boolean apply(@Nullable AgentStatus agentStatus) { return agentStatus != null && agentStatus.getAgentId() != null && uuid != null && uuid.equals(agentStatus.getAgentId()); } }
public AgentStatus getAgentByAgentId(String agentId) { for (RemoteAgent remoteAgent : agents.values()) { AgentStatus status = remoteAgent.status(); if (agentId.equals(status.getAgentId())) { return status; } } return null; }
public static String createAgentsVersion(Iterable<AgentStatus> agents) { Preconditions.checkNotNull(agents, "agents is null"); // canonicalize agent order Map<String, String> agentVersions = new TreeMap<String, String>(); for (AgentStatus agent : agents) { agentVersions.put(agent.getAgentId() + agent.getInstanceId(), agent.getVersion()); } return DigestUtils.md5Hex(agentVersions.values().toString()); }
public AgentStatus terminateAgent(String agentId) { RemoteAgent agent = null; for (Iterator<Entry<String, RemoteAgent>> iterator = agents.entrySet().iterator(); iterator.hasNext(); ) { Entry<String, RemoteAgent> entry = iterator.next(); if (entry.getValue().status().getAgentId().equals(agentId)) { iterator.remove(); agent = entry.getValue(); break; } } if (agent == null) { return null; } if (!agent.getSlots().isEmpty()) { agents.putIfAbsent(agent.status().getInstanceId(), agent); throw new IllegalStateException("Cannot terminate agent that has slots: " + agentId); } provisioner.terminateAgents(ImmutableList.of(agentId)); return agent.status().changeState(AgentLifecycleState.TERMINATED); }
@VisibleForTesting public void updateAllAgents() { Set<String> instanceIds = newHashSet(); for (Instance instance : this.provisioner.listAgents()) { instanceIds.add(instance.getInstanceId()); RemoteAgent remoteAgent = remoteAgentFactory.createRemoteAgent(instance, instance.getInternalUri() != null ? AgentLifecycleState.ONLINE : AgentLifecycleState.OFFLINE); RemoteAgent existing = agents.putIfAbsent(instance.getInstanceId(), remoteAgent); if (existing != null) { existing.setInternalUri(instance.getInternalUri()); } } // add provisioning agents to provisioner list for (RemoteAgent remoteAgent : agents.values()) { if (remoteAgent.status().getState() == AgentLifecycleState.PROVISIONING) { instanceIds.add(remoteAgent.status().getAgentId()); } } // remove any agents not in the provisioner list agents.keySet().retainAll(instanceIds); List<ServiceDescriptor> serviceDescriptors = serviceInventory.getServiceInventory(transform(getAllSlots(), getSlotStatus())); for (RemoteAgent remoteAgent : agents.values()) { remoteAgent.updateStatus(); remoteAgent.setServiceInventory(serviceDescriptors); } }
public AgentStatusRepresentation create(AgentStatus status) { Builder<SlotStatusRepresentation> builder = ImmutableList.builder(); for (SlotStatus slot : status.getSlotStatuses()) { builder.add(SlotStatusRepresentation.from(slot, Integer.MAX_VALUE, repository)); } return new AgentStatusRepresentation( status.getAgentId(), safeTruncate(status.getAgentId(), shortIdPrefixSize), status.getInstanceId(), status.getState(), status.getInternalUri(), status.getExternalUri(), status.getLocation(), trimLeadingSegments(status.getLocation(), '/', commonLocationParts), status.getInstanceType(), builder.build(), status.getResources(), status.getVersion()); } }
@Override public AgentStatus status() { AgentStatus agentStatus = agent.getAgentStatus(); return new AgentStatus(agentStatus.getAgentId(), agentStatus.getState(), instanceId, agentStatus.getInternalUri(), agentStatus.getExternalUri(), agentStatus.getLocation(), instanceType, agentStatus.getSlotStatuses(), agentStatus.getResources()); }