aboutsummaryrefslogtreecommitdiffstats
path: root/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java')
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java33
1 files changed, 27 insertions, 6 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
index 67899849def..3b3e3ce7eea 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.component.annotation.Inject;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
import com.yahoo.jrt.slobrok.api.Mirror;
import com.yahoo.restapi.RestApi;
@@ -27,6 +28,7 @@ import com.yahoo.vespa.orchestrator.status.HostInfos;
import com.yahoo.vespa.orchestrator.status.StatusService;
import com.yahoo.vespa.service.manager.MonitorManager;
import com.yahoo.vespa.service.manager.UnionMonitorManager;
+import com.yahoo.vespa.service.model.ApplicationInstanceGenerator;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
import com.yahoo.vespa.service.monitor.SlobrokApi;
@@ -54,18 +56,21 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
private final SlobrokApi slobrokApi;
private final MonitorManager rootManager;
private final ServiceMonitor serviceMonitor;
+ private final Zone zone;
@Inject
public InstanceRequestHandler(ThreadedHttpRequestHandler.Context context,
ServiceMonitor serviceMonitor,
StatusService statusService,
SlobrokApi slobrokApi,
- UnionMonitorManager rootManager) {
+ UnionMonitorManager rootManager,
+ Zone zone) {
super(context, InstanceRequestHandler::createRestApiDefinition);
this.statusService = statusService;
this.slobrokApi = slobrokApi;
this.rootManager = rootManager;
this.serviceMonitor = serviceMonitor;
+ this.zone = zone;
}
private static RestApi createRestApiDefinition(InstanceRequestHandler self) {
@@ -89,13 +94,16 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
.build();
}
- private List<ApplicationInstanceReference> getAllInstances(RestApi.RequestContext context) {
- return serviceMonitor.getAllApplicationInstanceReferences().stream().sorted().toList();
+ private List<ApplicationId> getAllInstances(RestApi.RequestContext context) {
+ return serviceMonitor.getAllApplicationInstanceReferences().stream()
+ .map(OrchestratorUtil::toApplicationId)
+ .sorted()
+ .toList();
}
private InstanceStatusResponse getInstance(RestApi.RequestContext context) {
String instanceIdString = context.pathParameters().getStringOrThrow("instanceId");
- ApplicationInstanceReference instanceId = parseInstanceId(instanceIdString);
+ ApplicationInstanceReference instanceId = getApplicationInstanceReference(instanceIdString);
ApplicationInstance applicationInstance
= serviceMonitor.getApplication(OrchestratorUtil.toApplicationId(instanceId))
@@ -113,6 +121,19 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
return InstanceStatusResponse.create(applicationInstance, hostStatusMap);
}
+ // Gets ApplicationInstanceReference when string might be an ApplicationId (tenant:application:instance) or
+ // an ApplicationInstanceReference (tenant:application:instance:environment:region:instance).
+ // TODO: Accept only strings on the form tenant:application:instance when all users have been
+ // updated and return ApplicationId instead of ApplicationInstanceReference.
+ private ApplicationInstanceReference getApplicationInstanceReference(String instanceIdString) {
+ try {
+ ApplicationId applicationId = ApplicationId.fromSerializedForm(instanceIdString);
+ return ApplicationInstanceGenerator.toApplicationInstanceReference(applicationId, zone);
+ } catch (IllegalArgumentException e) {
+ return parseInstanceId(instanceIdString);
+ }
+ }
+
private WireHostInfo hostInfoToWire(HostInfo hostInfo) {
String hostStatusString = hostInfo.status().asString();
String suspendedSinceUtcOrNull = hostInfo.suspendedSince().map(Instant::toString).orElse(null);
@@ -122,7 +143,7 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
private List<SlobrokEntryResponse> getSlobrokEntries(RestApi.RequestContext context) {
String instanceId = context.pathParameters().getStringOrThrow("instanceId");
String pattern = context.queryParameters().getString("pattern").orElse(null);
- ApplicationInstanceReference reference = parseInstanceId(instanceId);
+ ApplicationInstanceReference reference = getApplicationInstanceReference(instanceId);
ApplicationId applicationId = OrchestratorUtil.toApplicationId(reference);
if (pattern == null) {
@@ -140,7 +161,7 @@ public class InstanceRequestHandler extends RestApiRequestHandler<InstanceReques
String clusterIdString = context.queryParameters().getStringOrThrow("clusterId");
String serviceTypeString = context.queryParameters().getStringOrThrow("serviceType");
String configIdString = context.queryParameters().getStringOrThrow("configId");
- ApplicationInstanceReference reference = parseInstanceId(instanceId);
+ ApplicationInstanceReference reference = getApplicationInstanceReference(instanceId);
ApplicationId applicationId = OrchestratorUtil.toApplicationId(reference);
ClusterId clusterId = new ClusterId(clusterIdString);