aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-05-02 11:53:51 +0200
committerJon Bratseth <bratseth@oath.com>2018-05-02 11:53:51 +0200
commit7e1972e4d8cfd85944cdea941844ec0efe1a04af (patch)
tree4a466b56c8f0bb0cc022f58c7a72fa99a7c4eca0 /configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
parent3158c62af78e2d0b5870219beed5a4a10a4406b1 (diff)
Don't require an existing model when preparing
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
index d7b84d75b5c..0d9346101e9 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
@@ -15,6 +15,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.Version;
import com.yahoo.log.LogLevel;
+import com.yahoo.vespa.config.server.application.Application;
import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.config.server.application.PermanentApplicationPackage;
@@ -89,17 +90,14 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
FileDistributionProvider fileDistributionProvider = fileDistributionFactory.createProvider(context.getServerDBSessionDir());
// Use empty on non-hosted systems, use already allocated hosts if available, create connection to a host provisioner otherwise
- Optional<HostProvisioner> hostProvisioner = createHostProvisioner(allocatedHosts);
- Optional<Model> previousModel = currentActiveApplicationSet
- .map(set -> set.getForVersionOrLatest(Optional.of(modelVersion), now).getModel());
ModelContext modelContext = new ModelContextImpl(
applicationPackage,
- previousModel,
+ modelOf(modelVersion),
permanentApplicationPackage.applicationPackage(),
logger,
configDefinitionRepo,
fileDistributionProvider.getFileRegistry(),
- hostProvisioner,
+ createHostProvisioner(allocatedHosts),
properties,
getAppDir(applicationPackage),
new com.yahoo.component.Version(modelVersion.toString()),
@@ -112,6 +110,11 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
return new PreparedModelsBuilder.PreparedModelResult(modelVersion, result.getModel(), fileDistributionProvider, result.getConfigChangeActions());
}
+ private Optional<Model> modelOf(Version version) {
+ if ( ! currentActiveApplicationSet.isPresent()) return Optional.empty();
+ return currentActiveApplicationSet.get().get(version).map(Application::getModel);
+ }
+
// This method is an excellent demonstration of what happens when one is too liberal with Optional
// -bratseth, who had to write the below :-\
private Optional<HostProvisioner> createHostProvisioner(Optional<AllocatedHosts> allocatedHosts) {