@Override public UUID getId() { return slotStatus.getId(); }
public UUID apply(SlotStatus input) { return input.getId(); } };
public String apply(SlotStatus input) { return input.getId().toString(); } };
private void updateStatus(SlotStatus slotStatus) { Preconditions.checkArgument(slotStatus.getId().equals(this.slotStatus.getId()), String.format("Agent returned status for slot %s, but the status for slot %s was expected", slotStatus.getId(), this.slotStatus.getId())); this.slotStatus = slotStatus; if (agent != null) { agent.setSlotStatus(slotStatus); } }
public AgentStatus changeSlotStatus(SlotStatus slotStatus) { Map<UUID, SlotStatus> slots = newHashMap(this.slots); if (slotStatus.getState() != TERMINATED) { slots.put(slotStatus.getId(), slotStatus); } else { slots.remove(slotStatus.getId()); } return new AgentStatus(agentId, state, instanceId, internalUri, externalUri, location, instanceType, slots.values(), resources); }
@Override public UUID getId() { return slotStatus.getId(); }
@Override public UUID getId() { return slotStatus.getId(); }
public static String createSlotsVersion(Iterable<SlotStatus> slots) { Preconditions.checkNotNull(slots, "slots is null"); // canonicalize slot order Map<UUID, String> slotVersions = new TreeMap<UUID, String>(); for (SlotStatus slot : slots) { slotVersions.put(slot.getId(), slot.getVersion()); } return DigestUtils.md5Hex(slotVersions.values().toString()); }
public AgentStatus changeAllSlotsState(SlotLifecycleState slotState) { Map<UUID, SlotStatus> slots = newHashMap(this.slots); for (SlotStatus slotStatus : slots.values()) { // set all slots to unknown state slots.put(slotStatus.getId(), slotStatus.changeState(slotState)); } return new AgentStatus(agentId, state, instanceId, internalUri, externalUri, location, instanceType, slots.values(), resources); }
@Override public SlotStatus apply(SlotStatus slotStatus) { if (slotStatus.getState() != SlotLifecycleState.UNKNOWN) { stateManager.setExpectedState(new ExpectedSlotStatus(slotStatus.getId(), slotStatus.getState(), slotStatus.getAssignment())); } else { stateManager.deleteExpectedState(slotStatus.getId()); } return slotStatus; } }));
@Override public SlotStatus apply(RemoteSlot slot) { SlotStatus slotStatus = slot.terminate(); if (slotStatus.getState() == TERMINATED) { stateManager.deleteExpectedState(slotStatus.getId()); } return slotStatus; } });
@Test public void testGetSlotStatus() { SlotStatus slotStatus = agent.install(APPLE_INSTALLATION); URI requestUri = URI.create("http://localhost/v1/agent/slot/" + slotStatus.getId().toString()); Response response = resource.getSlotStatus(slotStatus.getId(), MockUriInfo.from(requestUri)); assertEquals(response.getStatus(), Response.Status.OK.getStatusCode()); assertEquals(response.getEntity(), SlotStatusRepresentation.from(slotStatus)); assertEquals(response.getMetadata().get(AIRSHIP_AGENT_VERSION_HEADER).get(0), agent.getAgentStatus().getVersion()); assertEquals(response.getMetadata().get(AIRSHIP_SLOT_VERSION_HEADER).get(0), slotStatus.getVersion()); assertNull(response.getMetadata().get("Content-Type")); // content type is set by jersey based on @Produces }
@Test(expectedExceptions = NullPointerException.class) public void testAssignNullAssignment() { SlotStatus slotStatus = agent.install(APPLE_INSTALLATION); resource.assign(null, null, slotStatus.getId(), null); }
private void assertUpgrade(SlotStatus slotStatus, String agentVersion, String slotVersion) { Response response = resource.assign(agentVersion, slotVersion, slotStatus.getId(), UPGRADE); assertEquals(response.getStatus(), Status.OK.getStatusCode()); SlotStatusRepresentation actualStatus = (SlotStatusRepresentation) response.getEntity(); SlotStatus expectedStatus = slotStatus.changeAssignment(slotStatus.getState(), APPLE_V2, slotStatus.getResources()); assertEquals(actualStatus, SlotStatusRepresentation.from(expectedStatus)); assertEquals(actualStatus.toSlotStatus(null), expectedStatus); assertEquals(response.getMetadata().get(AIRSHIP_AGENT_VERSION_HEADER).get(0), agent.getAgentStatus().getVersion()); assertEquals(response.getMetadata().get(AIRSHIP_SLOT_VERSION_HEADER).get(0), expectedStatus.getVersion()); assertNull(response.getMetadata().get("Content-Type")); // content type is set by jersey based on @Produces } }
@BeforeMethod public void resetState() { for (Slot slot : agent.getAllSlots()) { if (slot.status().getAssignment() != null) { slot.stop(); } agent.terminateSlot(slot.getId()); } assertTrue(agent.getAllSlots().isEmpty()); slot = agent.getSlot(agent.install(APPLE_INSTALLATION).getId()); }
private URI urlFor(SlotStatus slotStatus, String... pathParts) { HttpUriBuilder builder = uriBuilderFrom(server.getBaseUrl()) .appendPath("/v1/agent/slot/") .appendPath(slotStatus.getId().toString()); for (String pathPart : pathParts) { builder.appendPath(pathPart); } return builder.build(); } }
private URI urlFor(SlotStatus slotStatus, String... pathParts) { HttpUriBuilder builder = uriBuilderFrom(server.getBaseUrl()) .appendPath("/v1/agent/slot/") .appendPath(slotStatus.getId().toString()); for (String pathPart : pathParts) { builder.appendPath(pathPart); } return builder.build(); } }
@Test public void testAssignRestarts() { SlotStatus slotStatus = agent.install(APPLE_INSTALLATION); slotStatus = agent.getSlot(slotStatus.getId()).start(); assertEquals(slotStatus.getState(), RUNNING); assertUpgrade(slotStatus, agent.getAgentStatus().getVersion(), slotStatus.getVersion()); }
@Test public void testAssignRestarts() { SlotStatus slotStatus = agent.install(APPLE_INSTALLATION); slotStatus = agent.getSlot(slotStatus.getId()).start(); assertEquals(slotStatus.getState(), RUNNING); assertUpgrade(slotStatus, agent.getAgentStatus().getVersion(), slotStatus.getVersion()); }