diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-08-19 08:46:49 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-08-19 08:46:49 +0200 |
commit | 794eeedcdc7dc8ead48294ec25a03c8ff0a7757d (patch) | |
tree | fca19ae0b2ab99fbb16137bcbfcb333d36225f38 | |
parent | f1dc3e6fca4a573872165e91e433587ccb3f9a01 (diff) |
Move logic away from handler
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java | 22 | ||||
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java | 27 |
2 files changed, 26 insertions, 23 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 eb268546580..88e252baf34 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 @@ -63,6 +63,7 @@ import com.yahoo.vespa.config.server.tenant.Tenant; import com.yahoo.vespa.config.server.tenant.TenantRepository; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.curator.Lock; +import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.orchestrator.Orchestrator; import java.io.File; @@ -90,6 +91,7 @@ import java.util.stream.Collectors; import static com.yahoo.config.model.api.container.ContainerServiceType.CLUSTERCONTROLLER_CONTAINER; import static com.yahoo.config.model.api.container.ContainerServiceType.CONTAINER; import static com.yahoo.config.model.api.container.ContainerServiceType.LOGSERVER_CONTAINER; +import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk; import static com.yahoo.vespa.curator.Curator.CompletionWaiter; import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.getFileReferencesOnDisk; import static com.yahoo.vespa.config.server.tenant.TenantRepository.HOSTED_VESPA_TENANT; @@ -596,6 +598,26 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye return false; } + public Optional<String> getApplicationPackageReference(ApplicationId applicationId) { + Optional<String> applicationPackage = Optional.empty(); + RemoteSession session = getActiveSession(applicationId); + if (session != null) { + FileReference applicationPackageReference = session.getApplicationPackageReference(); + File downloadDirectory = new File(Defaults.getDefaults().underVespaHome(configserverConfig().fileReferencesDir())); + if (applicationPackageReference != null && ! fileReferenceExistsOnDisk(downloadDirectory, applicationPackageReference)) + applicationPackage = Optional.of(applicationPackageReference.value()); + } + return applicationPackage; + } + + public List<Version> getAllVersions(ApplicationId applicationId) { + Optional<ApplicationSet> applicationSet = getCurrentActiveApplicationSet(getTenant(applicationId), applicationId); + if (applicationSet.isEmpty()) + return List.of(); + else + return applicationSet.get().getAllVersions(applicationId); + } + // ---------------- Convergence ---------------------------------------------------------------- public HttpResponse checkServiceForConfigConvergence(ApplicationId applicationId, String hostAndPort, URI uri, 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 8426d6b56cf..0a805cc6b21 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 @@ -3,7 +3,6 @@ package com.yahoo.vespa.config.server.http.v2; import com.google.inject.Inject; import com.yahoo.component.Version; -import com.yahoo.config.FileReference; import com.yahoo.config.application.api.ApplicationFile; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; @@ -18,18 +17,13 @@ import com.yahoo.jdisc.application.BindingMatch; import com.yahoo.jdisc.application.UriPattern; import com.yahoo.slime.Cursor; import com.yahoo.vespa.config.server.ApplicationRepository; -import com.yahoo.vespa.config.server.application.ApplicationSet; import com.yahoo.vespa.config.server.http.ContentHandler; import com.yahoo.vespa.config.server.http.ContentRequest; 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.session.RemoteSession; -import com.yahoo.vespa.config.server.tenant.Tenant; -import com.yahoo.vespa.defaults.Defaults; -import java.io.File; import java.io.IOException; import java.time.Duration; import java.util.List; @@ -38,8 +32,6 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk; - /** * Operations on applications (delete, wait for config convergence, restart, application content etc.) * @@ -169,21 +161,10 @@ public class ApplicationHandler extends HttpHandler { } GetApplicationResponse getApplicationResponse(ApplicationId applicationId) { - Tenant tenant = applicationRepository.getTenant(applicationId); - Optional<ApplicationSet> applicationSet = applicationRepository.getCurrentActiveApplicationSet(tenant, applicationId); - String applicationPackage = ""; - RemoteSession session = applicationRepository.getActiveSession(applicationId); - if (session != null) { - FileReference applicationPackageReference = session.getApplicationPackageReference(); - File downloadDirectory = new File(Defaults.getDefaults().underVespaHome(applicationRepository.configserverConfig().fileReferencesDir())); - if (applicationPackageReference != null && ! fileReferenceExistsOnDisk(downloadDirectory, applicationPackageReference)) - applicationPackage = applicationPackageReference.value(); - } - return new GetApplicationResponse(Response.Status.OK, applicationRepository.getApplicationGeneration(applicationId), - applicationSet.get().getAllVersions(applicationId), - applicationPackage); + applicationRepository.getAllVersions(applicationId), + applicationRepository.getApplicationPackageReference(applicationId)); } @Override @@ -346,10 +327,10 @@ public class ApplicationHandler extends HttpHandler { } private static class GetApplicationResponse extends JSONResponse { - GetApplicationResponse(int status, long generation, List<Version> modelVersions, String applicationPackageReference) { + GetApplicationResponse(int status, long generation, List<Version> modelVersions, Optional<String> applicationPackageReference) { super(status); object.setLong("generation", generation); - object.setString("applicationPackageFileReference", applicationPackageReference); + object.setString("applicationPackageFileReference", applicationPackageReference.orElse("")); Cursor modelVersionArray = object.setArray("modelVersions"); modelVersions.forEach(version -> modelVersionArray.addString(version.toFullString())); } |