summaryrefslogtreecommitdiffstats
path: root/orchestrator
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2017-10-26 10:59:06 +0200
committerHåkon Hallingstad <hakon@oath.com>2017-10-26 10:59:06 +0200
commitf314723a485674937d3952ab5f7b62e6c63ab16e (patch)
tree42709b6182cf7f9decb8d0d2233bf252a6614f2e /orchestrator
parentc4907cf034d0a744a0cac2d49a68ef6d2a83c76f (diff)
Undo incompatible change to HostResource::getHost
Diffstat (limited to 'orchestrator')
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostResource.java7
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java68
2 files changed, 67 insertions, 8 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostResource.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostResource.java
index 198f291266b..52994db2b88 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostResource.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostResource.java
@@ -24,6 +24,7 @@ import javax.ws.rs.InternalServerErrorException;
import javax.ws.rs.NotFoundException;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@@ -40,14 +41,16 @@ public class HostResource implements HostApi {
private static final Logger log = Logger.getLogger(HostResource.class.getName());
private final Orchestrator orchestrator;
+ private final UriInfo uriInfo;
@Inject
- public HostResource(@Component Orchestrator orchestrator) {
+ public HostResource(@Component Orchestrator orchestrator, @Context UriInfo uriInfo) {
this.orchestrator = orchestrator;
+ this.uriInfo = uriInfo;
}
@Override
- public GetHostResponse getHost(UriInfo uriInfo, String hostNameString) {
+ public GetHostResponse getHost(String hostNameString) {
HostName hostName = new HostName(hostNameString);
try {
Host host = orchestrator.getHost(hostName);
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
index 0ae385bc717..65309440aee 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostResourceTest.java
@@ -4,8 +4,15 @@ package com.yahoo.vespa.orchestrator.resources;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
+import com.yahoo.vespa.applicationmodel.ClusterId;
+import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.HostName;
+import com.yahoo.vespa.applicationmodel.ServiceCluster;
+import com.yahoo.vespa.applicationmodel.ServiceInstance;
+import com.yahoo.vespa.applicationmodel.ServiceStatus;
+import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.applicationmodel.TenantId;
+import com.yahoo.vespa.orchestrator.Host;
import com.yahoo.vespa.orchestrator.InstanceLookupService;
import com.yahoo.vespa.orchestrator.OrchestrationException;
import com.yahoo.vespa.orchestrator.Orchestrator;
@@ -16,6 +23,7 @@ import com.yahoo.vespa.orchestrator.policy.HostStateChangeDeniedException;
import com.yahoo.vespa.orchestrator.policy.Policy;
import com.yahoo.vespa.orchestrator.restapi.wire.BatchHostSuspendRequest;
import com.yahoo.vespa.orchestrator.restapi.wire.BatchOperationResult;
+import com.yahoo.vespa.orchestrator.restapi.wire.GetHostResponse;
import com.yahoo.vespa.orchestrator.restapi.wire.PatchHostRequest;
import com.yahoo.vespa.orchestrator.restapi.wire.PatchHostResponse;
import com.yahoo.vespa.orchestrator.restapi.wire.UpdateHostResponse;
@@ -28,6 +36,9 @@ import org.junit.Test;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.InternalServerErrorException;
import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+import java.net.URI;
import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
@@ -137,10 +148,12 @@ public class HostResourceTest {
SERVICE_MONITOR_CONVERGENCE_LATENCY_SECONDS
);
+ private final UriInfo uriInfo = mock(UriInfo.class);
+
@Test
public void returns_200_on_success() throws Exception {
HostResource hostResource =
- new HostResource(alwaysAllowOrchestrator);
+ new HostResource(alwaysAllowOrchestrator, uriInfo);
final String hostName = "hostname";
@@ -171,7 +184,7 @@ public class HostResourceTest {
public void throws_404_when_host_unknown() throws Exception {
try {
HostResource hostResource =
- new HostResource(hostNotFoundOrchestrator);
+ new HostResource(hostNotFoundOrchestrator, uriInfo);
hostResource.suspend("hostname");
fail();
} catch (WebApplicationException w) {
@@ -244,7 +257,7 @@ public class HostResourceTest {
SERVICE_MONITOR_CONVERGENCE_LATENCY_SECONDS);
try {
- HostResource hostResource = new HostResource(alwaysRejectResolver);
+ HostResource hostResource = new HostResource(alwaysRejectResolver, uriInfo);
hostResource.suspend("hostname");
fail();
} catch (WebApplicationException w) {
@@ -275,7 +288,7 @@ public class HostResourceTest {
@Test(expected = BadRequestException.class)
public void patch_state_may_throw_bad_request() {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostResource hostResource = new HostResource(orchestrator);
+ HostResource hostResource = new HostResource(orchestrator, uriInfo);
String hostNameString = "hostname";
PatchHostRequest request = new PatchHostRequest();
@@ -287,7 +300,7 @@ public class HostResourceTest {
@Test
public void patch_works() throws OrchestrationException {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostResource hostResource = new HostResource(orchestrator);
+ HostResource hostResource = new HostResource(orchestrator, uriInfo);
String hostNameString = "hostname";
PatchHostRequest request = new PatchHostRequest();
@@ -301,7 +314,7 @@ public class HostResourceTest {
@Test(expected = InternalServerErrorException.class)
public void patch_handles_exception_in_orchestrator() throws OrchestrationException {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostResource hostResource = new HostResource(orchestrator);
+ HostResource hostResource = new HostResource(orchestrator, uriInfo);
String hostNameString = "hostname";
PatchHostRequest request = new PatchHostRequest();
@@ -310,4 +323,47 @@ public class HostResourceTest {
doThrow(new OrchestrationException("error")).when(orchestrator).setNodeStatus(new HostName(hostNameString), HostStatus.NO_REMARKS);
hostResource.patch(hostNameString, request);
}
+
+ @Test
+ public void getHost_works() throws Exception {
+ Orchestrator orchestrator = mock(Orchestrator.class);
+ HostResource hostResource = new HostResource(orchestrator, uriInfo);
+
+ HostName hostName = new HostName("hostname");
+
+ UriBuilder baseUriBuilder = mock(UriBuilder.class);
+ when(uriInfo.getBaseUriBuilder()).thenReturn(baseUriBuilder);
+ when(baseUriBuilder.path(any(String.class))).thenReturn(baseUriBuilder);
+ when(baseUriBuilder.path(any(Class.class))).thenReturn(baseUriBuilder);
+ URI uri = new URI("https://foo.com/bar");
+ when(baseUriBuilder.build()).thenReturn(uri);
+
+ ServiceInstance serviceInstance = new ServiceInstance(
+ new ConfigId("configId"),
+ hostName,
+ ServiceStatus.UP);
+ ServiceCluster serviceCluster = new ServiceCluster(
+ new ClusterId("clusterId"),
+ new ServiceType("serviceType"),
+ Collections.singleton(serviceInstance));
+ serviceInstance.setServiceCluster(serviceCluster);
+
+ Host host = new Host(
+ hostName,
+ HostStatus.ALLOWED_TO_BE_DOWN,
+ new ApplicationInstanceReference(
+ new TenantId("tenantId"),
+ new ApplicationInstanceId("applicationId")),
+ Collections.singletonList(serviceInstance));
+ when(orchestrator.getHost(hostName)).thenReturn(host);
+ GetHostResponse response = hostResource.getHost(hostName.s());
+ assertEquals("https://foo.com/bar", response.applicationUrl());
+ assertEquals("hostname", response.hostname());
+ assertEquals("ALLOWED_TO_BE_DOWN", response.state());
+ assertEquals(1, response.services().size());
+ assertEquals("clusterId", response.services().get(0).clusterId);
+ assertEquals("configId", response.services().get(0).configId);
+ assertEquals("UP", response.services().get(0).serviceStatus);
+ assertEquals("serviceType", response.services().get(0).serviceType);
+ }
}