summaryrefslogtreecommitdiffstats
path: root/orchestrator
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2018-02-26 16:59:57 +0100
committerHåkon Hallingstad <hakon@oath.com>2018-02-26 16:59:57 +0100
commit1921322a0b816a3a58a566848384dccb72ffd16f (patch)
treef63181b36468e61358b0285c4827eaa09fb56651 /orchestrator
parent92258b807a6ec3ce6a6ac1b728a47d437f071c17 (diff)
Support reporting UP for node admin outside zone app
If the nodeAdminInContainer ConfigserverConfig has been set, with this PR, the service monitor will always report the node admin container service as UP, thereby avoiding issues related to standalone node admin seemingly being down when not running as part of the application. This postpones checking /status/v1/health for later.
Diffstat (limited to 'orchestrator')
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceResource.java19
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceResourceTest.java19
2 files changed, 24 insertions, 14 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceResource.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceResource.java
index c16256df73d..7f0227df4c5 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceResource.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceResource.java
@@ -6,6 +6,7 @@ import com.yahoo.container.jaxrs.annotation.Component;
import com.yahoo.jrt.slobrok.api.Mirror;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
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.ServiceStatus;
@@ -15,7 +16,7 @@ import com.yahoo.vespa.orchestrator.OrchestratorUtil;
import com.yahoo.vespa.orchestrator.restapi.wire.SlobrokEntryResponse;
import com.yahoo.vespa.orchestrator.status.HostStatus;
import com.yahoo.vespa.orchestrator.status.StatusService;
-import com.yahoo.vespa.service.monitor.SlobrokMonitorManager;
+import com.yahoo.vespa.service.monitor.SlobrokApi;
import javax.inject.Inject;
import javax.ws.rs.GET;
@@ -48,16 +49,16 @@ public class InstanceResource {
public static final String DEFAULT_SLOBROK_PATTERN = "**";
private final StatusService statusService;
- private final SlobrokMonitorManager slobrokMonitorManager;
+ private final SlobrokApi slobrokApi;
private final InstanceLookupService instanceLookupService;
@Inject
public InstanceResource(@Component InstanceLookupService instanceLookupService,
@Component StatusService statusService,
- @Component SlobrokMonitorManager slobrokMonitorManager) {
+ @Component SlobrokApi slobrokApi) {
this.instanceLookupService = instanceLookupService;
this.statusService = statusService;
- this.slobrokMonitorManager = slobrokMonitorManager;
+ this.slobrokApi = slobrokApi;
}
@GET
@@ -96,7 +97,7 @@ public class InstanceResource {
pattern = DEFAULT_SLOBROK_PATTERN;
}
- List<Mirror.Entry> entries = slobrokMonitorManager.lookup(applicationId, pattern);
+ List<Mirror.Entry> entries = slobrokApi.lookup(applicationId, pattern);
return entries.stream()
.map(entry -> new SlobrokEntryResponse(entry.getName(), entry.getSpec()))
.collect(Collectors.toList());
@@ -107,11 +108,16 @@ public class InstanceResource {
@Produces(MediaType.APPLICATION_JSON)
public ServiceStatus getServiceStatus(
@PathParam("instanceId") String instanceId,
+ @QueryParam("clusterId") String clusterIdString,
@QueryParam("serviceType") String serviceTypeString,
@QueryParam("configId") String configIdString) {
ApplicationInstanceReference reference = parseInstanceId(instanceId);
ApplicationId applicationId = OrchestratorUtil.toApplicationId(reference);
+ if (clusterIdString == null) {
+ throwBadRequest("Missing clusterId query parameter");
+ }
+
if (serviceTypeString == null) {
throwBadRequest("Missing serviceType query parameter");
}
@@ -120,10 +126,11 @@ public class InstanceResource {
throwBadRequest("Missing configId query parameter");
}
+ ClusterId clusterId = new ClusterId(clusterIdString);
ServiceType serviceType = new ServiceType(serviceTypeString);
ConfigId configId = new ConfigId(configIdString);
- return slobrokMonitorManager.getStatus(applicationId, serviceType, configId);
+ return slobrokApi.getStatus(applicationId, clusterId, serviceType, configId);
}
static ApplicationInstanceReference parseInstanceId(String instanceIdString) {
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceResourceTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceResourceTest.java
index 42b5b70ab55..d7255327ba6 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceResourceTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceResourceTest.java
@@ -4,11 +4,12 @@ package com.yahoo.vespa.orchestrator.resources;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.jrt.slobrok.api.Mirror;
+import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.orchestrator.restapi.wire.SlobrokEntryResponse;
-import com.yahoo.vespa.service.monitor.SlobrokMonitorManager;
+import com.yahoo.vespa.service.monitor.SlobrokApi;
import org.junit.Test;
import javax.ws.rs.WebApplicationException;
@@ -27,12 +28,13 @@ public class InstanceResourceTest {
private static final List<Mirror.Entry> ENTRIES = Arrays.asList(
new Mirror.Entry("name1", "spec1"),
new Mirror.Entry("name2", "spec2"));
+ private static final ClusterId CLUSTER_ID = new ClusterId("cluster-id");
- private final SlobrokMonitorManager slobrokMonitorManager = mock(SlobrokMonitorManager.class);
+ private final SlobrokApi slobrokApi = mock(SlobrokApi.class);
private final InstanceResource resource = new InstanceResource(
null,
null,
- slobrokMonitorManager);
+ slobrokApi);
@Test
public void testGetSlobrokEntries() throws Exception {
@@ -49,31 +51,32 @@ public class InstanceResourceTest {
ServiceType serviceType = new ServiceType("serviceType");
ConfigId configId = new ConfigId("configId");
ServiceStatus serviceStatus = ServiceStatus.UP;
- when(slobrokMonitorManager.getStatus(APPLICATION_ID, serviceType, configId))
+ when(slobrokApi.getStatus(APPLICATION_ID, CLUSTER_ID, serviceType, configId))
.thenReturn(serviceStatus);
ServiceStatus actualServiceStatus = resource.getServiceStatus(
APPLICATION_INSTANCE_REFERENCE,
+ CLUSTER_ID.s(),
serviceType.s(),
configId.s());
- verify(slobrokMonitorManager).getStatus(APPLICATION_ID, serviceType, configId);
+ verify(slobrokApi).getStatus(APPLICATION_ID, CLUSTER_ID, serviceType, configId);
assertEquals(serviceStatus, actualServiceStatus);
}
@Test(expected = WebApplicationException.class)
public void testBadRequest() {
- resource.getServiceStatus(APPLICATION_INSTANCE_REFERENCE, null, null);
+ resource.getServiceStatus(APPLICATION_INSTANCE_REFERENCE, CLUSTER_ID.s(), null, null);
}
private void testGetSlobrokEntriesWith(String pattern, String expectedLookupPattern)
throws Exception{
- when(slobrokMonitorManager.lookup(APPLICATION_ID, expectedLookupPattern))
+ when(slobrokApi.lookup(APPLICATION_ID, expectedLookupPattern))
.thenReturn(ENTRIES);
List<SlobrokEntryResponse> response = resource.getSlobrokEntries(
APPLICATION_INSTANCE_REFERENCE,
pattern);
- verify(slobrokMonitorManager).lookup(APPLICATION_ID, expectedLookupPattern);
+ verify(slobrokApi).lookup(APPLICATION_ID, expectedLookupPattern);
ObjectMapper mapper = new ObjectMapper();
String actualJson = mapper.writeValueAsString(response);