diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-05-02 11:53:51 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-05-02 11:53:51 +0200 |
commit | 7e1972e4d8cfd85944cdea941844ec0efe1a04af (patch) | |
tree | 4a466b56c8f0bb0cc022f58c7a72fa99a7c4eca0 /configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java | |
parent | 3158c62af78e2d0b5870219beed5a4a10a4406b1 (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.java | 13 |
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) { |