aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-10-04 13:34:41 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-10-04 13:34:41 +0200
commit15c1d7d9af882a799b5e453ca669b9a3a22ca7e6 (patch)
tree1aa7cd5af0b991d292972c36d62a862fc8352aae
parent9d4509f508ab0e4e1cdaabc4b0b4f5e2d514669b (diff)
Wire in DeployState as param
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java12
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java4
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java6
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java46
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java32
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java32
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java16
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java27
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java132
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java43
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java41
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java69
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java21
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java20
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java4
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilderTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java5
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java17
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java6
82 files changed, 515 insertions, 449 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
index eea0b16b8e1..c39eb15b027 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
@@ -64,18 +64,6 @@ public final class ConfigModelContext {
/**
* Create an application context from a parent producer and an id.
- *
- * @param parent the parent to be used for the config model.
- * @param producerId the id to be used for the config model.
- * @return a model context that can be passed to a model.
- */
- public static ConfigModelContext create(VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder,
- AbstractConfigProducer parent, String producerId) {
- return create(parent.getRoot().getDeployState(), vespaModel, configModelRepoAdder, parent, producerId);
- }
-
- /**
- * Create an application context from a parent producer and an id.
*
* @param deployState the global deploy state for this model
* @param parent the parent to be used for the config model
diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
index 113262d0734..ff89cd8e41a 100644
--- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
@@ -82,7 +82,7 @@ public class AdminModel extends ConfigModel {
modelContext.getDeployState().getFileRegistry(),
properties.multitenant(),
properties.configServerSpecs());
- model.admin = domBuilder.build(parent, adminElement);
+ model.admin = domBuilder.build(modelContext.getDeployState(), parent, adminElement);
// TODO: Is required since other models depend on admin.
if (parent instanceof ApplicationConfigProducerRoot) {
((ApplicationConfigProducerRoot)parent).setupAdmin(model.admin);
@@ -111,7 +111,7 @@ public class AdminModel extends ConfigModel {
properties.multitenant(),
properties.configServerSpecs(),
model.getContainerModels());
- model.admin = domBuilder.build(parent, adminElement);
+ model.admin = domBuilder.build(modelContext.getDeployState(), parent, adminElement);
// TODO: Is required since other models depend on admin.
if (parent instanceof ApplicationConfigProducerRoot) {
((ApplicationConfigProducerRoot)parent).setupAdmin(model.admin);
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
index 8836e081267..71ee5d148a8 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
@@ -63,12 +63,6 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce
return (deployState != null) && deployState.isHosted();
}
- protected static DeployState deployStateFrom(AbstractConfigProducer parent) {
- if (parent == null) return null;
- if (parent.getRoot() == null) return null;
- return parent.getRoot().getDeployState();
- }
-
/**
* Creates a new AbstractConfigProducer with the given parent and subId.
* This constructor will add the resulting producer to the children of parent.
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
index 29d151857cc..aae1b6445c0 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
@@ -111,7 +111,6 @@ public class MockRoot extends AbstractConfigProducerRoot {
throw new RuntimeException("Missing builder");
}
- @Override
public DeployState getDeployState() {
return deployState;
}
@@ -148,7 +147,7 @@ public class MockRoot extends AbstractConfigProducerRoot {
Document doc = XmlHelper.getDocumentBuilder().parse(new InputSource(new StringReader(servicesXml)));
setAdmin(new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT, deployState.getFileRegistry(),
false, new ArrayList<>()).
- build(this, XML.getChildren(doc.getDocumentElement(), "admin").get(0)));
+ build(deployState, this, XML.getChildren(doc.getDocumentElement(), "admin").get(0)));
} catch (SAXException | IOException e) {
throw new RuntimeException(e);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
index c686f22392a..2d4b8e9201f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
@@ -39,11 +39,6 @@ public interface ConfigProducerRoot extends ConfigProducer {
* @return A config instance of the given type
*/
public <CONFIGTYPE extends ConfigInstance> CONFIGTYPE getConfig(Class<CONFIGTYPE> clazz, String configId);
-
- /**
- * Get the global deploy state of this model.
- */
- DeployState getDeployState();
FileDistributor getFileDistributor();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index 5c5bbba301f..16335a435b9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -10,7 +10,6 @@ import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -142,7 +141,7 @@ public class HostResource implements Comparable<HostResource> {
int port = wantedPort + i;
if (portDB.containsKey(port)) {
AbstractService s = (AbstractService)portDB.get(port);
- s.getRoot().getDeployState().getDeployLogger().log(Level.WARNING, service.getServiceName() +" cannot reserve port " + port + " on " +
+ s.getRoot().deployLogger().log(Level.WARNING, service.getServiceName() +" cannot reserve port " + port + " on " +
this + ": Already reserved for " + s.getServiceName() +
". Using default port range from " + serviceBasePort);
return false;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
index dc7efefe24b..0ae2fb32284 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
@@ -181,16 +181,16 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
this.deployState = deployState;
configModelRepo.readConfigModels(deployState, this, builder, root, configModelRegistry);
this.deployState = null;
- addServiceClusters(deployState.getApplicationPackage(), builder);
+ addServiceClusters(deployState, builder);
this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs()); // must happen after the two lines above
setupRouting(deployState);
this.fileDistributor = root.getFileDistributionConfigProducer().getFileDistributor();
getAdmin().addPerHostServices(hostSystem.getHosts(), deployState);
- this.deployLogger = null;
freezeModelTopology();
root.prepare(configModelRepo);
configModelRepo.prepareConfigModels(deployState);
validateWrapExceptions();
+ this.deployLogger = null;
}
else { // create a model with no services instantiated and the given file distributor
this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
@@ -222,8 +222,8 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
}
/** Adds generic application specific clusters of services */
- private void addServiceClusters(ApplicationPackage app, VespaModelBuilder builder) {
- serviceClusters.addAll(builder.getClusters(app, this));
+ private void addServiceClusters(DeployState deployState, VespaModelBuilder builder) {
+ serviceClusters.addAll(builder.getClusters(deployState, this));
}
/**
@@ -502,7 +502,6 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
return ret;
}
- @Override
public DeployState getDeployState() {
if (deployState == null)
throw new IllegalStateException("Cannot call getDeployState() once model has been built");
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
index 1ac682558d5..863ddef8187 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
@@ -72,14 +72,11 @@ public class Admin extends AbstractConfigProducer implements Serializable {
private FileDistributionConfigProducer fileDistribution;
private final boolean multitenant;
- public Admin(AbstractConfigProducer parent,
- Monitoring monitoring,
- Metrics metrics,
- Map<String, MetricsConsumer> legacyMetricsConsumers,
- boolean multitenant,
- FileDistributionConfigProducer fileDistributionConfigProducer) {
+ public Admin(AbstractConfigProducer parent, Monitoring monitoring, Metrics metrics,
+ Map<String, MetricsConsumer> legacyMetricsConsumers, boolean multitenant,
+ FileDistributionConfigProducer fileDistributionConfigProducer,boolean isHostedVespa) {
super(parent, "admin");
- this.isHostedVespa = stateIsHosted(deployStateFrom(parent));
+ this.isHostedVespa = isHostedVespa;
this.monitoring = monitoring;
this.metrics = metrics;
this.legacyMetricsConsumers = legacyMetricsConsumers;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
index 31e2c2e7a3b..ef180119ac0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
@@ -6,7 +6,6 @@ import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.BundlesConfig;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
-import com.yahoo.container.handler.ThreadpoolConfig;
import com.yahoo.log.LogLevel;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.search.config.QrStartConfig;
@@ -36,8 +35,8 @@ public class ClusterControllerContainer extends Container implements
private final Set<String> bundles = new TreeSet<>();
- public ClusterControllerContainer(AbstractConfigProducer parent, int index, boolean runStandaloneZooKeeper) {
- super(parent, "" + index, index);
+ public ClusterControllerContainer(AbstractConfigProducer parent, int index, boolean runStandaloneZooKeeper, boolean isHosted) {
+ super(parent, "" + index, index, isHosted);
this.index = index;
addHandler(
new Handler(new ComponentModel(new BundleInstantiationSpecification(
@@ -70,7 +69,7 @@ public class ClusterControllerContainer extends Container implements
addBundle("file:" + getDefaults().underVespaHome("lib/jars/zkfacade-jar-with-dependencies.jar"));
log.log(LogLevel.DEBUG, "Adding access log for cluster controller ...");
- addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.queryAccessLog, "controller", stateIsHosted(deployStateFrom(parent))));
+ addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.queryAccessLog, "controller", isHosted));
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
index b7e45cc252a..4f175b2ec42 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
@@ -5,7 +5,6 @@ import com.yahoo.config.model.ConfigModelRepo;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
-import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.vespa.model.generic.service.ServiceCluster;
import java.util.List;
@@ -19,7 +18,7 @@ public abstract class VespaModelBuilder {
public abstract ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, AbstractConfigProducer parent);
- public abstract List<ServiceCluster> getClusters(ApplicationPackage pkg, AbstractConfigProducer parent);
+ public abstract List<ServiceCluster> getClusters(DeployState pkg, AbstractConfigProducer parent);
/**
* Processing that requires access across plugins
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
index 35b69ab655f..fd5516ba77a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
@@ -3,12 +3,16 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.ConfigModelContext.ApplicationType;
import com.yahoo.config.model.api.ConfigServerSpec;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.Host;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.HostSystem;
-import com.yahoo.vespa.model.admin.*;
+import com.yahoo.vespa.model.admin.Admin;
+import com.yahoo.vespa.model.admin.Configserver;
+import com.yahoo.vespa.model.admin.LogForwarder;
+import com.yahoo.vespa.model.admin.ModelConfigProvider;
import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer;
import com.yahoo.vespa.model.admin.monitoring.DefaultMonitoring;
import com.yahoo.vespa.model.admin.monitoring.Monitoring;
@@ -18,7 +22,10 @@ import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
import com.yahoo.config.application.api.FileRegistry;
import org.w3c.dom.Element;
-import java.util.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
import static com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets.predefinedMetricSets;
import static java.util.logging.Level.WARNING;
@@ -63,7 +70,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
}
@Override
- protected Admin doBuild(AbstractConfigProducer parent, Element adminElement) {
+ protected Admin doBuild(DeployState deployState, AbstractConfigProducer parent, Element adminElement) {
Monitoring monitoring = getMonitoring(getChildWithFallback(adminElement, "monitoring", "yamas"));
Metrics metrics = new MetricsBuilder(applicationType, predefinedMetricSets)
.buildMetrics(XML.getChild(adminElement, "metrics"));
@@ -74,9 +81,10 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
}
FileDistributionConfigProducer fileDistributionConfigProducer = getFileDistributionConfigProducer(parent);
- Admin admin = new Admin(parent, monitoring, metrics, legacyMetricsConsumers, multitenant, fileDistributionConfigProducer);
+ Admin admin = new Admin(parent, monitoring, metrics, legacyMetricsConsumers, multitenant,
+ fileDistributionConfigProducer, deployState.isHosted());
admin.setApplicationType(applicationType);
- doBuildAdmin(admin, adminElement);
+ doBuildAdmin(deployState, admin, adminElement);
new ModelConfigProvider(admin);
return admin;
@@ -92,7 +100,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
return XML.getChild(parent, alternativeChildName);
}
- protected abstract void doBuildAdmin(Admin admin, Element adminE);
+ protected abstract void doBuildAdmin(DeployState deployState, Admin admin, Element adminE);
private Monitoring getMonitoring(Element monitoringElement) {
if (monitoringElement == null) return new DefaultMonitoring(DEFAULT_CLUSTER_NAME, DEFAULT_INTERVAL);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index 9deb03495f2..6cd4bd19bd6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -4,8 +4,8 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.ConfigServerSpec;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.text.XML;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.model.SimpleConfigProducer;
@@ -44,24 +44,24 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
}
@Override
- protected void doBuildAdmin(Admin admin, Element adminE) {
- List<Configserver> configservers = parseConfigservers(admin, adminE);
- admin.setLogserver(parseLogserver(admin, adminE));
+ protected void doBuildAdmin(DeployState deployState, Admin admin, Element adminE) {
+ List<Configserver> configservers = parseConfigservers(deployState, admin, adminE);
+ admin.setLogserver(parseLogserver(deployState, admin, adminE));
admin.addConfigservers(configservers);
- admin.addSlobroks(getSlobroks(admin, XML.getChild(adminE, "slobroks")));
+ admin.addSlobroks(getSlobroks(deployState, admin, XML.getChild(adminE, "slobroks")));
if ( ! admin.multitenant())
- admin.setClusterControllers(addConfiguredClusterControllers(admin, adminE));
+ admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE));
ModelElement adminElement = new ModelElement(adminE);
addLogForwarders(adminElement.getChild("logforwarding"), admin);
}
- private List<Configserver> parseConfigservers(Admin admin, Element adminE) {
+ private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) {
List<Configserver> configservers;
if (multitenant) {
configservers = getConfigServersFromSpec(admin);
} else {
- configservers = getConfigServers(admin, adminE);
+ configservers = getConfigServers(deployState, admin, adminE);
}
int count = configservers.size();
if (count % 2 == 0) {
@@ -71,15 +71,15 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return configservers;
}
- private Logserver parseLogserver(Admin admin, Element adminE) {
+ private Logserver parseLogserver(DeployState deployState, Admin admin, Element adminE) {
Element logserverE = XML.getChild(adminE, "logserver");
if (logserverE == null) {
logserverE = XML.getChild(adminE, "adminserver");
}
- return new LogserverBuilder().build(admin, logserverE);
+ return new LogserverBuilder().build(deployState, admin, logserverE);
}
- private ContainerCluster addConfiguredClusterControllers(AbstractConfigProducer parent, Element admin) {
+ private ContainerCluster addConfiguredClusterControllers(DeployState deployState, AbstractConfigProducer parent, Element admin) {
Element controllersElements = XML.getChild(admin, "cluster-controllers");
if (controllersElements == null) return null;
@@ -93,13 +93,13 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
ContainerCluster cluster = new ContainerCluster(parent,
"cluster-controllers",
"cluster-controllers",
- new ClusterControllerClusterVerifier());
+ new ClusterControllerClusterVerifier(), deployState);
ContainerModelBuilder.addDefaultHandler_legacyBuilder(cluster);
List<Container> containers = new ArrayList<>();
for (Element controller : controllers) {
- ClusterControllerContainer clusterController = new ClusterControllerBuilder(containers.size(), standaloneZooKeeper).build(cluster, controller);
+ ClusterControllerContainer clusterController = new ClusterControllerBuilder(containers.size(), standaloneZooKeeper).build(deployState, cluster, controller);
containers.add(clusterController);
}
@@ -108,7 +108,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
}
// Extra stupid because configservers tag is optional
- private List<Configserver> getConfigServers(AbstractConfigProducer parent, Element adminE) {
+ private List<Configserver> getConfigServers(DeployState deployState, AbstractConfigProducer parent, Element adminE) {
SimpleConfigProducer configServers = new SimpleConfigProducer(parent, "configservers");
List<Configserver> cfgs = new ArrayList<>();
Element configserversE = XML.getChild(adminE, "configservers");
@@ -119,7 +119,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
} else {
parent.deployLogger().log(LogLevel.INFO, "Specifying configserver without parent element configservers in services.xml is deprecated");
}
- Configserver cfgs0 = new ConfigserverBuilder(0, configServerSpecs).build(configServers, configserverE);
+ Configserver cfgs0 = new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, configserverE);
cfgs0.setProp("index", 0);
cfgs.add(cfgs0);
return cfgs;
@@ -127,7 +127,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
// configservers tag in use
int i = 0;
for (Element configserverE : XML.getChildren(configserversE, "configserver")) {
- Configserver cfgsrv = new ConfigserverBuilder(i, configServerSpecs).build(configServers, configserverE);
+ Configserver cfgsrv = new ConfigserverBuilder(i, configServerSpecs).build(deployState, configServers, configserverE);
cfgsrv.setProp("index", i);
cfgs.add(cfgsrv);
i++;
@@ -135,20 +135,20 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return cfgs;
}
- private List<Slobrok> getSlobroks(AbstractConfigProducer parent, Element slobroksE) {
+ private List<Slobrok> getSlobroks(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) {
List<Slobrok> slobs = new ArrayList<>();
if (slobroksE != null) {
- slobs = getExplicitSlobrokSetup(parent, slobroksE);
+ slobs = getExplicitSlobrokSetup(deployState, parent, slobroksE);
}
return slobs;
}
- private List<Slobrok> getExplicitSlobrokSetup(AbstractConfigProducer parent, Element slobroksE) {
+ private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) {
List<Slobrok> slobs = new ArrayList<>();
List<Element> slobsE = XML.getChildren(slobroksE, "slobrok");
int i = 0;
for (Element e : slobsE) {
- Slobrok slob = new SlobrokBuilder(i).build(parent, e);
+ Slobrok slob = new SlobrokBuilder(i).build(deployState, parent, e);
slobs.add(slob);
i++;
}
@@ -208,9 +208,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
}
@Override
- protected ClusterControllerContainer doBuild(AbstractConfigProducer parent,
- Element spec) {
- return new ClusterControllerContainer(parent, i, runStandaloneZooKeeper);
+ protected ClusterControllerContainer doBuild(DeployState deployState, AbstractConfigProducer parent,
+ Element spec) {
+ return new ClusterControllerContainer(parent, i, runStandaloneZooKeeper, deployState.isHosted());
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
index 26de67d4722..908b2ae81c7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
@@ -49,7 +49,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
}
@Override
- protected void doBuildAdmin(Admin admin, Element w3cAdminElement) {
+ protected void doBuildAdmin(DeployState deployState, Admin admin, Element w3cAdminElement) {
ModelElement adminElement = new ModelElement(w3cAdminElement);
admin.addConfigservers(getConfigServersFromSpec(admin));
@@ -61,7 +61,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
NodesSpecification.optionalDedicatedFromParent(adminElement.getChild("logservers"), context);
assignSlobroks(requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin);
- assignLogserver(requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin);
+ assignLogserver(deployState, requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin);
addLogForwarders(adminElement.getChild("logforwarding"), admin);
}
@@ -75,7 +75,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
}
}
- private void assignLogserver(NodesSpecification nodesSpecification, Admin admin) {
+ private void assignLogserver(DeployState deployState, NodesSpecification nodesSpecification, Admin admin) {
if (nodesSpecification.count() > 1) throw new IllegalArgumentException("You can only request a single log server");
if (nodesSpecification.isDedicated()) {
@@ -83,7 +83,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
if (hosts.isEmpty()) return; // No log server can be created (and none is needed)
Logserver logserver = createLogserver(admin, hosts);
- createAdditionalContainerOnLogserverHost(admin, logserver.getHostResource());
+ createAdditionalContainerOnLogserverHost(deployState, admin, logserver.getHostResource());
} else if (containerModels.iterator().hasNext()) {
List<HostResource> hosts = sortedContainerHostsFrom(containerModels.iterator().next(), nodesSpecification.count(), false);
if (hosts.isEmpty()) return; // No log server can be created (and none is needed)
@@ -109,8 +109,8 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
// Creates a container cluster 'logserver-cluster' with 1 container on logserver host
// for setting up a handler for getting logs from logserver
- private void createAdditionalContainerOnLogserverHost(Admin admin, HostResource hostResource) {
- ContainerCluster logServerCluster = new ContainerCluster(admin, "logserver-cluster", "logserver-cluster");
+ private void createAdditionalContainerOnLogserverHost(DeployState deployState, Admin admin, HostResource hostResource) {
+ ContainerCluster logServerCluster = new ContainerCluster(admin, "logserver-cluster", "logserver-cluster", deployState);
ContainerModel logserverClusterModel = new ContainerModel(context.withParent(admin).withId(logServerCluster.getSubId()));
// Add base handlers and the log handler
@@ -123,7 +123,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
logserverClusterModel.setCluster(logServerCluster);
- Container container = new Container(logServerCluster, "" + 0, 0);
+ Container container = new Container(logServerCluster, "" + 0, 0, deployState.isHosted());
container.setHostResource(hostResource);
container.initService();
logServerCluster.addContainer(container);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
index 5025b5a0a6c..f8f1f88e339 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.text.XML;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.container.component.Component;
@@ -14,7 +15,7 @@ import org.w3c.dom.Element;
public class DomClientProviderBuilder extends DomHandlerBuilder {
@Override
- protected Handler doBuild(AbstractConfigProducer ancestor, Element clientElement) {
+ protected Handler doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element clientElement) {
Handler<? super Component<?, ?>> client = getHandler(clientElement);
for (Element binding : XML.getChildren(clientElement, "binding"))
@@ -23,7 +24,7 @@ public class DomClientProviderBuilder extends DomHandlerBuilder {
for (Element serverBinding : XML.getChildren(clientElement, "serverBinding"))
client.addServerBindings(XML.getValue(serverBinding));
- DomComponentBuilder.addChildren(ancestor, clientElement, client);
+ DomComponentBuilder.addChildren(deployState, ancestor, clientElement, client);
return client;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
index efa62e19f05..24da87200b8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.builder.xml.ConfigModelId;
-import com.yahoo.vespa.model.clients.*;
+import com.yahoo.vespa.model.clients.Clients;
import org.w3c.dom.Element;
import java.util.Arrays;
@@ -30,7 +30,7 @@ public class DomClientsBuilder extends LegacyConfigModelBuilder<Clients> {
String version = clientsE.getAttribute("version");
if (version.startsWith("2.")) {
DomV20ClientsBuilder parser = new DomV20ClientsBuilder(clients, version);
- parser.build(clientsE);
+ parser.build(modelContext.getDeployState(), clientsE);
} else {
throw new IllegalArgumentException("Version '" + version + "' of 'clients' not supported.");
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
index 81f19f00fbb..4beefb84b71 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.component.ComponentId;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -28,9 +29,10 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde
this.namespace = namespace;
}
- protected Component doBuild(AbstractConfigProducer ancestor, Element spec) {
+ @Override
+ protected Component doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) {
Component component = buildComponent(spec);
- addChildren(ancestor, spec, component);
+ addChildren(deployState, ancestor, spec, component);
return component;
}
@@ -41,14 +43,14 @@ public class DomComponentBuilder extends VespaDomBuilder.DomConfigProducerBuilde
return new Component<Component<?, ?>, ComponentModel>(new ComponentModel(bundleSpec));
}
- public static void addChildren(AbstractConfigProducer ancestor, Element componentNode, Component<? super Component<?, ?>, ?> component) {
+ public static void addChildren(DeployState deployState, AbstractConfigProducer ancestor, Element componentNode, Component<? super Component<?, ?>, ?> component) {
for (Element childNode : XML.getChildren(componentNode, elementName)) {
- addAndInjectChild(ancestor, component, childNode);
+ addAndInjectChild(deployState, ancestor, component, childNode);
}
}
- private static void addAndInjectChild(AbstractConfigProducer ancestor, Component<? super Component<?, ?>, ?> component, Element childNode) {
- Component<?, ?> child = new DomComponentBuilder(component.getComponentId()).build(ancestor, childNode);
+ private static void addAndInjectChild(DeployState deployState, AbstractConfigProducer ancestor, Component<? super Component<?, ?>, ?> component, Element childNode) {
+ Component<?, ?> child = new DomComponentBuilder(component.getComponentId()).build(deployState, ancestor, childNode);
component.addComponent(child);
component.inject(child);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
index 28a4b9dfea5..558c4428d15 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.text.XML;
@@ -16,7 +17,7 @@ import org.w3c.dom.Element;
public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Handler> {
@Override
- protected Handler doBuild(AbstractConfigProducer ancestor, Element handlerElement) {
+ protected Handler doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element handlerElement) {
Handler<? super Component<?, ?>> handler = getHandler(handlerElement);
for (Element binding : XML.getChildren(handlerElement, "binding"))
@@ -25,14 +26,13 @@ public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<
for (Element clientBinding : XML.getChildren(handlerElement, "clientBinding"))
handler.addClientBindings(XML.getValue(clientBinding));
- DomComponentBuilder.addChildren(ancestor, handlerElement, handler);
+ DomComponentBuilder.addChildren(deployState, ancestor, handlerElement, handler);
return handler;
}
protected Handler<? super Component<?, ?>> getHandler(Element handlerElement) {
BundleInstantiationSpecification bundleSpec = BundleInstantiationSpecificationBuilder.build(handlerElement);
- return new Handler<>(
- new ComponentModel(bundleSpec));
+ return new Handler<>(new ComponentModel(bundleSpec));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
index 64e47ac4f85..68db7ce465b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.config.content.spooler.SpoolerConfig;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
@@ -37,10 +38,10 @@ public class DomV20ClientsBuilder {
this.clients = clients;
}
- public void build(Element spec) {
+ public void build(DeployState deployState, Element spec) {
NodeList children = spec.getElementsByTagName("spoolers");
for (int i = 0; i < children.getLength(); i++) {
- createSpoolers(clients.getConfigProducer(), (Element) children.item(i), clients);
+ createSpoolers(deployState, clients.getConfigProducer(), (Element) children.item(i), clients);
}
children = spec.getElementsByTagName("load-types");
@@ -59,13 +60,13 @@ public class DomV20ClientsBuilder {
/**
* Creates VespaSpooler objects using the given xml Element.
*/
- private void createSpoolers(AbstractConfigProducer pcp, Element element, Clients clients) {
+ private void createSpoolers(DeployState deployState, AbstractConfigProducer pcp, Element element, Clients clients) {
String jvmArgs = null;
if (element.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) jvmArgs=element.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME);
SimpleConfigProducer spoolerCfg = new VespaDomBuilder.DomSimpleConfigProducerBuilder(element.getNodeName()).
- build(pcp, element);
+ build(deployState, pcp, element);
Element spoolersFeederOptions = findFeederOptions(element);
- createSpoolMasters(spoolerCfg, element);
+ createSpoolMasters(deployState, spoolerCfg, element);
for (Element e : XML.getChildren(element, "spooler")) {
String configId = e.getAttribute("id").trim();
FeederConfig.Builder feederConfig = getFeederConfig(spoolersFeederOptions, e);
@@ -73,21 +74,21 @@ public class DomV20ClientsBuilder {
if (configId.length() == 0) {
int index = clients.getVespaSpoolers().size();
VespaSpoolerService spoolerService = new VespaSpoolerServiceBuilder(index, new VespaSpooler(feederConfig, spoolConfig)).
- build(spoolerCfg, e);
+ build(deployState, spoolerCfg, e);
if ("".equals(spoolerService.getJvmArgs()) && jvmArgs!=null) spoolerService.setJvmArgs(jvmArgs);
spoolerService.setProp("index", String.valueOf(index));
clients.getVespaSpoolers().add(spoolerService);
} else {
new VespaSpoolerProducerBuilder(configId, new VespaSpooler(feederConfig, spoolConfig)).
- build(spoolerCfg, e);
+ build(deployState, spoolerCfg, e);
}
}
}
- private void createSpoolMasters(SimpleConfigProducer producer, Element element) {
+ private void createSpoolMasters(DeployState deployState, SimpleConfigProducer producer, Element element) {
int i=0;
for (Element e : XML.getChildren(element, "spoolmaster"))
- new VespaSpoolMasterBuilder(i++).build(producer, e);
+ new VespaSpoolMasterBuilder(i++).build(deployState, producer, e);
}
private SpoolerConfig.Builder getSpoolConfig(Element conf) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
index bd280bc0b49..4bff500d806 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
@@ -24,7 +24,7 @@ public abstract class LegacyConfigModelBuilder<MODEL extends ConfigModel> extend
@Override
public MODEL build(ConfigModelInstanceFactory<MODEL> factory, Element spec, ConfigModelContext context) {
VespaDomBuilder.DomSimpleConfigProducerBuilder builder = new VespaDomBuilder.DomSimpleConfigProducerBuilder(context.getProducerId());
- AbstractConfigProducer producer = builder.build(context.getParentProducer(), spec);
+ AbstractConfigProducer producer = builder.build(context.getDeployState(), context.getParentProducer(), spec);
return super.build(factory, spec, context.withParent(producer));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
index 0e29c69c53e..4dfb34a117b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
@@ -10,7 +10,6 @@ import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.model.producer.UserConfigRepo;
import com.yahoo.log.LogLevel;
import com.yahoo.text.XML;
@@ -119,12 +118,8 @@ public class VespaDomBuilder extends VespaModelBuilder {
public static abstract class DomConfigProducerBuilder<T extends AbstractConfigProducer> {
// TODO: find good way to provide access to app package
- public final T build(AbstractConfigProducer ancestor, Element producerSpec) {
- return build(ancestor.getRoot().getDeployState(), ancestor, producerSpec);
- }
-
public final T build(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) {
- T t = doBuild(ancestor, producerSpec);
+ T t = doBuild(deployState, ancestor, producerSpec);
if (t instanceof AbstractService) {
initializeService((AbstractService)t, deployState, ancestor.getHostSystem(), producerSpec);
@@ -135,11 +130,15 @@ public class VespaDomBuilder extends VespaModelBuilder {
return t;
}
- protected abstract T doBuild(AbstractConfigProducer ancestor, Element producerSpec);
+ protected T doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
+ throw new IllegalArgumentException("DomConfigProducerBuilder.doBuild(AbstractConfigProducer ancestor, Element producerSpec) should never be called");
+ }
+
+ protected T doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) {
+ return doBuild(ancestor, producerSpec);
+ }
- private void initializeProducer(AbstractConfigProducer child,
- DeployState deployState,
- Element producerSpec) {
+ private void initializeProducer(AbstractConfigProducer child, DeployState deployState, Element producerSpec) {
UserConfigRepo userConfigs = UserConfigBuilder.build(producerSpec, deployState, deployState.getDeployLogger());
// TODO: must be made to work:
//userConfigs.applyWarnings(child);
@@ -147,10 +146,9 @@ public class VespaDomBuilder extends VespaModelBuilder {
child.mergeUserConfigs(userConfigs);
}
- private void initializeService(AbstractService t,
- DeployState deployState,
- HostSystem hostSystem,
- Element producerSpec) {
+ private void initializeService(AbstractService t, DeployState deployState,
+ HostSystem hostSystem, Element producerSpec)
+ {
initializeProducer(t, deployState, producerSpec);
if (producerSpec != null) {
if (producerSpec.hasAttribute(JVMARGS_ATTRIB_NAME)) {
@@ -330,12 +328,12 @@ public class VespaDomBuilder extends VespaModelBuilder {
}
@Override
- public List<ServiceCluster> getClusters(ApplicationPackage pkg, AbstractConfigProducer parent) {
+ public List<ServiceCluster> getClusters(DeployState deployState, AbstractConfigProducer parent) {
List<ServiceCluster> clusters = new ArrayList<>();
- Document services = XmlHelper.getDocument(pkg.getServices());
+ Document services = XmlHelper.getDocument(deployState.getApplicationPackage().getServices());
for (Element clusterSpec : XML.getChildren(services.getDocumentElement(), "cluster")) {
DomServiceClusterBuilder clusterBuilder = new DomServiceClusterBuilder(clusterSpec.getAttribute("name"));
- clusters.add(clusterBuilder.build(parent.getRoot(), clusterSpec));
+ clusters.add(clusterBuilder.build(deployState, parent.getRoot(), clusterSpec));
}
return clusters;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
index 332f75db339..6988c7dcf06 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
@@ -1,13 +1,18 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.text.XML;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.container.component.chain.Chain;
import com.yahoo.vespa.model.container.component.chain.ChainedComponent;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
/**
* @author Tony Vaagenes
@@ -19,38 +24,38 @@ public class ChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends
private final Map<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>> chainType2BuilderClass;
// NOTE: The chain type string (key in chainType2BuilderClass) must match the xml tag name for the chain.
- public ChainsBuilder(AbstractConfigProducer ancestor, List<Element> chainsElems,
+ public ChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List<Element> chainsElems,
Map<String, ComponentsBuilder.ComponentType> outerComponentTypeByComponentName,
Map<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>> chainType2BuilderClass) {
this.chainType2BuilderClass = chainType2BuilderClass;
- readChains(ancestor, chainsElems, outerComponentTypeByComponentName);
+ readChains(deployState, ancestor, chainsElems, outerComponentTypeByComponentName);
}
public Collection<CHAIN> getChains() {
return Collections.unmodifiableCollection(chains);
}
- private void readChains(AbstractConfigProducer ancestor, List<Element> chainsElems,
+ private void readChains(DeployState deployState, AbstractConfigProducer ancestor, List<Element> chainsElems,
Map<String, ComponentsBuilder.ComponentType> outerSearcherTypeByComponentName) {
for (Map.Entry<String, Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>>>
chainType : chainType2BuilderClass.entrySet()) {
for (Element elemContainingChainElems : chainsElems) {
for (Element chainElem : XML.getChildren(elemContainingChainElems, chainType.getKey())) {
- readChain(ancestor, chainElem, chainType.getValue(), outerSearcherTypeByComponentName);
+ readChain(deployState, ancestor, chainElem, chainType.getValue(), outerSearcherTypeByComponentName);
}
}
}
}
- private void readChain(AbstractConfigProducer ancestor, Element chainElem,
+ private void readChain(DeployState deployState, AbstractConfigProducer ancestor, Element chainElem,
Class<? extends DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN>> builderClass,
Map<String, ComponentsBuilder.ComponentType> outerSearcherTypeByComponentName) {
DomChainBuilderBase<? extends COMPONENT, ? extends CHAIN> builder =
DomBuilderCreator.create(builderClass, outerSearcherTypeByComponentName);
- chains.add(builder.build(ancestor, chainElem));
+ chains.add(builder.build(deployState, ancestor, chainElem));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
index c94db473699..9777932c3cb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.ComponentId;
import com.yahoo.component.ComponentSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.text.XML;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.model.builder.xml.XmlHelper;
@@ -19,7 +20,15 @@ import com.yahoo.vespa.model.container.docproc.DocumentProcessor;
import com.yahoo.vespa.model.container.search.searchchain.Searcher;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* Creates component models and component references from xml for a given scope.
@@ -29,7 +38,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
// NOTE: the 'name' string must match the xml tag name for the component in services.
public static class ComponentType<T extends ChainedComponent<?>> {
- static ArrayList<ComponentType> values = new ArrayList<>();
+ static List<ComponentType> values = new ArrayList<>();
public static final ComponentType<DocumentProcessor> documentprocessor = new ComponentType<>("documentprocessor", DomDocumentProcessorBuilder.class);
public static final ComponentType<Searcher<?>> searcher = new ComponentType<>("searcher", DomSearcherBuilder.class);
public static final ComponentType<Processor> processor = new ComponentType<>("processor", DomProcessorBuilder.class);
@@ -63,15 +72,16 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
* @param outerComponentTypeByComponentName Use null if this is the outermost scope, i.e.
* every component is a definition, not a reference.
*/
- ComponentsBuilder(AbstractConfigProducer ancestor,
+ ComponentsBuilder(DeployState deployState,
+ AbstractConfigProducer ancestor,
Collection<ComponentType<T>> componentTypes,
List<Element> elementsContainingComponentElems,
Map<String, ComponentType> outerComponentTypeByComponentName) {
- readComponents(ancestor, componentTypes, elementsContainingComponentElems, unmodifiable(outerComponentTypeByComponentName));
+ readComponents(deployState, ancestor, componentTypes, elementsContainingComponentElems, unmodifiable(outerComponentTypeByComponentName));
}
- private void readComponents(AbstractConfigProducer ancestor,
+ private void readComponents(DeployState deployState, AbstractConfigProducer ancestor,
Collection<ComponentType<T>> componentTypes,
List<Element> elementsContainingComponentElems,
Map<String, ComponentType> outerComponentTypeByComponentName) {
@@ -79,13 +89,13 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
for (ComponentType<T> componentType : componentTypes) {
for (Element elemContainingComponentElems : elementsContainingComponentElems) {
for (Element componentElement : XML.getChildren(elemContainingComponentElems, componentType.name)) {
- readComponent(ancestor, componentElement, componentType, outerComponentTypeByComponentName);
+ readComponent(deployState, ancestor, componentElement, componentType, outerComponentTypeByComponentName);
}
}
}
}
- private void readComponent(AbstractConfigProducer ancestor,
+ private void readComponent(DeployState deployState, AbstractConfigProducer ancestor,
Element componentElement,
ComponentType<T> componentType,
Map<String, ComponentType> outerComponentTypeByComponentName) {
@@ -95,7 +105,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
if (outerComponentTypeByComponentName.containsKey(componentSpecification.getName())) {
readComponentReference(componentElement, componentType, componentSpecification, outerComponentTypeByComponentName);
} else {
- readComponentDefinition(ancestor, componentElement, componentType);
+ readComponentDefinition(deployState, ancestor, componentElement, componentType);
}
}
@@ -109,8 +119,8 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
outerComponentReferences.add(componentSpecification);
}
- private void readComponentDefinition(AbstractConfigProducer ancestor, Element componentElement, ComponentType<T> componentType) {
- T component = componentType.createBuilder().build(ancestor, componentElement);
+ private void readComponentDefinition(DeployState deployState, AbstractConfigProducer ancestor, Element componentElement, ComponentType<T> componentType) {
+ T component = componentType.createBuilder().build(deployState, ancestor, componentElement);
componentDefinitions.add(component);
updateComponentTypes(component.getComponentId(), componentType);
}
@@ -139,7 +149,7 @@ public class ComponentsBuilder<T extends ChainedComponent<?>> {
private Map<String, ComponentType> unmodifiable(Map<String, ComponentType> outerComponentTypeByComponentName) {
return (outerComponentTypeByComponentName != null)?
Collections.unmodifiableMap(outerComponentTypeByComponentName):
- Collections.<String, ComponentType>emptyMap();
+ Collections.emptyMap();
}
public Collection<T> getComponentDefinitions() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
index acc07e77d75..6f5bc7f90fd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.container.component.chain.Chain;
@@ -28,13 +29,13 @@ public abstract class DomChainBuilderBase<COMPONENT extends ChainedComponent<?>,
this.outerComponentTypeByComponentName = outerComponentTypeByComponentName;
}
- public final CHAIN doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
+ public final CHAIN doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) {
ComponentsBuilder<COMPONENT> componentsBuilder =
- new ComponentsBuilder<>(ancestor, allowedComponentTypes, Arrays.asList(producerSpec), outerComponentTypeByComponentName);
+ new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, Arrays.asList(producerSpec), outerComponentTypeByComponentName);
ChainSpecification specWithoutInnerComponents =
new ChainSpecificationBuilder(producerSpec).build(componentsBuilder.getOuterComponentReferences());
- CHAIN chain = buildChain(ancestor, producerSpec, specWithoutInnerComponents);
+ CHAIN chain = buildChain(deployState, ancestor, producerSpec, specWithoutInnerComponents);
addInnerComponents(chain, componentsBuilder.getComponentDefinitions());
return chain;
@@ -46,6 +47,6 @@ public abstract class DomChainBuilderBase<COMPONENT extends ChainedComponent<?>,
}
}
- protected abstract CHAIN buildChain(AbstractConfigProducer ancestor, Element producerSpec,
+ protected abstract CHAIN buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec,
ChainSpecification specWithoutInnerComponents);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
index eb96221d839..1653612fc78 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.config.application.Xml;
-import com.yahoo.text.XML;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType;
@@ -41,13 +41,13 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai
protected abstract CHAINS newChainsInstance(AbstractConfigProducer parent);
@Override
- protected final CHAINS doBuild(AbstractConfigProducer parent, Element chainsElement) {
+ protected final CHAINS doBuild(DeployState deployState, AbstractConfigProducer parent, Element chainsElement) {
CHAINS chains = newChainsInstance(parent);
- List<Element> allChainElements = allChainElements(parent, chainsElement);
+ List<Element> allChainElements = allChainElements(deployState, parent, chainsElement);
if (! allChainElements.isEmpty()) {
- ComponentsBuilder<COMPONENT> outerComponentsBuilder = readOuterComponents(chains, allChainElements);
- ChainsBuilder<COMPONENT, CHAIN> chainsBuilder = readChains(chains, allChainElements,
+ ComponentsBuilder<COMPONENT> outerComponentsBuilder = readOuterComponents(deployState, chains, allChainElements);
+ ChainsBuilder<COMPONENT, CHAIN> chainsBuilder = readChains(deployState, chains, allChainElements,
outerComponentsBuilder.getComponentTypeByComponentName());
addOuterComponents(chains, outerComponentsBuilder);
@@ -56,24 +56,24 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai
return chains;
}
- private List<Element> allChainElements(AbstractConfigProducer ancestor, Element chainsElement) {
+ private List<Element> allChainElements(DeployState deployState, AbstractConfigProducer ancestor, Element chainsElement) {
List<Element> chainsElements = new ArrayList<>();
if (outerChainsElem != null)
chainsElements.add(outerChainsElem);
chainsElements.add(chainsElement);
if (appPkgChainsDir != null)
- chainsElements.addAll(Xml.allElemsFromPath(ancestor.getRoot().getDeployState().getApplicationPackage(), appPkgChainsDir));
+ chainsElements.addAll(Xml.allElemsFromPath(deployState.getApplicationPackage(), appPkgChainsDir));
return chainsElements;
}
- private ComponentsBuilder<COMPONENT> readOuterComponents(AbstractConfigProducer ancestor, List<Element> chainsElems) {
- return new ComponentsBuilder<>(ancestor, allowedComponentTypes, chainsElems, null);
+ private ComponentsBuilder<COMPONENT> readOuterComponents(DeployState deployState, AbstractConfigProducer ancestor, List<Element> chainsElems) {
+ return new ComponentsBuilder<>(deployState, ancestor, allowedComponentTypes, chainsElems, null);
}
protected abstract
- ChainsBuilder<COMPONENT, CHAIN> readChains(AbstractConfigProducer ancestor, List<Element> allChainsElems,
+ ChainsBuilder<COMPONENT, CHAIN> readChains(DeployState deployState, AbstractConfigProducer ancestor, List<Element> allChainsElems,
Map<String, ComponentsBuilder.ComponentType> outerComponentTypeByComponentName);
private void addOuterComponents(CHAINS chains, ComponentsBuilder<COMPONENT> outerComponentsBuilder) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
index dd61144bfba..e40932154a0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -9,7 +10,10 @@ import com.yahoo.vespa.model.container.docproc.DocprocChain;
import com.yahoo.vespa.model.container.docproc.DocumentProcessor;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
/**
* Creates all docproc chains from xml.
@@ -25,9 +29,9 @@ public class DocprocChainsBuilder extends ChainsBuilder<DocumentProcessor, Docpr
put("chain", DomDocprocChainBuilder.class);
}});
- public DocprocChainsBuilder(AbstractConfigProducer ancestor, List<Element> docprocChainsElements,
+ public DocprocChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List<Element> docprocChainsElements,
Map<String, ComponentsBuilder.ComponentType> outerSearcherTypeByComponentName) {
- super(ancestor, docprocChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
+ super(deployState, ancestor, docprocChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
index 32a5e627495..e6b2cb65b16 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.collections.Pair;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase;
@@ -24,7 +25,8 @@ public class DomDocprocChainBuilder extends DomChainBuilderBase<DocumentProcesso
super(Arrays.asList(ComponentsBuilder.ComponentType.documentprocessor), outerComponentTypeByComponentName);
}
- protected DocprocChain buildChain(AbstractConfigProducer ancestor, Element producerSpec,
+ @Override
+ protected DocprocChain buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec,
ChainSpecification specWithoutInnerComponents) {
Map<Pair<String, String>, String> fieldNameSchemaMap = DocumentProcessorModelBuilder.parseFieldNameSchemaMap(producerSpec);
return new DocprocChain(specWithoutInnerComponents, fieldNameSchemaMap);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
index b0d0c3d728e..fd2212d6637 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType;
@@ -31,8 +32,8 @@ public class DomDocprocChainsBuilder extends DomChainsBuilder<DocumentProcessor
}
@Override
- protected DocprocChainsBuilder readChains(AbstractConfigProducer ancestor, List<Element> docprocChainsElements,
+ protected DocprocChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List<Element> docprocChainsElements,
Map<String, ComponentType> outerComponentTypeByComponentName) {
- return new DocprocChainsBuilder(ancestor, docprocChainsElements, outerComponentTypeByComponentName);
+ return new DocprocChainsBuilder(deployState, ancestor, docprocChainsElements, outerComponentTypeByComponentName);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
index d81aa0f8dd3..5fb7853b9fb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -32,9 +33,9 @@ public class DomProcessingBuilder extends DomChainsBuilder<Processor, Processing
}
@Override
- protected ProcessingChainsBuilder readChains(AbstractConfigProducer ancestor, List<Element> processingChainsElements,
- Map<String, ComponentsBuilder.ComponentType> outerComponentTypeByComponentName) {
- return new ProcessingChainsBuilder(ancestor, processingChainsElements, outerComponentTypeByComponentName);
+ protected ProcessingChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List<Element> processingChainsElements,
+ Map<String, ComponentsBuilder.ComponentType> outerComponentTypeByComponentName) {
+ return new ProcessingChainsBuilder(deployState, ancestor, processingChainsElements, outerComponentTypeByComponentName);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
index 7724970d4d5..ff414dfd740 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase;
@@ -22,8 +23,8 @@ public class DomProcessingChainBuilder extends DomChainBuilderBase<Processor, Pr
super(Arrays.asList(ComponentsBuilder.ComponentType.processor), outerComponentTypeByComponentName);
}
- protected ProcessingChain buildChain(AbstractConfigProducer ancestor, Element producerSpec,
- ChainSpecification specWithoutInnerComponents) {
+ protected ProcessingChain buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec,
+ ChainSpecification specWithoutInnerComponents) {
return new ProcessingChain(specWithoutInnerComponents);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
index 9c6199ff24a..f3f44d45b51 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -9,7 +10,11 @@ import com.yahoo.vespa.model.container.processing.ProcessingChain;
import com.yahoo.vespa.model.container.processing.Processor;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Creates all processing chains from xml.
@@ -25,9 +30,9 @@ public class ProcessingChainsBuilder extends ChainsBuilder<Processor, Processing
put("chain", DomProcessingChainBuilder.class);
}});
- public ProcessingChainsBuilder(AbstractConfigProducer ancestor, List<Element> processingChainsElements,
+ public ProcessingChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List<Element> processingChainsElements,
Map<String, ComponentsBuilder.ComponentType> outerSearcherTypeByComponentName) {
- super(ancestor, processingChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
+ super(deployState, ancestor, processingChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
index 947ae07342c..2cc29ad9b36 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.ComponentId;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.model.builder.xml.XmlHelper;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
import com.yahoo.search.searchchain.model.federation.FederationSearcherModel;
import com.yahoo.text.XML;
@@ -70,18 +71,19 @@ public class DomFederationSearcherBuilder extends VespaDomBuilder.DomConfigProdu
}
}
- protected FederationSearcher doBuild(AbstractConfigProducer ancestor, Element searcherElement) {
+ @Override
+ protected FederationSearcher doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement) {
FederationSearcherModel model = new FederationSearcherModelBuilder(searcherElement).build();
- Optional<Component> targetSelector = buildTargetSelector(ancestor, searcherElement, model.getComponentId());
+ Optional<Component> targetSelector = buildTargetSelector(deployState, ancestor, searcherElement, model.getComponentId());
return new FederationSearcher(model, targetSelector);
}
- private Optional<Component> buildTargetSelector(AbstractConfigProducer ancestor, Element searcherElement, ComponentId namespace) {
+ private Optional<Component> buildTargetSelector(DeployState deployState, AbstractConfigProducer ancestor, Element searcherElement, ComponentId namespace) {
Element targetSelectorElement = XML.getChild(searcherElement, "target-selector");
if (targetSelectorElement == null)
return Optional.empty();
- return Optional.of(new DomComponentBuilder(namespace).build(ancestor, targetSelectorElement));
+ return Optional.of(new DomComponentBuilder(namespace).build(deployState, ancestor, targetSelectorElement));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
index ffacb146cee..d5115622e74 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
@@ -6,6 +6,7 @@ import com.yahoo.component.chain.dependencies.Dependencies;
import com.yahoo.component.chain.model.ChainedComponentModel;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
import com.yahoo.search.searchchain.model.federation.HttpProviderSpec;
import com.yahoo.search.searchchain.model.federation.LocalProviderSpec;
@@ -171,8 +172,8 @@ public class DomProviderBuilder extends DomGenericTargetBuilder<Provider> {
}
@Override
- protected Provider buildChain(AbstractConfigProducer ancestor, Element providerElement,
- ChainSpecification specWithoutInnerComponents) {
+ protected Provider buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element providerElement,
+ ChainSpecification specWithoutInnerComponents) {
ProviderReader providerReader = new ProviderReader(providerElement);
if (providerReader.certificateApplicationId == null && providerReader.certificateProxy != null) {
@@ -185,17 +186,17 @@ public class DomProviderBuilder extends DomGenericTargetBuilder<Provider> {
Provider provider = buildProvider(specWithoutInnerComponents, providerReader, federationOptions);
- Collection<Source> sources = buildSources(ancestor, providerElement);
+ Collection<Source> sources = buildSources(deployState, ancestor, providerElement);
addSources(provider, sources);
return provider;
}
- private Collection<Source> buildSources(AbstractConfigProducer ancestor, Element providerElement) {
+ private Collection<Source> buildSources(DeployState deployState, AbstractConfigProducer ancestor, Element providerElement) {
List<Source> sources = new ArrayList<>();
for (Element sourceElement : XML.getChildren(providerElement, "source")) {
- sources.add(new DomSourceBuilder(outerComponentTypeByComponentName).build(ancestor, sourceElement));
+ sources.add(new DomSourceBuilder(outerComponentTypeByComponentName).build(deployState, ancestor, sourceElement));
}
return sources;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
index e5086ccd9f9..3950384a4d4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase;
@@ -23,7 +24,7 @@ public class DomSearchChainBuilder extends DomChainBuilderBase<Searcher<?>, Sear
outerSearcherTypeByComponentName);
}
- protected SearchChain buildChain(AbstractConfigProducer ancestor, Element producerSpec,
+ protected SearchChain buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec,
ChainSpecification specWithoutInnerComponents) {
return new SearchChain(specWithoutInnerComponents);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
index c5802f8e578..419eb00886a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType;
@@ -37,9 +38,9 @@ public class DomSearchChainsBuilder extends DomChainsBuilder<Searcher<?>, Search
}
@Override
- protected SearchChainsBuilder readChains(AbstractConfigProducer ancestor, List<Element> searchChainsElements,
+ protected SearchChainsBuilder readChains(DeployState deployState, AbstractConfigProducer ancestor, List<Element> searchChainsElements,
Map<String, ComponentType> outerComponentTypeByComponentName) {
- return new SearchChainsBuilder(ancestor, searchChainsElements, outerComponentTypeByComponentName);
+ return new SearchChainsBuilder(deployState, ancestor, searchChainsElements, outerComponentTypeByComponentName);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
index 177f77e9348..12c4714e27c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -19,7 +20,7 @@ public class DomSourceBuilder extends DomGenericTargetBuilder<Source> {
super(outerSearcherTypeByComponentName);
}
- protected Source buildChain(AbstractConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) {
+ protected Source buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) {
Source.GroupOption groupOption =
XmlHelper.isReference(producerSpec) ?
Source.GroupOption.participant :
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
index fad5a66be98..0106123666d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -9,7 +10,10 @@ import com.yahoo.vespa.model.container.search.searchchain.SearchChain;
import com.yahoo.vespa.model.container.search.searchchain.Searcher;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
/**
* @author Tony Vaagenes
@@ -26,9 +30,9 @@ public class SearchChainsBuilder extends ChainsBuilder<Searcher<?>, SearchChain>
put("provider", DomProviderBuilder.class);
}});
- public SearchChainsBuilder(AbstractConfigProducer ancestor, List<Element> searchChainsElements,
+ public SearchChainsBuilder(DeployState deployState, AbstractConfigProducer ancestor, List<Element> searchChainsElements,
Map<String, ComponentsBuilder.ComponentType> outerSearcherTypeByComponentName) {
- super(ancestor, searchChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
+ super(deployState, ancestor, searchChainsElements, outerSearcherTypeByComponentName, chainType2builderClass);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
index 442d6bbf368..8317f46d4ee 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
@@ -76,20 +76,20 @@ public class Container extends AbstractService implements
private static final int numRpcServerPorts = 2;
private static final String defaultHostedJVMArgs = "-XX:+UseOSErrorReporting -XX:+SuppressFatalErrorMessage";
- public Container(AbstractConfigProducer parent, String name, int index) {
- this(parent, name, Collections.emptyList(), index);
+ public Container(AbstractConfigProducer parent, String name, int index, boolean isHostedVespa) {
+ this(parent, name, Collections.emptyList(), index, isHostedVespa);
}
- public Container(AbstractConfigProducer parent, String name, boolean retired, int index) {
- this(parent, name, retired, Collections.emptyList(), index);
+ public Container(AbstractConfigProducer parent, String name, boolean retired, int index, boolean isHostedVespa) {
+ this(parent, name, retired, Collections.emptyList(), index, isHostedVespa);
}
- public Container(AbstractConfigProducer parent, String name, List<PortOverride> portOverrides, int index) {
- this(parent, name, false, portOverrides, index);
+ public Container(AbstractConfigProducer parent, String name, List<PortOverride> portOverrides, int index, boolean isHostedVespa) {
+ this(parent, name, false, portOverrides, index, isHostedVespa);
}
- public Container(AbstractConfigProducer parent, String name, boolean retired, List<PortOverride> portOverrides, int index) {
+ public Container(AbstractConfigProducer parent, String name, boolean retired, List<PortOverride> portOverrides, int index, boolean isHostedVespa) {
super(parent, name);
this.name = name;
this.parent = parent;
- this.isHostedVespa = stateIsHosted(deployStateFrom(parent));
+ this.isHostedVespa = isHostedVespa;
this.portOverrides = Collections.unmodifiableList(new ArrayList<>(portOverrides));
this.retired = retired;
this.index = index;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index 8cca3c91dec..c077060cc96 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -196,19 +196,10 @@ public final class ContainerCluster
}
}
- /** Creates a container cluster */
- public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name) {
- this(parent, subId, name, new AcceptAllVerifier());
- }
public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name, DeployState deployState) {
this(parent, subId, name, new AcceptAllVerifier(), deployState);
}
- public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name, ContainerClusterVerifier verifier) {
- this(parent, subId, name, verifier, deployStateFrom(parent));
- }
-
- /** Creates a container cluster */
public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name,
ContainerClusterVerifier verifier, DeployState deployState) {
super(parent, subId);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
index 137a59c1311..2fbe011d747 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.DomComponentBuilder;
@@ -16,10 +17,11 @@ import org.w3c.dom.Element;
*/
public class FilterBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Filter> {
- protected Filter doBuild(AbstractConfigProducer ancestor, Element filterElement) {
+ @Override
+ protected Filter doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element filterElement) {
ChainedComponentModelBuilder modelBuilder = new ChainedComponentModelBuilder(filterElement);
Filter filter = new Filter(modelBuilder.build());
- DomComponentBuilder.addChildren(ancestor, filterElement, filter);
+ DomComponentBuilder.addChildren(deployState, ancestor, filterElement, filter);
addFilterConfig(filterElement, filter);
return filter;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
index 8749968606b..2339574424e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.chain.model.ChainSpecification;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainBuilderBase;
import com.yahoo.vespa.model.container.component.chain.Chain;
@@ -26,7 +27,7 @@ public class FilterChainBuilder extends DomChainBuilderBase<Filter, Chain<Filter
}
@Override
- protected Chain<Filter> buildChain(AbstractConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) {
+ protected Chain<Filter> buildChain(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec, ChainSpecification specWithoutInnerComponents) {
return new Chain<>(specWithoutInnerComponents);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
index d5448d47ad0..e7f3d9de857 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container.http.xml;
import com.google.common.collect.ImmutableMap;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ChainsBuilder;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -13,7 +14,10 @@ import com.yahoo.vespa.model.container.http.Filter;
import com.yahoo.vespa.model.container.http.FilterChains;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
/**
* @author Tony Vaagenes
@@ -37,9 +41,10 @@ public class FilterChainsBuilder extends DomChainsBuilder<Filter, Chain<Filter>,
@Override
protected ChainsBuilder<Filter, Chain<Filter>> readChains(
+ DeployState deployState,
AbstractConfigProducer ancestor,
List<Element> allChainsElems, Map<String, ComponentsBuilder.ComponentType> outerComponentTypeByComponentName) {
- return new ChainsBuilder<>(ancestor, allChainsElems, outerComponentTypeByComponentName, chainType2BuilderClass);
+ return new ChainsBuilder<>(deployState, ancestor, allChainsElems, outerComponentTypeByComponentName, chainType2BuilderClass);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
index 410e5fda491..ef69d40f325 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.ComponentSpecification;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -32,19 +33,19 @@ import static com.yahoo.vespa.model.container.http.AccessControl.ACCESS_CONTROL_
public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> {
@Override
- protected Http doBuild(AbstractConfigProducer ancestor, Element spec) {
+ protected Http doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) {
FilterChains filterChains;
List<Binding> bindings = new ArrayList<>();
AccessControl accessControl = null;
Element filteringElem = XML.getChild(spec, "filtering");
if (filteringElem != null) {
- filterChains = new FilterChainsBuilder().build(ancestor, filteringElem);
+ filterChains = new FilterChainsBuilder().build(deployState, ancestor, filteringElem);
bindings = readFilterBindings(filteringElem);
Element accessControlElem = XML.getChild(filteringElem, "access-control");
if (accessControlElem != null) {
- accessControl = buildAccessControl(ancestor, accessControlElem);
+ accessControl = buildAccessControl(deployState, ancestor, accessControlElem);
bindings.addAll(accessControl.getBindings());
filterChains.add(new Chain<>(FilterChains.emptyChainSpec(ACCESS_CONTROL_CHAIN_ID)));
}
@@ -55,14 +56,14 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
Http http = new Http(bindings, accessControl);
http.setFilterChains(filterChains);
- buildHttpServers(ancestor, http, spec);
+ buildHttpServers(deployState, ancestor, http, spec);
return http;
}
- private AccessControl buildAccessControl(AbstractConfigProducer ancestor, Element accessControlElem) {
+ private AccessControl buildAccessControl(DeployState deployState, AbstractConfigProducer ancestor, Element accessControlElem) {
String application = XmlHelper.getOptionalChildValue(accessControlElem, "application")
- .orElse(getDeployedApplicationId(ancestor).value());
+ .orElse(getDeployedApplicationId(deployState, ancestor).value());
AccessControl.Builder builder = new AccessControl.Builder(accessControlElem.getAttribute("domain"), application);
@@ -89,9 +90,9 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
/**
* Returns the id of the deployed application, or the default value if not explicitly set (self-hosted).
*/
- private static ApplicationName getDeployedApplicationId(AbstractConfigProducer ancestor) {
+ private static ApplicationName getDeployedApplicationId(DeployState deployState, AbstractConfigProducer ancestor) {
return getContainerCluster(ancestor)
- .map(cluster -> cluster.getRoot().getDeployState().getProperties().applicationId().application())
+ .map(cluster -> deployState.getProperties().applicationId().application())
.orElse(ApplicationId.defaultId().application());
}
@@ -122,11 +123,11 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
return result;
}
- private void buildHttpServers(AbstractConfigProducer ancestor, Http http, Element spec) {
- http.setHttpServer(new JettyHttpServerBuilder().build(ancestor, spec));
+ private void buildHttpServers(DeployState deployState, AbstractConfigProducer ancestor, Http http, Element spec) {
+ http.setHttpServer(new JettyHttpServerBuilder().build(deployState, ancestor, spec));
}
- static int readPort(Element spec, DeployState deployState) {
+ static int readPort(Element spec, boolean isHosted, DeployLogger deployLogger) {
String portString = spec.getAttribute("port");
int port = Integer.parseInt(portString);
@@ -134,8 +135,8 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
throw new IllegalArgumentException(String.format("Invalid port %d.", port));
int legalPortInHostedVespa = Container.BASEPORT;
- if (deployState.isHosted() && port != legalPortInHostedVespa) {
- deployState.getDeployLogger().log(LogLevel.WARNING,
+ if (isHosted && port != legalPortInHostedVespa) {
+ deployLogger.log(LogLevel.WARNING,
String.format("Trying to set port to %d for http server with id %s. You cannot set port to anything else than %s",
port, spec.getAttribute("id"), legalPortInHostedVespa));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
index 36736d66195..3f32bc592de 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.config.model.builder.xml.XmlHelper;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -24,9 +25,9 @@ public class JettyConnectorBuilder extends VespaDomBuilder.DomConfigProducerBuil
private static final Logger log = Logger.getLogger(JettyConnectorBuilder.class.getName());
@Override
- protected ConnectorFactory doBuild(AbstractConfigProducer ancestor, Element serverSpec) {
+ protected ConnectorFactory doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element serverSpec) {
String name = XmlHelper.getIdString(serverSpec);
- int port = HttpBuilder.readPort(serverSpec, ancestor.getRoot().getDeployState());
+ int port = HttpBuilder.readPort(serverSpec, deployState.isHosted(), deployState.getDeployLogger());
Element legacyServerConfig = XML.getChild(serverSpec, "config");
if (legacyServerConfig != null) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
index fc5bb8940ac..d5d1de37444 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.ComponentId;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -15,10 +16,10 @@ import org.w3c.dom.Element;
*/
public class JettyHttpServerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<JettyHttpServer> {
@Override
- protected JettyHttpServer doBuild(AbstractConfigProducer ancestor, Element http) {
+ protected JettyHttpServer doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element http) {
JettyHttpServer jettyHttpServer = new JettyHttpServer(new ComponentId("jdisc-jetty"));
for (Element serverSpec: XML.getChildren(http, "server")) {
- ConnectorFactory connectorFactory = new JettyConnectorBuilder().build(ancestor, serverSpec);
+ ConnectorFactory connectorFactory = new JettyConnectorBuilder().build(deployState, ancestor, serverSpec);
jettyHttpServer.addConnector(connectorFactory);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
index 6afed7c9718..a8be0e6317c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.core.AccessLogConfig;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -101,7 +102,7 @@ public class AccessLogBuilder {
}
}
- public static Optional<AccessLogComponent> buildIfNotDisabled(ContainerCluster cluster, Element accessLogSpec) {
+ public static Optional<AccessLogComponent> buildIfNotDisabled(DeployState deployState, ContainerCluster cluster, Element accessLogSpec) {
AccessLogTypeLiteral typeLiteral =
getOptionalAttribute(accessLogSpec, "type").
map(AccessLogTypeLiteral::fromAttributeValue).
@@ -111,6 +112,6 @@ public class AccessLogBuilder {
return Optional.empty();
}
boolean hosted = cluster.isHostedVespa();
- return Optional.of(new DomBuilder(logType, hosted).build(cluster, accessLogSpec));
+ return Optional.of(new DomBuilder(logType, hosted).build(deployState, cluster, accessLogSpec));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index 7802bd1eb65..6351535a6f9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -30,6 +30,7 @@ import com.yahoo.text.XML;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.HostResource;
+import com.yahoo.vespa.model.HostSystem;
import com.yahoo.vespa.model.builder.xml.dom.DomClientProviderBuilder;
import com.yahoo.vespa.model.builder.xml.dom.DomComponentBuilder;
import com.yahoo.vespa.model.builder.xml.dom.DomFilterBuilder;
@@ -61,8 +62,6 @@ import com.yahoo.vespa.model.container.processing.ProcessingChains;
import com.yahoo.vespa.model.container.search.ContainerSearch;
import com.yahoo.vespa.model.container.search.GUIHandler;
import com.yahoo.vespa.model.container.search.PageTemplates;
-import com.yahoo.vespa.model.container.search.QueryProfiles;
-import com.yahoo.vespa.model.container.search.SemanticRules;
import com.yahoo.vespa.model.container.search.searchchain.SearchChains;
import com.yahoo.vespa.model.container.xml.document.DocumentFactoryBuilder;
import com.yahoo.vespa.model.content.StorageGroup;
@@ -156,31 +155,32 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
private void addClusterContent(ContainerCluster cluster, Element spec, ConfigModelContext context) {
+ DeployState deployState = context.getDeployState();
DocumentFactoryBuilder.buildDocumentFactories(cluster, spec);
- addConfiguredComponents(cluster, spec);
+ addConfiguredComponents(deployState, cluster, spec);
addSecretStore(cluster, spec);
- addHandlers(cluster, spec);
- addRestApis(spec, cluster);
- addServlets(spec, cluster);
- addProcessing(spec, cluster);
- addSearch(spec, cluster, context.getDeployState().getQueryProfiles(), context.getDeployState().getSemanticRules());
+ addHandlers(deployState, cluster, spec);
+ addRestApis(deployState, spec, cluster);
+ addServlets(deployState, spec, cluster);
+ addProcessing(deployState, spec, cluster);
+ addSearch(deployState, spec, cluster);
addModelEvaluation(spec, cluster, context);
- addDocproc(spec, cluster);
+ addDocproc(deployState, spec, cluster);
addDocumentApi(spec, cluster); // NOTE: Must be done after addSearch
addDefaultHandlers(cluster);
addStatusHandlers(cluster, context);
setDefaultMetricConsumerFactory(cluster);
- addHttp(context.getDeployState(), spec, cluster);
+ addHttp(deployState, spec, cluster);
- addAccessLogs(cluster, spec);
- addRoutingAliases(cluster, spec, context.getDeployState().zone().environment());
+ addAccessLogs(deployState, cluster, spec);
+ addRoutingAliases(cluster, spec, deployState.zone().environment());
addNodes(cluster, spec, context);
- addClientProviders(spec, cluster);
- addServerProviders(spec, cluster);
- addLegacyFilters(spec, cluster); // TODO: Remove for Vespa 7
+ addClientProviders(deployState, spec, cluster);
+ addServerProviders(deployState, spec, cluster);
+ addLegacyFilters(deployState, spec, cluster); // TODO: Remove for Vespa 7
addAthensCopperArgos(cluster, context); // Must be added after nodes.
}
@@ -244,12 +244,12 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
}
- private void addConfiguredComponents(ContainerCluster cluster, Element spec) {
+ private void addConfiguredComponents(DeployState deployState, ContainerCluster cluster, Element spec) {
for (Element components : XML.getChildren(spec, "components")) {
addIncludes(components);
- addConfiguredComponents(cluster, components, "component");
+ addConfiguredComponents(deployState, cluster, components, "component");
}
- addConfiguredComponents(cluster, spec, "component");
+ addConfiguredComponents(deployState, cluster, spec, "component");
}
protected void setDefaultMetricConsumerFactory(ContainerCluster cluster) {
@@ -288,37 +288,36 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
cluster.addStatisticsHandler();
}
- private void addClientProviders(Element spec, ContainerCluster cluster) {
+ private void addClientProviders(DeployState deployState, Element spec, ContainerCluster cluster) {
for (Element clientSpec: XML.getChildren(spec, "client")) {
- cluster.addComponent(new DomClientProviderBuilder().build(cluster, clientSpec));
+ cluster.addComponent(new DomClientProviderBuilder().build(deployState, cluster, clientSpec));
}
}
- private void addServerProviders(Element spec, ContainerCluster cluster) {
- addConfiguredComponents(cluster, spec, "server");
+ private void addServerProviders(DeployState deployState, Element spec, ContainerCluster cluster) {
+ addConfiguredComponents(deployState, cluster, spec, "server");
}
- private void addLegacyFilters(Element spec, ContainerCluster cluster) {
- for (Component component : buildLegacyFilters(cluster, spec)) {
+ private void addLegacyFilters(DeployState deployState, Element spec, ContainerCluster cluster) {
+ for (Component component : buildLegacyFilters(deployState, cluster, spec)) {
cluster.addComponent(component);
}
}
- private List<Component> buildLegacyFilters(AbstractConfigProducer ancestor,
- Element spec) {
+ private List<Component> buildLegacyFilters(DeployState deployState, AbstractConfigProducer ancestor, Element spec) {
List<Component> components = new ArrayList<>();
for (Element node : XML.getChildren(spec, "filter")) {
- components.add(new DomFilterBuilder().build(ancestor, node));
+ components.add(new DomFilterBuilder().build(deployState, ancestor, node));
}
return components;
}
- protected void addAccessLogs(ContainerCluster cluster, Element spec) {
+ protected void addAccessLogs(DeployState deployState, ContainerCluster cluster, Element spec) {
List<Element> accessLogElements = getAccessLogElements(spec);
for (Element accessLog : accessLogElements) {
- AccessLogBuilder.buildIfNotDisabled(cluster, accessLog).ifPresent(cluster::addComponent);
+ AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent);
}
if (accessLogElements.isEmpty() && cluster.getSearch() != null)
@@ -346,16 +345,16 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return http;
}
- protected void addRestApis(Element spec, ContainerCluster cluster) {
+ protected void addRestApis(DeployState deployState, Element spec, ContainerCluster cluster) {
for (Element restApiElem : XML.getChildren(spec, "rest-api")) {
cluster.addRestApi(
- new RestApiBuilder().build(cluster, restApiElem));
+ new RestApiBuilder().build(deployState, cluster, restApiElem));
}
}
- private void addServlets(Element spec, ContainerCluster cluster) {
+ private void addServlets(DeployState deployState, Element spec, ContainerCluster cluster) {
for (Element servletElem : XML.getChildren(spec, "servlet"))
- cluster.addServlet(new ServletBuilder().build(cluster, servletElem));
+ cluster.addServlet(new ServletBuilder().build(deployState, cluster, servletElem));
}
private void addDocumentApi(Element spec, ContainerCluster cluster) {
@@ -365,8 +364,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
cluster.setDocumentApi(containerDocumentApi);
}
- private void addDocproc(Element spec, ContainerCluster cluster) {
- ContainerDocproc containerDocproc = buildDocproc(cluster, spec);
+ private void addDocproc(DeployState deployState, Element spec, ContainerCluster cluster) {
+ ContainerDocproc containerDocproc = buildDocproc(deployState, cluster, spec);
if (containerDocproc == null) return;
cluster.setDocproc(containerDocproc);
@@ -375,16 +374,16 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
docprocOptions.maxConcurrentFactor, docprocOptions.documentExpansionFactor, docprocOptions.containerCoreMemory));
}
- private void addSearch(Element spec, ContainerCluster cluster, QueryProfiles queryProfiles, SemanticRules semanticRules) {
+ private void addSearch(DeployState deployState, Element spec, ContainerCluster cluster) {
Element searchElement = XML.getChild(spec, "search");
if (searchElement == null) return;
addIncludes(searchElement);
- cluster.setSearch(buildSearch(cluster, searchElement, queryProfiles, semanticRules));
+ cluster.setSearch(buildSearch(deployState, cluster, searchElement));
addSearchHandler(cluster, searchElement);
addGUIHandler(cluster);
- validateAndAddConfiguredComponents(cluster, searchElement, "renderer", ContainerModelBuilder::validateRendererElement);
+ validateAndAddConfiguredComponents(deployState, cluster, searchElement, "renderer", ContainerModelBuilder::validateRendererElement);
}
private void addModelEvaluation(Element spec, ContainerCluster cluster, ConfigModelContext context) {
@@ -396,25 +395,24 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
cluster.setModelEvaluation(new ContainerModelEvaluation(cluster, profiles));
}
- private void addProcessing(Element spec, ContainerCluster cluster) {
+ private void addProcessing(DeployState deployState, Element spec, ContainerCluster cluster) {
Element processingElement = XML.getChild(spec, "processing");
if (processingElement == null) return;
addIncludes(processingElement);
- cluster.setProcessingChains(new DomProcessingBuilder(null).build(cluster, processingElement),
+ cluster.setProcessingChains(new DomProcessingBuilder(null).build(deployState, cluster, processingElement),
serverBindings(processingElement, ProcessingChains.defaultBindings));
- validateAndAddConfiguredComponents(cluster, processingElement, "renderer", ContainerModelBuilder::validateRendererElement);
+ validateAndAddConfiguredComponents(deployState, cluster, processingElement, "renderer", ContainerModelBuilder::validateRendererElement);
}
- private ContainerSearch buildSearch(ContainerCluster containerCluster, Element producerSpec,
- QueryProfiles queryProfiles, SemanticRules semanticRules) {
- SearchChains searchChains = new DomSearchChainsBuilder(null, false).build(containerCluster, producerSpec);
+ private ContainerSearch buildSearch(DeployState deployState, ContainerCluster containerCluster, Element producerSpec) {
+ SearchChains searchChains = new DomSearchChainsBuilder(null, false).build(deployState, containerCluster, producerSpec);
ContainerSearch containerSearch = new ContainerSearch(containerCluster, searchChains, new ContainerSearch.Options());
- applyApplicationPackageDirectoryConfigs(containerCluster.getRoot().getDeployState().getApplicationPackage(), containerSearch);
- containerSearch.setQueryProfiles(queryProfiles);
- containerSearch.setSemanticRules(semanticRules);
+ applyApplicationPackageDirectoryConfigs(deployState.getApplicationPackage(), containerSearch);
+ containerSearch.setQueryProfiles(deployState.getQueryProfiles());
+ containerSearch.setSemanticRules(deployState.getSemanticRules());
return containerSearch;
}
@@ -424,10 +422,10 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
containerSearch.setPageTemplates(PageTemplates.create(applicationPackage));
}
- private void addHandlers(ContainerCluster cluster, Element spec) {
+ private void addHandlers(DeployState deployState, ContainerCluster cluster, Element spec) {
for (Element component: XML.getChildren(spec, "handler")) {
cluster.addComponent(
- new DomHandlerBuilder().build(cluster, component));
+ new DomHandlerBuilder().build(deployState, cluster, component));
}
}
@@ -447,14 +445,14 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
private void addStandaloneNode(ContainerCluster cluster) {
- Container container = new Container(cluster, "standalone", cluster.getContainers().size());
+ Container container = new Container(cluster, "standalone", cluster.getContainers().size(), cluster.isHostedVespa());
cluster.addContainers(Collections.singleton(container));
}
private void addNodesFromXml(ContainerCluster cluster, Element containerElement, ConfigModelContext context) {
Element nodesElement = XML.getChild(containerElement, "nodes");
if (nodesElement == null) { // default single node on localhost
- Container node = new Container(cluster, "container.0", 0);
+ Container node = new Container(cluster, "container.0", 0, cluster.isHostedVespa());
HostResource host = allocateSingleNodeHost(cluster, log, containerElement, context);
node.setHostResource(host);
node.initService();
@@ -481,7 +479,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
else if (nodesElement.hasAttribute("of")) // hosted node spec referencing a content cluster
return createNodesFromContentServiceReference(cluster, nodesElement, context);
else // the non-hosted option
- return createNodesFromNodeList(cluster, nodesElement);
+ return createNodesFromNodeList(context.getDeployState(), cluster, nodesElement);
}
private void applyRoutingAliasProperties(List<Container> result, ContainerCluster cluster) {
@@ -517,7 +515,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
/** Creates a single host when there is no nodes tag */
private HostResource allocateSingleNodeHost(ContainerCluster cluster, DeployLogger logger, Element containerElement, ConfigModelContext context) {
- if (cluster.getRoot().getDeployState().isHosted()) {
+ DeployState deployState = context.getDeployState();
+ HostSystem hostSystem = cluster.getHostSystem();
+ if (deployState.isHosted()) {
Optional<HostResource> singleContentHost = getHostResourceFromContentClusters(cluster, containerElement, context);
if (singleContentHost.isPresent()) { // there is a content cluster; put the container on its first node
return singleContentHost.get();
@@ -525,16 +525,16 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
else { // request 1 node
ClusterSpec clusterSpec = ClusterSpec.request(ClusterSpec.Type.container,
ClusterSpec.Id.from(cluster.getName()),
- context.getDeployState().getWantedNodeVespaVersion(),
+ deployState.getWantedNodeVespaVersion(),
false);
Capacity capacity = Capacity.fromNodeCount(1,
Optional.empty(),
false,
- ! context.getDeployState().getProperties().isBootstrap());
- return cluster.getHostSystem().allocateHosts(clusterSpec, capacity, 1, logger).keySet().iterator().next();
+ ! deployState.getProperties().isBootstrap());
+ return hostSystem.allocateHosts(clusterSpec, capacity, 1, logger).keySet().iterator().next();
}
} else {
- return cluster.getHostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC);
+ return hostSystem.getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC);
}
}
@@ -623,7 +623,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
List<Container> nodes = new ArrayList<>();
for (Map.Entry<HostResource, ClusterMembership> entry : hosts.entrySet()) {
String id = "container." + entry.getValue().index();
- Container container = new Container(cluster, id, entry.getValue().retired(), entry.getValue().index());
+ Container container = new Container(cluster, id, entry.getValue().retired(), entry.getValue().index(), cluster.isHostedVespa());
container.setHostResource(entry.getKey());
container.initService();
nodes.add(container);
@@ -631,11 +631,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return nodes;
}
- private List<Container> createNodesFromNodeList(ContainerCluster cluster, Element nodesElement) {
+ private List<Container> createNodesFromNodeList(DeployState deployState, ContainerCluster cluster, Element nodesElement) {
List<Container> nodes = new ArrayList<>();
int nodeIndex = 0;
for (Element nodeElem: XML.getChildren(nodesElement, "node")) {
- nodes.add(new ContainerServiceBuilder("container." + nodeIndex, nodeIndex).build(cluster, nodeElem));
+ nodes.add(new ContainerServiceBuilder("container." + nodeIndex, nodeIndex).build(deployState, cluster, nodeElem));
nodeIndex++;
}
return nodes;
@@ -719,13 +719,13 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return new ContainerDocumentApi(cluster, documentApiOptions);
}
- private ContainerDocproc buildDocproc(ContainerCluster cluster, Element spec) {
+ private ContainerDocproc buildDocproc(DeployState deployState, ContainerCluster cluster, Element spec) {
Element docprocElement = XML.getChild(spec, "document-processing");
if (docprocElement == null)
return null;
addIncludes(docprocElement);
- DocprocChains chains = new DomDocprocChainsBuilder(null, false).build(cluster, docprocElement);
+ DocprocChains chains = new DomDocprocChainsBuilder(null, false).build(deployState, cluster, docprocElement);
ContainerDocproc.Options docprocOptions = DocprocOptionsBuilder.build(docprocElement);
return new ContainerDocproc(cluster, chains, docprocOptions, !standaloneBuilder);
@@ -758,16 +758,16 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
}
- public static void addConfiguredComponents(ContainerCluster cluster, Element spec, String componentName) {
+ public static void addConfiguredComponents(DeployState deployState, ContainerCluster cluster, Element spec, String componentName) {
for (Element node : XML.getChildren(spec, componentName)) {
- cluster.addComponent(new DomComponentBuilder().build(cluster, node));
+ cluster.addComponent(new DomComponentBuilder().build(deployState, cluster, node));
}
}
- public static void validateAndAddConfiguredComponents(ContainerCluster cluster, Element spec, String componentName, Consumer<Element> elementValidator) {
+ public static void validateAndAddConfiguredComponents(DeployState deployState, ContainerCluster cluster, Element spec, String componentName, Consumer<Element> elementValidator) {
for (Element node : XML.getChildren(spec, componentName)) {
elementValidator.accept(node); // throws exception here if something is wrong
- cluster.addComponent(new DomComponentBuilder().build(cluster, node));
+ cluster.addComponent(new DomComponentBuilder().build(deployState, cluster, node));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
index 81dc6a5e4f9..43bc5fbfe65 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container.xml;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.model.ConfigModelUtils;
import com.yahoo.config.model.builder.xml.XmlHelper;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -28,8 +29,8 @@ public class ContainerServiceBuilder extends VespaDomBuilder.DomConfigProducerBu
}
@Override
- protected Container doBuild(AbstractConfigProducer parent, Element nodeElem) {
- return new Container(parent, id, readServerPortOverrides(nodeElem), index);
+ protected Container doBuild(DeployState deployState, AbstractConfigProducer parent, Element nodeElem) {
+ return new Container(parent, id, readServerPortOverrides(nodeElem), index, deployState.isHosted());
}
private List<Container.PortOverride> readServerPortOverrides(Element spec) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
index d268089e9c4..31e240b3ae3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
@@ -307,7 +307,7 @@ public class Content extends ConfigModel {
AbstractConfigProducer parent = root.getChildren().get(ContainerModel.DOCPROC_RESERVED_NAME);
if (parent == null)
parent = new SimpleConfigProducer(root, ContainerModel.DOCPROC_RESERVED_NAME);
- ContainerCluster indexingCluster = new ContainerCluster(parent, "cluster." + indexerName, indexerName);
+ ContainerCluster indexingCluster = new ContainerCluster(parent, "cluster." + indexerName, indexerName, modelContext.getDeployState());
ContainerModel indexingClusterModel = new ContainerModel(modelContext.withParent(parent).withId(indexingCluster.getSubId()));
indexingClusterModel.setCluster(indexingCluster);
modelContext.getConfigModelRepoAdder().add(indexingClusterModel);
@@ -324,7 +324,8 @@ public class Content extends ConfigModel {
HostResource host = searchNode.getHostResource();
if (!processedHosts.contains(host)) {
String containerName = String.valueOf(searchNode.getDistributionKey());
- Container docprocService = new Container(indexingCluster, containerName, index);
+ Container docprocService = new Container(indexingCluster, containerName, index,
+ modelContext.getDeployState().isHosted());
index++;
docprocService.setBasePort(host.nextAvailableBaseport(docprocService.getPortCount()));
docprocService.setHostResource(host);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 708c4930de1..b2291f3daa9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -12,11 +12,26 @@ import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.content.cluster.DomResourceLimitsBuilder;
-import com.yahoo.vespa.model.search.*;
+import com.yahoo.vespa.model.search.AbstractSearchCluster;
+import com.yahoo.vespa.model.search.IndexedSearchCluster;
+import com.yahoo.vespa.model.search.NodeSpec;
+import com.yahoo.vespa.model.search.SearchCluster;
+import com.yahoo.vespa.model.search.SearchDefinition;
+import com.yahoo.vespa.model.search.SearchDefinitionXMLHandler;
+import com.yahoo.vespa.model.search.SearchNode;
+import com.yahoo.vespa.model.search.StreamingSearchCluster;
+import com.yahoo.vespa.model.search.TransactionLogServer;
+import com.yahoo.vespa.model.search.Tuning;
import org.w3c.dom.Element;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.TreeMap;
import java.util.stream.Collectors;
/**
@@ -28,7 +43,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
private final boolean flushOnShutdown;
/** If this is set up for streaming search, it is modelled as one search cluster per search definition */
- private Map<String, AbstractSearchCluster> clusters = new TreeMap<>();
+ private Map<String, AbstractSearchCluster> clusters = new TreeMap<>();
/** The single, indexed search cluster this sets up (supporting multiple document types), or null if none */
private IndexedSearchCluster indexedCluster;
@@ -63,18 +78,17 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
}
@Override
- protected ContentSearchCluster doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
+ protected ContentSearchCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) {
ModelElement clusterElem = new ModelElement(producerSpec);
String clusterName = ContentCluster.getClusterName(clusterElem);
Boolean flushOnShutdownElem = clusterElem.childAsBoolean("engine.proton.flush-on-shutdown");
- DeployState deployState = AbstractConfigProducer.deployStateFrom(ancestor);
ContentSearchCluster search = new ContentSearchCluster(ancestor, clusterName, documentDefinitions, globallyDistributedDocuments,
getFlushOnShutdown(flushOnShutdownElem, deployState));
ModelElement tuning = clusterElem.getChildByPath("engine.proton.tuning");
if (tuning != null) {
- search.setTuning(new DomSearchTuningBuilder().build(search, tuning.getXml()));
+ search.setTuning(new DomSearchTuningBuilder().build(deployState, search, tuning.getXml()));
}
ModelElement protonElem = clusterElem.getChildByPath("engine.proton");
if (protonElem != null) {
@@ -90,7 +104,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
if (flushOnShutdownElem != null) {
return flushOnShutdownElem;
}
- return (stateIsHosted(deployState) ? false : true);
+ return ! stateIsHosted(deployState);
}
private Double getQueryTimeout(ModelElement clusterElem) {
@@ -165,7 +179,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
this.flushOnShutdown = flushOnShutdown;
}
- void addSearchCluster(DeployState deployState, SearchCluster cluster, Double queryTimeout, List<ModelElement> documentDefs) {
+ private void addSearchCluster(DeployState deployState, SearchCluster cluster, Double queryTimeout, List<ModelElement> documentDefs) {
addSearchDefinitions(deployState, documentDefs, cluster);
if (queryTimeout != null) {
@@ -210,7 +224,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
return hasIndexedCluster() ? getIndexed().getSearchNodes() : nonIndexed;
}
- public void addSearchNode(ContentNode node, StorageGroup parentGroup, ModelElement element) {
+ public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) {
AbstractConfigProducer parent = hasIndexedCluster() ? getIndexed() : this;
NodeSpec spec = getNextSearchNodeSpec(parentGroup);
@@ -218,7 +232,8 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
TransactionLogServer tls;
Optional<Tuning> tuning = Optional.ofNullable(this.tuning);
if (element == null) {
- snode = SearchNode.create(parent, "" + node.getDistributionKey(), node.getDistributionKey(), spec, clusterName, node, flushOnShutdown, tuning);
+ snode = SearchNode.create(parent, "" + node.getDistributionKey(), node.getDistributionKey(), spec,
+ clusterName, node, flushOnShutdown, tuning, parentGroup.getOwner().isHostedVespa());
snode.setHostResource(node.getHostResource());
snode.initService();
@@ -226,8 +241,8 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
tls.setHostResource(snode.getHostResource());
tls.initService();
} else {
- snode = new SearchNode.Builder(""+node.getDistributionKey(), spec, clusterName, node, flushOnShutdown, tuning).build(parent, element.getXml());
- tls = new TransactionLogServer.Builder(clusterName).build(snode, element.getXml());
+ snode = new SearchNode.Builder(""+node.getDistributionKey(), spec, clusterName, node, flushOnShutdown, tuning).build(deployState, parent, element.getXml());
+ tls = new TransactionLogServer.Builder(clusterName).build(deployState, snode, element.getXml());
}
snode.setTls(tls);
if (hasIndexedCluster()) {
@@ -255,7 +270,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
tuning = t;
}
- public void setResourceLimits(ResourceLimits resourceLimits) {
+ private void setResourceLimits(ResourceLimits resourceLimits) {
this.resourceLimits = Optional.of(resourceLimits);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
index 1b5baefe4e4..98cd36c90fb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.ConfigModelContext;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.application.api.DeployLogger;
@@ -202,7 +203,7 @@ public class StorageGroup {
this.context = context;
}
- public StorageGroup buildRootGroup() {
+ public StorageGroup buildRootGroup(DeployState deployState) {
Optional<ModelElement> group = Optional.ofNullable(clusterElement.getChild("group"));
Optional<ModelElement> nodes = getNodes(clusterElement);
@@ -213,9 +214,9 @@ public class StorageGroup {
GroupBuilder groupBuilder = collectGroup(group, nodes, null, null);
if (owner.isHostedVespa()) {
- return groupBuilder.buildHosted(owner, Optional.empty());
+ return groupBuilder.buildHosted(deployState, owner, Optional.empty());
} else {
- return groupBuilder.buildNonHosted(owner, Optional.empty());
+ return groupBuilder.buildNonHosted(deployState, owner, Optional.empty());
}
}
@@ -251,16 +252,16 @@ public class StorageGroup {
* @param parent the parent storage group, or empty if this is the root group
* @return the storage group build by this
*/
- public StorageGroup buildNonHosted(ContentCluster owner, Optional<GroupBuilder> parent) {
+ public StorageGroup buildNonHosted(DeployState deployState, ContentCluster owner, Optional<GroupBuilder> parent) {
for (GroupBuilder subGroup : subGroups) {
- storageGroup.subgroups.add(subGroup.buildNonHosted(owner, Optional.of(this)));
+ storageGroup.subgroups.add(subGroup.buildNonHosted(deployState, owner, Optional.of(this)));
}
for (XmlNodeBuilder nodeBuilder : nodeBuilders) {
- storageGroup.nodes.add(nodeBuilder.build(owner, storageGroup));
+ storageGroup.nodes.add(nodeBuilder.build(deployState, owner, storageGroup));
}
if ( ! parent.isPresent() && subGroups.isEmpty() && nodeBuilders.isEmpty()) // no nodes or groups: create single node
- storageGroup.nodes.add(buildSingleNode(owner));
+ storageGroup.nodes.add(buildSingleNode(deployState, owner));
if ( ! parent.isPresent())
owner.redundancy().setTotalNodes(storageGroup.countNodes());
@@ -268,11 +269,11 @@ public class StorageGroup {
return storageGroup;
}
- private StorageNode buildSingleNode(ContentCluster parent) {
+ private StorageNode buildSingleNode(DeployState deployState, ContentCluster parent) {
int distributionKey = 0;
StorageNode sNode = new StorageNode(parent.getStorageNodes(), 1.0, distributionKey , false);
sNode.setHostResource(parent.getHostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC));
- PersistenceEngine provider = parent.getPersistence().create(sNode, storageGroup, null);
+ PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, null);
new Distributor(parent.getDistributorNodes(), distributionKey, null, provider);
return sNode;
}
@@ -284,7 +285,7 @@ public class StorageGroup {
* @param parent the parent storage group, or empty if this is the root group
* @return the storage group build by this
*/
- public StorageGroup buildHosted(ContentCluster owner, Optional<GroupBuilder> parent) {
+ public StorageGroup buildHosted(DeployState deployState, ContentCluster owner, Optional<GroupBuilder> parent) {
if (storageGroup.getIndex() != null)
throw new IllegalArgumentException("Specifying individual groups is not supported on hosted applications");
Map<HostResource, ClusterMembership> hostMapping =
@@ -310,17 +311,17 @@ public class StorageGroup {
String groupIndex = String.valueOf(hostGroup.getKey().get().index());
StorageGroup subgroup = new StorageGroup(owner, groupIndex, groupIndex);
for (Map.Entry<HostResource, ClusterMembership> host : hostGroup.getValue().entrySet()) {
- subgroup.nodes.add(createStorageNode(owner, host.getKey(), subgroup, host.getValue()));
+ subgroup.nodes.add(createStorageNode(deployState, owner, host.getKey(), subgroup, host.getValue()));
}
storageGroup.subgroups.add(subgroup);
}
}
else { // or otherwise just create the nodes directly on this group, or the explicitly enumerated subgroups
for (Map.Entry<HostResource, ClusterMembership> host : hostMapping.entrySet()) {
- storageGroup.nodes.add(createStorageNode(owner, host.getKey(), storageGroup, host.getValue()));
+ storageGroup.nodes.add(createStorageNode(deployState, owner, host.getKey(), storageGroup, host.getValue()));
}
for (GroupBuilder subGroup : subGroups) {
- storageGroup.subgroups.add(subGroup.buildHosted(owner, Optional.of(this)));
+ storageGroup.subgroups.add(subGroup.buildHosted(deployState, owner, Optional.of(this)));
}
if ( ! parent.isPresent())
owner.redundancy().setTotalNodes(storageGroup.countNodes());
@@ -367,10 +368,10 @@ public class StorageGroup {
this.element = element;
}
- public StorageNode build(ContentCluster parent, StorageGroup storageGroup) {
- StorageNode sNode = new StorageNode.Builder().build(parent.getStorageNodes(), element.getXml());
- PersistenceEngine provider = parent.getPersistence().create(sNode, storageGroup, element);
- new Distributor.Builder(clusterElement, provider).build(parent.getDistributorNodes(), element.getXml());
+ public StorageNode build(DeployState deployState, ContentCluster parent, StorageGroup storageGroup) {
+ StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageNodes(), element.getXml());
+ PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, element);
+ new Distributor.Builder(clusterElement, provider).build(deployState, parent.getDistributorNodes(), element.getXml());
return sNode;
}
}
@@ -410,7 +411,7 @@ public class StorageGroup {
Optional<NodesSpecification> nodeRequirement;
if (nodesElement.isPresent() && nodesElement.get().getStringAttribute("count") != null ) // request these nodes
nodeRequirement = Optional.of(NodesSpecification.from(nodesElement.get(), context));
- else if (! nodesElement.isPresent() && subGroups.isEmpty() && owner.getRoot().getDeployState().isHosted()) // request one node
+ else if (! nodesElement.isPresent() && subGroups.isEmpty() && context.getDeployState().isHosted()) // request one node
nodeRequirement = Optional.of(NodesSpecification.nonDedicated(1, context));
else // Nodes or groups explicitly listed, and/opr not hosted - resolve in GroupBuilder
nodeRequirement = Optional.empty();
@@ -466,13 +467,13 @@ public class StorageGroup {
return subGroups;
}
- private static StorageNode createStorageNode(ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) {
+ private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) {
StorageNode sNode = new StorageNode(parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired());
sNode.setHostResource(hostResource);
sNode.initService();
// TODO: Supplying null as XML is not very nice
- PersistenceEngine provider = parent.getPersistence().create(sNode, parentGroup, null);
+ PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, parentGroup, null);
Distributor d = new Distributor(parent.getDistributorNodes(), clusterMembership.index(), null, provider);
d.setHostResource(sNode.getHostResource());
d.initService();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index 699da07f159..c35bb468cbd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -9,7 +9,6 @@ import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Zone;
-import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.vespa.config.content.MessagetyperouteselectorpolicyConfig;
import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.config.content.StorDistributionConfig;
@@ -36,7 +35,18 @@ import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.ContainerModel;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder;
-import com.yahoo.vespa.model.content.*;
+import com.yahoo.vespa.model.content.ClusterControllerConfig;
+import com.yahoo.vespa.model.content.ContentSearch;
+import com.yahoo.vespa.model.content.ContentSearchCluster;
+import com.yahoo.vespa.model.content.DistributionBitCalculator;
+import com.yahoo.vespa.model.content.DistributorCluster;
+import com.yahoo.vespa.model.content.GlobalDistributionValidator;
+import com.yahoo.vespa.model.content.IndexedHierarchicDistributionValidator;
+import com.yahoo.vespa.model.content.Redundancy;
+import com.yahoo.vespa.model.content.ReservedDocumentTypeNameValidator;
+import com.yahoo.vespa.model.content.StorageGroup;
+import com.yahoo.vespa.model.content.StorageNode;
+import com.yahoo.vespa.model.content.TuningDispatch;
import com.yahoo.vespa.model.content.engines.PersistenceEngine;
import com.yahoo.vespa.model.content.engines.ProtonEngine;
import com.yahoo.vespa.model.content.storagecluster.StorageCluster;
@@ -45,7 +55,15 @@ import com.yahoo.vespa.model.search.MultilevelDispatchValidator;
import com.yahoo.vespa.model.search.Tuning;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
import java.util.logging.Level;
import java.util.stream.Collectors;
@@ -102,10 +120,10 @@ public class ContentCluster extends AbstractConfigProducer implements
public ContentCluster build(Collection<ContainerModel> containers, ConfigModelContext context, Element w3cContentElement) {
ModelElement contentElement = new ModelElement(w3cContentElement);
-
+ DeployState deployState = context.getDeployState();
ModelElement documentsElement = contentElement.getChild("documents");
Map<String, NewDocumentType> documentDefinitions =
- new SearchDefinitionBuilder().build(context.getDeployState().getDocumentModel().getDocumentManager(), documentsElement);
+ new SearchDefinitionBuilder().build(deployState.getDocumentModel().getDocumentManager(), documentsElement);
String routingSelection = new DocumentSelectionBuilder().build(documentsElement);
Redundancy redundancy = new RedundancyBuilder().build(contentElement);
@@ -113,13 +131,13 @@ public class ContentCluster extends AbstractConfigProducer implements
ContentCluster c = new ContentCluster(context.getParentProducer(), getClusterName(contentElement), documentDefinitions,
globallyDistributedDocuments, routingSelection, redundancy,
- context.getDeployState().zone());
- c.clusterControllerConfig = new ClusterControllerConfig.Builder(getClusterName(contentElement), contentElement).build(c, contentElement.getXml());
- c.search = new ContentSearchCluster.Builder(documentDefinitions, globallyDistributedDocuments).build(c, contentElement.getXml());
+ deployState.zone(), deployState.isHosted());
+ c.clusterControllerConfig = new ClusterControllerConfig.Builder(getClusterName(contentElement), contentElement).build(deployState, c, contentElement.getXml());
+ c.search = new ContentSearchCluster.Builder(documentDefinitions, globallyDistributedDocuments).build(deployState, c, contentElement.getXml());
c.persistenceFactory = new EngineFactoryBuilder().build(contentElement, c);
- c.storageNodes = new StorageCluster.Builder().build(c, w3cContentElement);
- c.distributorNodes = new DistributorCluster.Builder(c).build(c, w3cContentElement);
- c.rootGroup = new StorageGroup.Builder(contentElement, c, context).buildRootGroup();
+ c.storageNodes = new StorageCluster.Builder().build(deployState, c, w3cContentElement);
+ c.distributorNodes = new DistributorCluster.Builder(c).build(deployState, c, w3cContentElement);
+ c.rootGroup = new StorageGroup.Builder(contentElement, c, context).buildRootGroup(deployState);
validateThatGroupSiblingsAreUnique(c.clusterName, c.rootGroup);
redundancy.setExplicitGroups(c.getRootGroup().getNumberOfLeafGroups());
c.search.handleRedundancy(redundancy);
@@ -255,7 +273,7 @@ public class ContentCluster extends AbstractConfigProducer implements
}
private void validateGroupSiblings(String cluster, StorageGroup group) {
- HashSet<String> siblings = new HashSet<>();
+ Set<String> siblings = new HashSet<>();
for (StorageGroup g : group.getSubgroups()) {
String name = g.getName();
if (siblings.contains(name)) {
@@ -299,8 +317,7 @@ public class ContentCluster extends AbstractConfigProducer implements
Collection<HostResource> hosts = nodesSpecification.isDedicated() ?
getControllerHosts(nodesSpecification, admin, clusterName, context) :
drawControllerHosts(nodesSpecification.count(), rootGroup, containers);
-
- clusterControllers = createClusterControllers(new ClusterControllerCluster(contentCluster, "standalone"), hosts, clusterName, true);
+ clusterControllers = createClusterControllers(new ClusterControllerCluster(contentCluster, "standalone"), hosts, clusterName, true, context.getDeployState());
contentCluster.clusterControllers = clusterControllers;
}
else {
@@ -310,7 +327,7 @@ public class ContentCluster extends AbstractConfigProducer implements
if (hosts.size() > 1) {
admin.deployLogger().log(Level.INFO, "When having content cluster(s) and more than 1 config server it is recommended to configure cluster controllers explicitly.");
}
- clusterControllers = createClusterControllers(admin, hosts, "cluster-controllers", false);
+ clusterControllers = createClusterControllers(admin, hosts, "cluster-controllers", false, context.getDeployState());
admin.setClusterControllers(clusterControllers);
}
}
@@ -439,18 +456,17 @@ public class ContentCluster extends AbstractConfigProducer implements
private ContainerCluster createClusterControllers(AbstractConfigProducer parent,
Collection<HostResource> hosts,
- String name,
- boolean multitenant) {
- ContainerCluster clusterControllers = new ContainerCluster(parent,
- name,
- name,
- new ClusterControllerClusterVerifier());
+ String name, boolean multitenant,
+ DeployState deployState) {
+ ContainerCluster clusterControllers = new ContainerCluster(parent, name, name,
+ new ClusterControllerClusterVerifier(),
+ deployState);
List<Container> containers = new ArrayList<>();
// Add a cluster controller on each config server (there is always at least one).
if (clusterControllers.getContainers().isEmpty()) {
int index = 0;
for (HostResource host : hosts) {
- ClusterControllerContainer clusterControllerContainer = new ClusterControllerContainer(clusterControllers, index, multitenant);
+ ClusterControllerContainer clusterControllerContainer = new ClusterControllerContainer(clusterControllers, index, multitenant, deployState.isHosted());
clusterControllerContainer.setHostResource(host);
clusterControllerContainer.initService();
clusterControllerContainer.setProp("clustertype", "admin")
@@ -483,15 +499,12 @@ public class ContentCluster extends AbstractConfigProducer implements
}
- private ContentCluster(AbstractConfigProducer parent,
- String clusterName,
+ private ContentCluster(AbstractConfigProducer parent, String clusterName,
Map<String, NewDocumentType> documentDefinitions,
Set<NewDocumentType> globallyDistributedDocuments,
- String routingSelection,
- Redundancy redundancy,
- Zone zone) {
+ String routingSelection, Redundancy redundancy, Zone zone, boolean isHostedVespa) {
super(parent, clusterName);
- this.isHostedVespa = stateIsHosted(deployStateFrom(parent));
+ this.isHostedVespa = isHostedVespa;
this.clusterName = clusterName;
this.documentDefinitions = documentDefinitions;
this.globallyDistributedDocuments = globallyDistributedDocuments;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
index 5b45e21d47e..e68ee938846 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.config.content.core.StorServerConfig;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.StorageGroup;
@@ -20,7 +21,7 @@ public class DummyPersistence extends PersistenceEngine {
public static class Factory implements PersistenceFactory {
@Override
- public PersistenceEngine create(StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement) {
+ public PersistenceEngine create(DeployState deployState, StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement) {
return new DummyPersistence(storageNode);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
index a39b9e9c7e3..d063d52f8cd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.config.content.core.StorServerConfig;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
@@ -19,7 +20,7 @@ public abstract class PersistenceEngine extends AbstractConfigProducer implement
*/
public interface PersistenceFactory {
- PersistenceEngine create(StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement);
+ PersistenceEngine create(DeployState deployState, StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement);
/**
* If a write request succeeds on some nodes and fails on others, causing request to
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
index df8cfc6f9bd..2a81ad79775 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
@@ -1,12 +1,12 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.ContentSearchCluster;
import com.yahoo.vespa.model.content.StorageGroup;
import com.yahoo.vespa.model.content.StorageNode;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import com.yahoo.vespa.model.search.SearchNode;
/**
* Initializes the engines engine on each storage node. May include creating other
@@ -21,8 +21,8 @@ public class ProtonEngine {
}
@Override
- public PersistenceEngine create(StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement) {
- search.addSearchNode(storageNode, parentGroup, storageNodeElement);
+ public PersistenceEngine create(DeployState deployState, StorageNode storageNode, StorageGroup parentGroup, ModelElement storageNodeElement) {
+ search.addSearchNode(deployState, storageNode, parentGroup, storageNodeElement);
return new ProtonProvider(storageNode);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
index 61ede0ed022..d2ce702c826 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
@@ -26,8 +26,8 @@ public class GenericServicesBuilder extends ConfigModelBuilder<GenericServicesMo
}
@Override
- public void doBuild(GenericServicesModel model, Element spec, ConfigModelContext modelContext) {
+ public void doBuild(GenericServicesModel model, Element spec, ConfigModelContext context) {
String name = spec.getAttribute("name");
- model.addCluster(new DomServiceClusterBuilder(name).build(modelContext.getParentProducer(), spec));
+ model.addCluster(new DomServiceClusterBuilder(name).build(context.getDeployState(), context.getParentProducer(), spec));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
index 6510a3cfbbd..212363c6667 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -17,16 +18,16 @@ public class DomModuleBuilder extends VespaDomBuilder.DomConfigProducerBuilder<M
this.name = name;
}
- private void addChildren(Module s, Element subServiceSpec) {
+ private void addChildren(DeployState deployState, Module s, Element subServiceSpec) {
for (Element nodeSpec : XML.getChildren(subServiceSpec, "module")) {
- new DomModuleBuilder(nodeSpec.getAttribute("name")).build(s, nodeSpec);
+ new DomModuleBuilder(nodeSpec.getAttribute("name")).build(deployState, s, nodeSpec);
}
}
@Override
- protected Module doBuild(AbstractConfigProducer ancestor, Element subServiceSpec) {
+ protected Module doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element subServiceSpec) {
Module s = new Module(ancestor, name);
- addChildren(s, subServiceSpec);
+ addChildren(deployState, s, subServiceSpec);
return s;
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
index 25f6ce0dbde..1f44f61e86c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -20,12 +21,12 @@ public class DomServiceBuilder extends VespaDomBuilder.DomConfigProducerBuilder<
}
@Override
- protected com.yahoo.vespa.model.generic.service.Service doBuild(AbstractConfigProducer parent,
- Element serviceSpec) {
+ protected com.yahoo.vespa.model.generic.service.Service doBuild(DeployState deployState, AbstractConfigProducer parent,
+ Element serviceSpec) {
ServiceCluster sc = (ServiceCluster) parent;
com.yahoo.vespa.model.generic.service.Service service = new com.yahoo.vespa.model.generic.service.Service(sc, i + "");
for (Element subServiceSpec : XML.getChildren(serviceSpec, "module")) {
- new DomModuleBuilder(subServiceSpec.getAttribute("name")).build(service, subServiceSpec);
+ new DomModuleBuilder(subServiceSpec.getAttribute("name")).build(deployState, service, subServiceSpec);
}
return service;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
index da8d0a441ff..200a1d175a3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -21,11 +22,11 @@ public class DomServiceClusterBuilder extends VespaDomBuilder.DomConfigProducerB
}
@Override
- protected ServiceCluster doBuild(AbstractConfigProducer ancestor, Element spec) {
+ protected ServiceCluster doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) {
ServiceCluster cluster = new ServiceCluster(ancestor, name, spec.getAttribute("command"));
int nodeIndex = 0;
for (Element nodeSpec : XML.getChildren(spec, "node")) {
- com.yahoo.vespa.model.generic.service.Service service = new DomServiceBuilder(nodeIndex).build(cluster, nodeSpec);
+ com.yahoo.vespa.model.generic.service.Service service = new DomServiceBuilder(nodeIndex).build(deployState, cluster, nodeSpec);
// TODO: Currently creates the config for each service. Should instead build module tree first
// and store them in ServiceCluster. Then have some way of referencing them from each service.
@@ -34,7 +35,7 @@ public class DomServiceClusterBuilder extends VespaDomBuilder.DomConfigProducerB
Map<String, AbstractConfigProducer<?>> map = service.getChildren();
// Add only non-conflicting modules. Does not merge unspecified configs that are specified in root though.
if (!map.containsKey(subServiceName))
- new DomModuleBuilder(subServiceName).build(service, subServiceSpec);
+ new DomModuleBuilder(subServiceName).build(deployState, service, subServiceSpec);
}
nodeIndex++;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index b0767ce0987..5dcf60e5fac 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -81,8 +81,9 @@ public class SearchNode extends AbstractService implements
}
@Override
- protected SearchNode doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
- return new SearchNode(ancestor, name, contentNode.getDistributionKey(), nodeSpec, clusterName, contentNode, flushOnShutdown, tuning);
+ protected SearchNode doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element producerSpec) {
+ return new SearchNode(ancestor, name, contentNode.getDistributionKey(), nodeSpec, clusterName, contentNode,
+ flushOnShutdown, tuning, deployState.isHosted());
}
}
@@ -90,21 +91,25 @@ public class SearchNode extends AbstractService implements
* Creates a SearchNode in elastic mode.
*/
public static SearchNode create(AbstractConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec,
- String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown, Optional<Tuning> tuning) {
- return new SearchNode(parent, name, distributionKey, nodeSpec, clusterName, serviceLayerService, flushOnShutdown, tuning);
+ String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown,
+ Optional<Tuning> tuning, boolean isHostedVespa) {
+ return new SearchNode(parent, name, distributionKey, nodeSpec, clusterName, serviceLayerService,
+ flushOnShutdown, tuning, isHostedVespa);
}
private SearchNode(AbstractConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec,
- String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown, Optional<Tuning> tuning) {
- this(parent, name, nodeSpec, clusterName, flushOnShutdown, tuning);
+ String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown,
+ Optional<Tuning> tuning, boolean isHostedVespa) {
+ this(parent, name, nodeSpec, clusterName, flushOnShutdown, tuning, isHostedVespa);
this.distributionKey = distributionKey;
this.serviceLayerService = serviceLayerService;
setPropertiesElastic(clusterName, distributionKey);
}
- private SearchNode(AbstractConfigProducer parent, String name, NodeSpec nodeSpec, String clusterName, boolean flushOnShutdown, Optional<Tuning> tuning) {
+ private SearchNode(AbstractConfigProducer parent, String name, NodeSpec nodeSpec, String clusterName,
+ boolean flushOnShutdown, Optional<Tuning> tuning, boolean isHostedVespa) {
super(parent, name);
- this.isHostedVespa = stateIsHosted(deployStateFrom(parent));
+ this.isHostedVespa = isHostedVespa;
this.nodeSpec = nodeSpec;
this.clusterName = clusterName;
this.flushOnShutdown = flushOnShutdown;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
index cb51cf23830..3b4d51e1b57 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
@@ -20,7 +20,7 @@ public class ConfigModelContextTest {
@Test
public void testConfigModelContext() {
- AbstractConfigProducer root = new MockRoot();
+ MockRoot root = new MockRoot();
String id = "foobar";
ApplicationPackage pkg = new MockApplicationPackage.Builder()
.withServices("<services version=\"1.0\"><admin version=\"2.0\" /></services>")
@@ -32,7 +32,7 @@ public class ConfigModelContextTest {
assertThat(ctx.getProducerId(), is(id));
assertThat(ctx.getParentProducer(), is(root));
assertThat(ctx.getDeployLogger(), is(logger));
- ctx = ConfigModelContext.create(null, null, root, id);
+ ctx = ConfigModelContext.create(root.getDeployState(), null, null, root, id);
assertThat(ctx.getProducerId(), is(id));
assertThat(ctx.getParentProducer(), is(root));
AbstractConfigProducer newRoot = new MockRoot("bar");
diff --git a/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java b/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
index 000722756c5..8dae880a9dc 100644
--- a/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
-import com.yahoo.config.model.ConfigModel;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.test.MockRoot;
import org.junit.Rule;
@@ -9,7 +8,6 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.util.List;
-import java.util.Optional;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.*;
@@ -64,10 +62,10 @@ public class ModelGraphTest {
ModelGraph graph = new ModelGraphBuilder().addBuilder(new GraphMock.BC()).addBuilder(new GraphMock.BB()).addBuilder(new GraphMock.BA()).build();
List<ModelNode> nodes = graph.topologicalSort();
MockRoot root = new MockRoot();
- GraphMock.A a = (GraphMock.A) nodes.get(0).createModel(ConfigModelContext.create(null, null, root, "first"));
- GraphMock.B b = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(null, null, root, "second"));
- GraphMock.B b2 = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(null, null, root, "second2"));
- GraphMock.C c = (GraphMock.C) nodes.get(2).createModel(ConfigModelContext.create(null, null, root, "third"));
+ GraphMock.A a = (GraphMock.A) nodes.get(0).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "first"));
+ GraphMock.B b = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "second"));
+ GraphMock.B b2 = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "second2"));
+ GraphMock.C c = (GraphMock.C) nodes.get(2).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "third"));
assertNotNull(a);
assertNotNull(b);
assertNotNull(b2);
@@ -91,7 +89,8 @@ public class ModelGraphTest {
expectedEx.expect(IllegalArgumentException.class);
expectedEx.expectMessage("Constructor for " + GraphMock.Bad.class.getName() + " must have as its first argument a " + ConfigModelContext.class.getName());
ModelNode node = new ModelNode(new GraphMock.Bad.Builder());
- node.createModel(ConfigModelContext.create(null, null, new MockRoot(), "foo"));
+ MockRoot root = new MockRoot();
+ node.createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "foo"));
}
@Test
@@ -99,7 +98,8 @@ public class ModelGraphTest {
expectedEx.expect(IllegalArgumentException.class);
expectedEx.expectMessage("Unable to find constructor argument class java.lang.String for com.yahoo.config.model.graph.GraphMock$Bad2");
ModelNode node = new ModelNode(new GraphMock.Bad2.Builder());
- node.createModel(ConfigModelContext.create(null, null, new MockRoot(), "foo"));
+ MockRoot root = new MockRoot();
+ node.createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "foo"));
}
@Test
@@ -107,8 +107,8 @@ public class ModelGraphTest {
ModelGraph graph = new ModelGraphBuilder().addBuilder(new GraphMock.BC()).addBuilder(new GraphMock.BA()).build();
List<ModelNode> nodes = graph.topologicalSort();
MockRoot root = new MockRoot();
- GraphMock.A a = (GraphMock.A) nodes.get(0).createModel(ConfigModelContext.create(null, null, root, "first"));
- GraphMock.C c = (GraphMock.C) nodes.get(1).createModel(ConfigModelContext.create(null, null, root, "second"));
+ GraphMock.A a = (GraphMock.A) nodes.get(0).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "first"));
+ GraphMock.C c = (GraphMock.C) nodes.get(1).createModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "second"));
assertThat(c.a, is(a));
assertTrue(c.b.isEmpty());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
index 7402d75dbb0..38c7547c625 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
@@ -5,6 +5,7 @@ import com.yahoo.cloud.config.log.LogdConfig;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.admin.*;
@@ -206,12 +207,13 @@ public class DomAdminV2BuilderTest extends DomBuilderTest {
}
private Admin buildAdmin(Element xml, boolean multitenant, List<ConfigServerSpec> configServerSpecs) {
+ DeployState deployState = DeployState.createTestState();
final DomAdminV2Builder domAdminBuilder =
new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT,
- root.getDeployState().getFileRegistry(), multitenant,
+ deployState.getFileRegistry(), multitenant,
configServerSpecs);
- Admin admin = domAdminBuilder.build(root, xml);
- admin.addPerHostServices(root.getHostSystem().getHosts(), root.getDeployState());
+ Admin admin = domAdminBuilder.build(deployState, root, xml);
+ admin.addPerHostServices(root.getHostSystem().getHosts(), deployState);
return admin;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
index 08fa820a830..25f611cc9b7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
@@ -19,7 +19,7 @@ public class DomComponentBuilderTest extends DomBuilderTest {
@Test
public void ensureCorrectModel() {
- Component<?, ?> handler = new DomComponentBuilder().doBuild(root, parse(
+ Component<?, ?> handler = new DomComponentBuilder().doBuild(root.getDeployState(), root, parse(
"<handler id='theId' class='theClass' bundle='theBundle' />"));
BundleInstantiationSpecification instantiationSpecification = handler.model.bundleInstantiationSpec;
@@ -31,7 +31,7 @@ public class DomComponentBuilderTest extends DomBuilderTest {
@Test
@SuppressWarnings("unchecked")
public void components_can_be_nested() {
- Component<Component<?, ?>, ?> parent = new DomComponentBuilder().doBuild(root, parse(
+ Component<Component<?, ?>, ?> parent = new DomComponentBuilder().doBuild(root.getDeployState(), root, parse(
"<component id='parent'>",
" <component id='child' />",
"</component>"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
index 0126c58eec5..2ccf048df92 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
@@ -39,7 +39,7 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest {
private Tuning createTuning(Element xml) {
DomSearchTuningBuilder b = new DomSearchTuningBuilder();
- return b.build(root, xml);
+ return b.build(root.getDeployState(), root, xml);
}
String getProtonCfg(Tuning tuning) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
index 93efadba451..810d915aa59 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
@@ -27,7 +27,7 @@ public class DomFederationSearcherBuilderTest extends DomBuilderTest {
@Test
public void ensureCorrectModel() {
- FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root, parse(
+ FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root.getDeployState(), root, parse(
"<federation id='theId'>",
" <provides>p2</provides>",
" <source-set inherits=\"default\" />",
@@ -59,7 +59,7 @@ public class DomFederationSearcherBuilderTest extends DomBuilderTest {
@Test
public void require_that_target_selector_can_be_configured() {
- FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root, parse(
+ FederationSearcher searcher = new DomFederationSearcherBuilder().doBuild(root.getDeployState(), root, parse(
"<federation id='federation-id'>",
" <target-selector id='my-id' class='my-class' />",
"</federation>"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilderTest.java
index 9796ee91983..7dc0f881b33 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilderTest.java
@@ -58,7 +58,7 @@ public class DomProviderBuilderTest extends DomBuilderTest {
@Test
public void testCertificateConfig_noProxy() {
- provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root, noProxy);
+ provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root.getDeployState(), root, noProxy);
ChainedComponent providerSearcher = provider.getInnerComponents().iterator().next();
assertThat(providerSearcher, instanceOf(HttpProviderSearcher.class));
@@ -72,7 +72,7 @@ public class DomProviderBuilderTest extends DomBuilderTest {
@Test
public void testCertificatewConfig_defaultProxy() {
- provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root, defaultProxy);
+ provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root.getDeployState(), root, defaultProxy);
ProviderConfig.Builder providerBuilder = new ProviderConfig.Builder();
((HttpProvider)provider).getConfig(providerBuilder);
@@ -86,7 +86,7 @@ public class DomProviderBuilderTest extends DomBuilderTest {
@Test
public void testCertificateConfig_proprietaryProxy() {
- provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root, proprietaryProxy);
+ provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root.getDeployState(), root, proprietaryProxy);
ProviderConfig.Builder providerBuilder = new ProviderConfig.Builder();
((HttpProvider)provider).getConfig(providerBuilder);
@@ -101,7 +101,7 @@ public class DomProviderBuilderTest extends DomBuilderTest {
@Test
public void testFail_ycaProxyWithoutId() {
try {
- provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root, illegal_proxyWithoutId);
+ provider = new DomProviderBuilder(new HashMap<String, ComponentsBuilder.ComponentType>()).doBuild(root.getDeployState(), root, illegal_proxyWithoutId);
fail("Expected exception upon illegal xml.");
} catch (IllegalArgumentException e) {
assertThat(e.getMessage(), is("Provider 'yca-provider' must have a certificate application ID, since a certificate store proxy is given"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
index a13f9252e5f..cc139913536 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
@@ -69,7 +69,7 @@ public class DomSearchChainsBuilderTest extends DomBuilderTest {
@Before
public void createSearchChains() {
- searchChains = new DomSearchChainsBuilder().build(root, element);
+ searchChains = new DomSearchChainsBuilder().build(root.getDeployState(), root, element);
}
@Test
@@ -88,7 +88,8 @@ public class DomSearchChainsBuilderTest extends DomBuilderTest {
"</searchchains>");
try {
- new DomSearchChainsBuilder().build(new MockRoot(), element);
+ MockRoot root = new MockRoot();
+ new DomSearchChainsBuilder().build(root.getDeployState(), root, element);
fail("Expected exception when referring to an outer 'federation' as a 'searcher'.");
} catch (RuntimeException e) {
assertThat(e.getMessage(), containsString("Two different types declared for the component with name 'federationSearcher'"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 756a0c53485..1918b8afb8f 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -4,10 +4,8 @@ package com.yahoo.vespa.model.container;
import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.cloud.config.RoutingProviderConfig;
-import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
@@ -16,7 +14,6 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.container.handler.ThreadpoolConfig;
import com.yahoo.container.jdisc.config.MetricDefaultsConfig;
import com.yahoo.search.config.QrStartConfig;
-import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.vespa.model.Host;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerClusterVerifier;
@@ -81,7 +78,7 @@ public class ContainerClusterTest {
.zone(new Zone(SystemName.cd, Environment.test, RegionName.from("some-region")))
.build();
MockRoot root = new MockRoot("foo", state);
- ContainerCluster cluster = new ContainerCluster(root, "container0", "container1");
+ ContainerCluster cluster = new ContainerCluster(root, "container0", "container1", state);
ConfigserverConfig.Builder builder = new ConfigserverConfig.Builder();
cluster.getConfig(builder);
ConfigserverConfig config = new ConfigserverConfig(builder);
@@ -112,8 +109,8 @@ public class ContainerClusterTest {
MockRoot root = new MockRoot("foo", state);
ContainerCluster cluster = extraComponents.isPresent()
- ? new ContainerCluster(root, "container0", "container1", extraComponents.get())
- : new ContainerCluster(root, "container0", "container1");
+ ? new ContainerCluster(root, "container0", "container1", extraComponents.get(), state)
+ : new ContainerCluster(root, "container0", "container1", state);
if (isCombinedCluster)
cluster.setHostClusterId("test-content-cluster");
cluster.setMemoryPercentage(memoryPercentage);
@@ -258,7 +255,7 @@ public class ContainerClusterTest {
public void requireThatRoutingProviderIsDisabledForNonHosted() {
DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(false).build()).build();
MockRoot root = new MockRoot("foo", state);
- ContainerCluster cluster = new ContainerCluster(root, "container0", "container1");
+ ContainerCluster cluster = new ContainerCluster(root, "container0", "container1", state);
RoutingProviderConfig.Builder builder = new RoutingProviderConfig.Builder();
cluster.getConfig(builder);
RoutingProviderConfig config = new RoutingProviderConfig(builder);
@@ -268,21 +265,21 @@ public class ContainerClusterTest {
private static void addContainer(ContainerCluster cluster, String name, String hostName) {
- Container container = new Container(cluster, name, 0);
+ Container container = new Container(cluster, name, 0, cluster.isHostedVespa());
container.setHostResource(new HostResource(new Host(null, hostName)));
container.initService();
cluster.addContainer(container);
}
private static void addClusterController(ContainerCluster cluster, String hostName) {
- Container container = new ClusterControllerContainer(cluster, 1, false);
+ Container container = new ClusterControllerContainer(cluster, 1, false, cluster.isHostedVespa());
container.setHostResource(new HostResource(new Host(null, hostName)));
container.initService();
cluster.addContainer(container);
}
private static ContainerCluster newContainerCluster() {
- ContainerCluster cluster = new ContainerCluster(null, "subId", "name");
+ ContainerCluster cluster = new ContainerCluster(null, "subId", "name", DeployState.createTestState());
addContainer(cluster, "c1", "host-c1");
addContainer(cluster, "c2", "host-c2");
return cluster;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
index 9d5508cca75..643e65ffc61 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
@@ -30,7 +30,7 @@ public class FilterBindingsTest extends DomBuilderTest {
private static final String MY_CHAIN_BINDING = "http://*/my-chain-binding";
private Http buildHttp(Element xml) throws Exception {
- Http http = new HttpBuilder().build(root, xml);
+ Http http = new HttpBuilder().build(root.getDeployState(), root, xml);
root.freezeModelTopology();
http.validate();
return http;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
index 26b9f025dba..95d952c6f2b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
@@ -24,7 +24,7 @@ public class FilterChainsTest extends DomBuilderTest {
@Before
public void setupFilterChains() {
- http = new HttpBuilder().build(root, servicesXml());
+ http = new HttpBuilder().build(root.getDeployState(), root, servicesXml());
root.freezeModelTopology();
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
index 346afe92ead..88ee99b1a90 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
@@ -26,7 +26,7 @@ public class FilterConfigTest extends DomBuilderTest {
@Before
public void setupFilterChains() {
- http = new HttpBuilder().build(root, servicesXml());
+ http = new HttpBuilder().build(root.getDeployState(), root, servicesXml());
root.freezeModelTopology();
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
index 36425aabaf0..d46f2a5e35f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
@@ -26,7 +26,7 @@ public class ProcessingChainsTest extends DomBuilderTest {
@Before
public void setupProcessingChains() {
DomProcessingBuilder processingBuilder = new DomProcessingBuilder(null);
- processingBuilder.build(root, servicesXml());
+ processingBuilder.build(root.getDeployState(), root, servicesXml());
processingChains = (Chains<ProcessingChain>)root.getChildren().get("processing");
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
index b4c9bd4d06f..9122e855461 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
@@ -33,7 +33,8 @@ public class SearchChainsTest2 {
" <chain id='default' inherits='nonexistent' />",
"</search>");
try {
- SearchChains chains = new DomSearchChainsBuilder().build(new MockRoot(), searchElem);
+ MockRoot root = new MockRoot();
+ SearchChains chains = new DomSearchChainsBuilder().build(root.getDeployState(), root, searchElem);
chains.validate();
fail("Expected exception when inheriting a nonexistent search chain.");
} catch (Exception e) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
index 91d2ffea4b8..9f7cbfd9a5b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
@@ -15,7 +15,7 @@ public abstract class SearchChainsTestBase extends DomBuilderTest {
@Before
public void setupSearchChains() {
- SearchChains searchChains = new DomSearchChainsBuilder().build(root, servicesXml());
+ SearchChains searchChains = new DomSearchChainsBuilder().build(root.getDeployState(), root, servicesXml());
searchChains.initialize(MockSearchClusters.twoMockClusterSpecsByName(root),
new BinaryScaledAmount(100, BinaryPrefix.mega));
root.freezeModelTopology();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
index c734addb8ce..52029d4c434 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.model.container.xml;
import com.google.common.collect.ImmutableSet;
import com.yahoo.collections.CollectionUtil;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
-import com.yahoo.config.model.test.TestUtil;
import com.yahoo.container.jdisc.state.StateHandler;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.http.AccessControl;
@@ -61,7 +60,7 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
" </filtering>",
" </http>");
- Http http = new HttpBuilder().build(root, clusterElem);
+ Http http = new HttpBuilder().build(root.getDeployState(), root, clusterElem);
root.freezeModelTopology();
assertTrue(http.getFilterChains().hasChain(AccessControl.ACCESS_CONTROL_CHAIN_ID));
@@ -79,7 +78,7 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
" </filtering>",
" </http>");
- Http http = new HttpBuilder().build(root, clusterElem);
+ Http http = new HttpBuilder().build(root.getDeployState(), root, clusterElem);
root.freezeModelTopology();
AccessControl accessControl = http.getAccessControl().get();
@@ -97,7 +96,7 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
" </filtering>",
" </http>");
- Http http = new HttpBuilder().build(root, clusterElem);
+ Http http = new HttpBuilder().build(root.getDeployState(), root, clusterElem);
root.freezeModelTopology();
assertFalse("Wrong default value for read.", http.getAccessControl().get().readEnabled);
@@ -113,7 +112,7 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
" </filtering>",
" </http>");
- Http http = new HttpBuilder().build(root, clusterElem);
+ Http http = new HttpBuilder().build(root.getDeployState(), root, clusterElem);
root.freezeModelTopology();
assertTrue("Given read value not honoured.", http.getAccessControl().get().readEnabled);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
index 419ee613a45..41fb4a3d35b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
@@ -13,7 +13,8 @@ import static org.junit.Assert.assertEquals;
public class FleetControllerClusterTest {
ClusterControllerConfig parse(String xml) {
Document doc = XML.getDocument(xml);
- return new ClusterControllerConfig.Builder("storage", new ModelElement(doc.getDocumentElement())).build(new MockRoot(),
+ MockRoot root = new MockRoot();
+ return new ClusterControllerConfig.Builder("storage", new ModelElement(doc.getDocumentElement())).build(root.getDeployState(), root,
new ModelElement(doc.getDocumentElement()).getXml());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
index 89d81ee262b..fd97bf1f7b2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
@@ -59,9 +59,12 @@ public class ContentClusterUtils {
public static ContentCluster createCluster(String clusterXml, MockRoot root) {
Document doc = XML.getDocument(clusterXml);
- Admin admin = new Admin(root, new DefaultMonitoring("vespa", 60), new Metrics(), Collections.emptyMap(), false,
- new FileDistributionConfigProducer(root, new MockFileRegistry(), null));
- ConfigModelContext context = ConfigModelContext.create(null, root.getDeployState(), null,null, root, null);
+ Admin admin = new Admin(root, new DefaultMonitoring("vespa", 60), new Metrics(),
+ Collections.emptyMap(), false,
+ new FileDistributionConfigProducer(root, new MockFileRegistry(), null),
+ root.getDeployState().isHosted());
+ ConfigModelContext context = ConfigModelContext.create(null, root.getDeployState(),
+ null,null, root, null);
return new ContentCluster.Builder(admin).build(Collections.emptyList(), context, doc.getDocumentElement());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
index 11d06666eb1..5b03d33e568 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
@@ -11,7 +11,6 @@ import org.junit.Test;
import org.xml.sax.SAXException;
import java.io.IOException;
-import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -32,7 +31,7 @@ public class GenericServicesModelTest {
@Test
public void test_generic_services_model() {
MockRoot root = new MockRoot();
- GenericServicesModel model = new GenericServicesModel(ConfigModelContext.create(null, null, root, "foo"));
+ GenericServicesModel model = new GenericServicesModel(ConfigModelContext.create(root.getDeployState(), null, null, root, "foo"));
assertThat(model.serviceClusters().size(), is(0));
model.addCluster(new ServiceCluster(root, "mycluster", "/bin/foo"));
assertThat(model.serviceClusters().size(), is(1));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
index ff611d4ad0c..84f414a3bae 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
@@ -290,7 +290,7 @@ public class MultilevelDispatchTest {
List<SearchNode> searchNodes = new ArrayList<>();
MockRoot root = new MockRoot("");
for (int i = 0; i < numNodes; ++i) {
- searchNodes.add(SearchNode.create(root, "mynode" + i, i, new NodeSpec(0, i), "mycluster", null, false, Optional.empty()));
+ searchNodes.add(SearchNode.create(root, "mynode" + i, i, new NodeSpec(0, i), "mycluster", null, false, Optional.empty(), root.getDeployState().isHosted()));
}
return searchNodes;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
index 66cad9195e4..715676f712c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
@@ -47,14 +47,15 @@ public class SearchNodeTest {
root.freezeModelTopology();
}
- private static SearchNode createSearchNode(AbstractConfigProducer parent, String name, int distributionKey, NodeSpec nodeSpec, boolean flushOnShutDown) {
- return SearchNode.create(parent, name, distributionKey, nodeSpec, "mycluster", null, flushOnShutDown, Optional.empty());
+ private static SearchNode createSearchNode(AbstractConfigProducer parent, String name, int distributionKey,
+ NodeSpec nodeSpec, boolean flushOnShutDown, boolean isHosted) {
+ return SearchNode.create(parent, name, distributionKey, nodeSpec, "mycluster", null, flushOnShutDown, Optional.empty(), isHosted);
}
@Test
public void requireThatBasedirIsCorrectForElasticMode() {
MockRoot root = new MockRoot("");
- SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false);
+ SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted());
prepare(root, node);
assertBaseDir(Defaults.getDefaults().underVespaHome("var/db/vespa/search/cluster.mycluster/n3"), node);
}
@@ -62,7 +63,7 @@ public class SearchNodeTest {
@Test
public void requireThatPreShutdownCommandIsEmptyWhenNotActivated() {
MockRoot root = new MockRoot("");
- SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false);
+ SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode")));
node.initService();
assertFalse(node.getPreShutdownCommand().isPresent());
@@ -71,7 +72,7 @@ public class SearchNodeTest {
@Test
public void requireThatPreShutdownCommandUsesPrepareRestartWhenActivated() {
MockRoot root = new MockRoot("");
- SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true);
+ SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode2")));
node.initService();
assertTrue(node.getPreShutdownCommand().isPresent());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
index 5c243fc7e72..c00ef7d8469 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
@@ -54,12 +54,11 @@ public class ApiConfigModel extends ConfigModel {
}
@Override
- public void doBuild(ApiConfigModel configModel, Element spec, ConfigModelContext modelContext) {
+ public void doBuild(ApiConfigModel configModel, Element spec, ConfigModelContext context) {
NodeList pl = spec.getElementsByTagName("apiservice");
if (pl.getLength() > 0) {
for (int i=0; i < pl.getLength(); i++) {
- configModel.apiServices.add(new DomTestServiceBuilder.ApiServiceBuilder(i).build(modelContext.getParentProducer(),
- (Element) pl.item(i)));
+ configModel.apiServices.add(new DomTestServiceBuilder.ApiServiceBuilder(i).build(context.getDeployState(), context.getParentProducer(), (Element) pl.item(i)));
}
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
index 0a1997cc3b6..8fe808582eb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
@@ -47,7 +47,7 @@ public class SimpleConfigModel extends ConfigModel implements TestApi {
}
@Override
- public void doBuild(SimpleConfigModel configModel, Element spec, ConfigModelContext modelContext) {
+ public void doBuild(SimpleConfigModel configModel, Element spec, ConfigModelContext context) {
int s,p; s=p=0;
// Validate the services given in the config
@@ -62,11 +62,11 @@ public class SimpleConfigModel extends ConfigModel implements TestApi {
String service = e.getTagName();
if (service.equals("simpleservice")) {
- configModel.simpleServices.add(new DomTestServiceBuilder.SimpleServiceBuilder(s).build(modelContext.getParentProducer(), e));
+ configModel.simpleServices.add(new DomTestServiceBuilder.SimpleServiceBuilder(s).build(context.getDeployState(), context.getParentProducer(), e));
s++;
}
else if (service.equals("parentservice")) {
- configModel.parentServices.add(new DomTestServiceBuilder.ParentServiceBuilder(p).build(modelContext.getParentProducer(), e));
+ configModel.parentServices.add(new DomTestServiceBuilder.ParentServiceBuilder(p).build(context.getDeployState(), context.getParentProducer(), e));
p++;
}
else {