private ListenableFuture<Instance> getAgentInstance(URI agentUri) { URI uri = uriBuilderFrom(agentUri).replacePath("/v1/agent").build(); Request request = prepareGet().setUri(uri).build(); SettableFuture<Instance> future = SettableFuture.create(); Futures.addCallback( httpClient.executeAsync(request, validate(createJsonResponseHandler(agentCodec))), agentStatusCallback(future, agentUri)); return future; }
@Test public void testEncodesPath() { URI uri = uriBuilder() .scheme("http") .host("www.example.com") .replacePath("/`#%^{}|[]<>?áéíóú") .build(); assertEquals(uri.toASCIIString(), "http://www.example.com/%60%23%25%5E%7B%7D%7C%5B%5D%3C%3E%3F%C3%A1%C3%A9%C3%AD%C3%B3%C3%BA"); }
@Test public void testWithPath() { URI uri = uriBuilder() .scheme("http") .host("www.example.com") .replacePath("/a/b/c") .build(); assertEquals(uri.toASCIIString(), "http://www.example.com/a/b/c"); }
@Test public void testReplacePathWithRelative() { URI uri = uriBuilder() .scheme("http") .host("www.example.com") .replacePath("a/b/c") .build(); assertEquals(uri.toASCIIString(), "http://www.example.com/a/b/c"); }
@Test public void testAddParameterMultivalued() { URI uri = uriBuilder() .scheme("http") .host("www.example.com") .replacePath("/") .addParameter("k1", "1", "2", "0") .build(); assertEquals(uri.toASCIIString(), "http://www.example.com/?k1=1&k1=2&k1=0"); }
@Test public void testFull() { URI uri = uriBuilder() .scheme("http") .host("www.example.com") .port(8081) .replacePath("/a/b/c") .replaceParameter("k", "1") .build(); assertEquals(uri.toASCIIString(), "http://www.example.com:8081/a/b/c?k=1"); }
@Override public List<CoordinatorStatusRepresentation> showCoordinators(CoordinatorFilter coordinatorFilter) { URI uri = coordinatorFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("v1/admin/coordinator")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); List<CoordinatorStatusRepresentation> coordinators = client.execute(request, createJsonResponseHandler(COORDINATORS_CODEC)); return coordinators; }
@Override public List<CoordinatorStatusRepresentation> showCoordinators(CoordinatorFilter coordinatorFilter) { URI uri = coordinatorFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("v1/admin/coordinator")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); List<CoordinatorStatusRepresentation> coordinators = client.execute(request, createJsonResponseHandler(COORDINATORS_CODEC)); return coordinators; }
@Override public List<SlotStatusRepresentation> resetExpectedState(SlotFilter slotFilter, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot/expected-state")); Request.Builder requestBuilder = Request.Builder.prepareDelete().setUri(uri); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public List<SlotStatusRepresentation> resetExpectedState(SlotFilter slotFilter, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot/expected-state")); Request.Builder requestBuilder = Request.Builder.prepareDelete().setUri(uri); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public List<SlotStatusRepresentation> terminate(SlotFilter slotFilter, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot")); Request.Builder requestBuilder = Request.Builder.prepareDelete().setUri(uri); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public CommanderResponse<List<AgentStatusRepresentation>> showAgents(AgentFilter agentFilter) { URI uri = agentFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("v1/admin/agent")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); JsonResponse<List<AgentStatusRepresentation>> response = client.execute(request, createFullJsonResponseHandler(AGENTS_CODEC)); if (response.getStatusCode() != 200) { throw new RuntimeException(response.getStatusMessage()); } return CommanderResponse.createCommanderResponse(response.getHeader(AIRSHIP_AGENTS_VERSION_HEADER), response.getValue()); }
@Override public List<SlotStatusRepresentation> terminate(SlotFilter slotFilter, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot")); Request.Builder requestBuilder = Request.Builder.prepareDelete().setUri(uri); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public AgentStatusRepresentation terminateAgent(String agentId) { URI uri = uriBuilderFrom(coordinatorUri).replacePath("v1/admin/agent").build(); Request request = Request.Builder.prepareDelete() .setUri(uri) .setBodyGenerator(textBodyGenerator(agentId)) .build(); AgentStatusRepresentation agents = client.execute(request, createJsonResponseHandler(AGENT_CODEC)); return agents; }
@Override public List<SlotStatusRepresentation> install(AgentFilter agentFilter, int count, Assignment assignment, String expectedVersion) { URI uri = agentFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot").addParameter("limit", String.valueOf(count))); Request.Builder requestBuilder = Request.Builder.preparePost() .setUri(uri) .setHeader("Content-Type", "application/json") .setBodyGenerator(jsonBodyGenerator(ASSIGNMENT_CODEC, AssignmentRepresentation.from(assignment))); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public AgentStatusRepresentation terminateAgent(String agentId) { URI uri = uriBuilderFrom(coordinatorUri).replacePath("v1/admin/agent").build(); Request request = Request.Builder.prepareDelete() .setUri(uri) .setBodyGenerator(textBodyGenerator(agentId)) .build(); AgentStatusRepresentation agents = client.execute(request, createJsonResponseHandler(AGENT_CODEC)); return agents; }
@Override public CommanderResponse<List<SlotStatusRepresentation>> show(SlotFilter slotFilter) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); JsonResponse<List<SlotStatusRepresentation>> response = client.execute(request, createFullJsonResponseHandler(SLOTS_CODEC)); return createCommanderResponse(response.getHeader(AIRSHIP_SLOTS_VERSION_HEADER), response.getValue()); }
@Override public CommanderResponse<List<SlotStatusRepresentation>> show(SlotFilter slotFilter) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot")); Request request = Request.Builder.prepareGet() .setUri(uri) .build(); JsonResponse<List<SlotStatusRepresentation>> response = client.execute(request, createFullJsonResponseHandler(SLOTS_CODEC)); return createCommanderResponse(response.getHeader(AIRSHIP_SLOTS_VERSION_HEADER), response.getValue()); }
@Override public List<SlotStatusRepresentation> setState(SlotFilter slotFilter, SlotLifecycleState state, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot/lifecycle")); Request.Builder requestBuilder = Request.Builder.preparePut() .setUri(uri) .setBodyGenerator(textBodyGenerator(state.name())); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }
@Override public List<SlotStatusRepresentation> setState(SlotFilter slotFilter, SlotLifecycleState state, String expectedVersion) { URI uri = slotFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("/v1/slot/lifecycle")); Request.Builder requestBuilder = Request.Builder.preparePut() .setUri(uri) .setBodyGenerator(textBodyGenerator(state.name())); if (expectedVersion != null) { requestBuilder.setHeader(AIRSHIP_SLOTS_VERSION_HEADER, expectedVersion); } List<SlotStatusRepresentation> slots = client.execute(requestBuilder.build(), createJsonResponseHandler(SLOTS_CODEC)); return slots; }