summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-09-05 08:53:26 +0200
committerGitHub <noreply@github.com>2019-09-05 08:53:26 +0200
commita5902f682cfb98d02406a1ebcf44256627711ba8 (patch)
tree3001fea98b7b1aa80e4fe9cbfb3c1771d04a8c9f /configserver
parent9b0764d8bf510fc9ed5e13939ce9012f182a51f2 (diff)
parent079fac866bf089d3f3dfeb20c64cadfd4593cc1b (diff)
Merge pull request #10430 from vespa-engine/hmusum/add-config-model-versions-to-response
Add config model versions to response
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRequestHandler.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
6 files changed, 24 insertions, 8 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index c8b99e2c3a0..0f5540b8a12 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -405,6 +405,14 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return getApplication(applicationId).getApplicationGeneration();
}
+ public List<Version> getApplicationVersions(ApplicationId applicationId) {
+ Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found");
+ long sessionId = getSessionIdForApplication(tenant, applicationId);
+ RemoteSession session = tenant.getRemoteSessionRepo().getSession(sessionId);
+ return session.applicationSet().getAllApplicationVersions();
+ }
+
public void restart(ApplicationId applicationId, HostFilter hostFilter) {
hostProvisioner.ifPresent(provisioner -> provisioner.restart(applicationId, hostFilter));
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
index 41119077b28..7c429ed9dcd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
@@ -96,4 +96,8 @@ public final class ApplicationSet {
return new ArrayList<>(applications.values());
}
+ public List<Version> getAllApplicationVersions() {
+ return new ArrayList<>(applications.keySet());
+ }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index e18c6ad6c56..c9657175eaf 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -13,6 +13,7 @@ import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.application.BindingMatch;
+import com.yahoo.slime.Cursor;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.http.ContentHandler;
import com.yahoo.vespa.config.server.http.ContentRequest;
@@ -20,9 +21,9 @@ import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.HttpHandler;
import com.yahoo.vespa.config.server.http.JSONResponse;
import com.yahoo.vespa.config.server.http.NotFoundException;
-import com.yahoo.vespa.config.server.tenant.Tenant;
import java.time.Duration;
+import java.util.List;
import java.util.Optional;
/**
@@ -112,7 +113,9 @@ public class ApplicationHandler extends HttpHandler {
return new ApplicationSuspendedResponse(applicationRepository.isSuspended(applicationId));
}
- return new GetApplicationResponse(Response.Status.OK, applicationRepository.getApplicationGeneration(applicationId));
+ return new GetApplicationResponse(Response.Status.OK,
+ applicationRepository.getApplicationGeneration(applicationId),
+ applicationRepository.getApplicationVersions(applicationId));
}
@Override
@@ -244,9 +247,11 @@ public class ApplicationHandler extends HttpHandler {
}
private static class GetApplicationResponse extends JSONResponse {
- GetApplicationResponse(int status, long generation) {
+ GetApplicationResponse(int status, long generation, List<Version> versions) {
super(status);
object.setLong("generation", generation);
+ Cursor versionsArray = object.setArray("configModelVersions");
+ versions.forEach(version -> versionsArray.addString(version.toFullString()));
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
index 26f437920ad..b8320ea865e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
@@ -134,4 +134,7 @@ public class RemoteSession extends Session {
transaction.close();
}
+ public ApplicationSet applicationSet() {
+ return applicationSet;
+ }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRequestHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRequestHandler.java
index 2f9a5eb9277..5926f64cf87 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRequestHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRequestHandler.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.component.Version;
-import com.yahoo.concurrent.StripedExecutor;
import com.yahoo.config.FileReference;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.TenantName;
@@ -20,13 +19,11 @@ import com.yahoo.vespa.config.server.application.ApplicationMapper;
import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.application.TenantApplications;
import com.yahoo.vespa.config.server.application.VersionDoesNotExistException;
-import com.yahoo.vespa.config.server.host.HostRegistries;
import com.yahoo.vespa.config.server.host.HostRegistry;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.rpc.ConfigResponseFactory;
-import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.Lock;
import java.time.Clock;
@@ -35,7 +32,6 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.ExecutorService;
import static java.util.stream.Collectors.toSet;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index 41db57ab1e0..ee9ab5c3af5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -270,7 +270,7 @@ public class ApplicationHandlerTest {
private void assertApplicationGeneration(String url, long expectedGeneration) throws IOException {
HttpResponse response = createApplicationHandler().handle(HttpRequest.createTestRequest(url, com.yahoo.jdisc.http.HttpRequest.Method.GET));
- HandlerTest.assertHttpStatusCodeAndMessage(response, 200, "{\"generation\":" + expectedGeneration + "}");
+ HandlerTest.assertHttpStatusCodeAndMessage(response, 200, "{\"generation\":" + expectedGeneration + ",\"configModelVersions\":[\"7.0.0\"]}");
}
private void assertApplicationExists(ApplicationId applicationId, Zone zone) throws IOException {