summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-08-24 18:39:36 +0200
committerJon Bratseth <bratseth@oath.com>2018-08-24 18:39:36 +0200
commit35e957f09c4018c2e1bab70da2e632130b0b43e6 (patch)
treeccc5414c93737c7b4ca3cd4362043ca65d9d12e3 /config-model
parent0c1bd91225452980d79f7a9a38d1e5fa5aba8644 (diff)
Generate a global rank profile config
This makes available to all regular container clusters a config containing a set of rank profiles containing the expressions resulting from converting all the ml models added in the models/ directory in the application package.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java4
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java30
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java24
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java24
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java28
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java3
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java43
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java12
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java9
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java5
-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/xml/ContainerModelBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java2
28 files changed, 183 insertions, 85 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
index 912968747df..7a5969585e9 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
@@ -125,11 +125,11 @@ public class ApplicationConfigProducerRoot extends AbstractConfigProducer<Abstra
}
// TODO: Do this as another config model depending on the other models
- public void setupRouting(ConfigModelRepo configModels) {
+ public void setupRouting(VespaModel vespaModel, ConfigModelRepo configModels) {
if (admin != null) {
Routing routing = configModels.getRouting();
if (routing == null) {
- routing = new Routing(ConfigModelContext.create(configModels, this, "routing"));
+ routing = new Routing(ConfigModelContext.create(vespaModel, configModels, this, "routing"));
configModels.add(routing);
}
this.routing = routing;
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 78a8c161c3b..eea0b16b8e1 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
@@ -5,6 +5,7 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.vespa.model.VespaModel;
import java.util.stream.Stream;
@@ -19,16 +20,18 @@ public final class ConfigModelContext {
private final AbstractConfigProducer parent;
private final String producerId;
private final DeployState deployState;
+ private final VespaModel vespaModel;
private final ConfigModelRepoAdder configModelRepoAdder;
private final ApplicationType applicationType;
private ConfigModelContext(ApplicationType applicationType,
DeployState deployState,
- ConfigModelRepoAdder configModelRepoAdder,
+ VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder,
AbstractConfigProducer parent,
String producerId) {
this.applicationType = applicationType;
this.deployState = deployState;
+ this.vespaModel = vespaModel;
this.configModelRepoAdder = configModelRepoAdder;
this.parent = parent;
this.producerId = producerId;
@@ -40,18 +43,23 @@ public final class ConfigModelContext {
public DeployLogger getDeployLogger() { return deployState.getDeployLogger(); }
public DeployState getDeployState() { return deployState; }
public ApplicationType getApplicationType() { return applicationType; }
+ public VespaModel vespaModel() { return vespaModel; }
/** Returns write access to the config model repo, or null (only) if this is improperly initialized during testing */
public ConfigModelRepoAdder getConfigModelRepoAdder() { return configModelRepoAdder; }
/** Create a new context with a different parent */
public ConfigModelContext withParent(AbstractConfigProducer newParent) {
- return ConfigModelContext.create(deployState, configModelRepoAdder, newParent, producerId);
+ return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, newParent, producerId);
}
/** Create a new context with a different config model producer id */
public ConfigModelContext withId(String producerId) {
- return ConfigModelContext.create(deployState, configModelRepoAdder, parent, producerId);
+ return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, parent, producerId);
+ }
+
+ public ConfigModelContext with(VespaModel vespaModel) {
+ return ConfigModelContext.create(deployState, vespaModel, configModelRepoAdder, parent, producerId);
}
/**
@@ -61,9 +69,9 @@ public final class ConfigModelContext {
* @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(ConfigModelRepoAdder configModelRepoAdder,
+ public static ConfigModelContext create(VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder,
AbstractConfigProducer parent, String producerId) {
- return create(parent.getRoot().getDeployState(), configModelRepoAdder, parent, producerId);
+ return create(parent.getRoot().getDeployState(), vespaModel, configModelRepoAdder, parent, producerId);
}
/**
@@ -74,9 +82,12 @@ public final class ConfigModelContext {
* @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(DeployState deployState, ConfigModelRepoAdder configModelRepoAdder,
- AbstractConfigProducer parent, String producerId) {
- return new ConfigModelContext(ApplicationType.DEFAULT, deployState, configModelRepoAdder, parent, producerId);
+ public static ConfigModelContext create(DeployState deployState,
+ VespaModel vespaModel,
+ ConfigModelRepoAdder configModelRepoAdder,
+ AbstractConfigProducer parent,
+ String producerId) {
+ return new ConfigModelContext(ApplicationType.DEFAULT, deployState, vespaModel, configModelRepoAdder, parent, producerId);
}
/**
@@ -90,10 +101,11 @@ public final class ConfigModelContext {
*/
public static ConfigModelContext create(ApplicationType applicationType,
DeployState deployState,
+ VespaModel vespaModel,
ConfigModelRepoAdder configModelRepoAdder,
AbstractConfigProducer parent,
String producerId) {
- return new ConfigModelContext(applicationType, deployState, configModelRepoAdder, parent, producerId);
+ return new ConfigModelContext(applicationType, deployState, vespaModel, configModelRepoAdder, parent, producerId);
}
public enum ApplicationType {
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
index 5ec34b62ca2..60089f04572 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
@@ -15,6 +15,7 @@ import com.yahoo.log.LogLevel;
import com.yahoo.path.Path;
import com.yahoo.text.XML;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.builder.VespaModelBuilder;
import com.yahoo.vespa.model.clients.Clients;
import com.yahoo.vespa.model.content.Content;
@@ -71,10 +72,13 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
public Map<String,ConfigModel> asMap() { return Collections.unmodifiableMap(configModelMap); }
/** Initialize part 1.: Reads the config models used in the application package. */
- public void readConfigModels(DeployState deployState, VespaModelBuilder builder,
- ApplicationConfigProducerRoot root, ConfigModelRegistry configModelRegistry) throws IOException, SAXException {
+ public void readConfigModels(DeployState deployState,
+ VespaModel vespaModel,
+ VespaModelBuilder builder,
+ ApplicationConfigProducerRoot root,
+ ConfigModelRegistry configModelRegistry) throws IOException, SAXException {
Element userServicesElement = getServicesFromApp(deployState.getApplicationPackage());
- readConfigModels(root, userServicesElement, deployState, configModelRegistry);
+ readConfigModels(root, userServicesElement, deployState, vespaModel, configModelRegistry);
builder.postProc(root, this);
}
@@ -104,7 +108,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
* @param servicesRoot XML root node of the services file
*/
@SuppressWarnings("deprecation")
- private void readConfigModels(ApplicationConfigProducerRoot root, Element servicesRoot, DeployState deployState, ConfigModelRegistry configModelRegistry) throws IOException, SAXException {
+ private void readConfigModels(ApplicationConfigProducerRoot root,
+ Element servicesRoot,
+ DeployState deployState,
+ VespaModel vespaModel,
+ ConfigModelRegistry configModelRegistry) throws IOException, SAXException {
final Map<ConfigModelBuilder, List<Element>> model2Element = new LinkedHashMap<>();
ModelGraphBuilder graphBuilder = new ModelGraphBuilder();
@@ -140,7 +148,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
}
for (ModelNode node : graphBuilder.build().topologicalSort())
- buildModels(node, getApplicationType(servicesRoot), deployState, root, model2Element.get(node.builder));
+ buildModels(node, getApplicationType(servicesRoot), deployState, vespaModel, root, model2Element.get(node.builder));
for (ConfigModel model : configModels)
model.initialize(ConfigModelRepo.this); // XXX deprecated
}
@@ -174,10 +182,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
private void buildModels(ModelNode node,
ApplicationType applicationType,
DeployState deployState,
+ VespaModel vespaModel,
AbstractConfigProducer parent,
List<Element> elements) {
for (Element servicesElement : elements) {
- ConfigModel model = buildModel(node, applicationType, deployState, parent, servicesElement);
+ ConfigModel model = buildModel(node, applicationType, deployState, vespaModel, parent, servicesElement);
if (model.isServing())
add(model);
}
@@ -186,10 +195,11 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
private ConfigModel buildModel(ModelNode node,
ApplicationType applicationType,
DeployState deployState,
+ VespaModel vespaModel,
AbstractConfigProducer parent,
Element servicesElement) {
ConfigModelBuilder builder = node.builder;
- ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, this, parent, getIdString(servicesElement));
+ ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, vespaModel, this, parent, getIdString(servicesElement));
return builder.build(node, servicesElement, context);
}
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
index b16b65b9540..731cae48881 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
@@ -5,7 +5,7 @@ package com.yahoo.config.model;
* An interface which provides addition of new config models.
* This exists because some models need to add additional models during the build phase so *write* access
* to the config model repo is needed. *Read* access, on the other hand needs to happen through config model dependency
- * inkection to avoid circular dependencies or undeclared dependencies working by accident.
+ * injection to avoid circular dependencies or undeclared dependencies working by accident.
*
* @author bratseth
*/
diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
index bb0d24f9b26..b1e197db4eb 100644
--- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
@@ -9,6 +9,7 @@ import com.yahoo.config.model.ConfigModelRepo;
import com.yahoo.config.model.api.ConfigModelPlugin;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.vespa.model.VespaModel;
import org.w3c.dom.Element;
import java.lang.reflect.Constructor;
@@ -54,9 +55,9 @@ public abstract class ConfigModelBuilder<MODEL extends ConfigModel> extends Abst
* @param parent the root config producer this should be added to
* @param spec the XML element this is constructed from
*/
- public final MODEL build(DeployState deployState, ConfigModelRepo configModelRepo,
+ public final MODEL build(DeployState deployState, VespaModel vespaModel, ConfigModelRepo configModelRepo,
AbstractConfigProducer parent, Element spec) {
- ConfigModelContext context = ConfigModelContext.create(deployState, configModelRepo, parent, getIdString(spec));
+ ConfigModelContext context = ConfigModelContext.create(deployState, vespaModel, configModelRepo, parent, getIdString(spec));
return build(new DefaultModelInstanceFactory(), spec, context);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
index 599eef57b2f..53afebfd93b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
@@ -66,7 +66,9 @@ public class RankProfileRegistry {
* @return the RankProfile to return.
*/
public RankProfile get(Search search, String name) {
- return rankProfiles.get(search).get(name);
+ Map<String, RankProfile> profiles = rankProfiles.get(search);
+ if (profiles == null) return null;
+ return profiles.get(name);
}
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
index 55f3a94bb70..a3580a404a3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
@@ -41,8 +41,11 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce
/** Whether this has any position attribute */
private boolean hasPosition = false;
+ public static final AttributeFields empty = new AttributeFields(null);
+
public AttributeFields(Search search) {
- derive(search);
+ if (search != null)
+ derive(search);
}
/** Derives everything from a field */
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
index a0bac42d9b9..0417a879969 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
@@ -12,11 +12,16 @@ import java.util.Map;
/**
* The derived rank profiles of a search definition
*
- * @author bratseth
+ * @author bratseth
*/
public class RankProfileList extends Derived implements RankProfilesConfig.Producer {
- private Map<String, RawRankProfile> rankProfiles = new java.util.LinkedHashMap<>();
+ private final Map<String, RawRankProfile> rankProfiles = new java.util.LinkedHashMap<>();
+
+ public static RankProfileList empty = new RankProfileList();
+
+ private RankProfileList() {
+ }
/**
* Creates a rank profile
@@ -29,7 +34,7 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfiles,
ImportedModels importedModels) {
- setName(search.getName());
+ setName(search == null ? "default" : search.getName());
deriveRankProfiles(rankProfileRegistry, queryProfiles, importedModels, search, attributeFields);
}
@@ -38,11 +43,13 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
ImportedModels importedModels,
Search search,
AttributeFields attributeFields) {
- RawRankProfile defaultProfile = new RawRankProfile(rankProfileRegistry.get(search, "default"),
- queryProfiles,
- importedModels,
- attributeFields);
- rankProfiles.put(defaultProfile.getName(), defaultProfile);
+ if (search != null) { // profiles belonging to a search have a default profile
+ RawRankProfile defaultProfile = new RawRankProfile(rankProfileRegistry.get(search, "default"),
+ queryProfiles,
+ importedModels,
+ attributeFields);
+ rankProfiles.put(defaultProfile.getName(), defaultProfile);
+ }
for (RankProfile rank : rankProfileRegistry.rankProfilesOf(search)) {
if ("default".equals(rank.getName())) continue;
@@ -70,4 +77,5 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
rank.getConfig(builder);
}
}
+
}
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 ffb36bccf7f..675c3044609 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
@@ -27,7 +27,10 @@ import com.yahoo.config.model.producer.UserConfigRepo;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.log.LogLevel;
import com.yahoo.searchdefinition.RankProfile;
+import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.RankingConstants;
+import com.yahoo.searchdefinition.derived.AttributeFields;
+import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.integration.ml.ImportedModel;
import com.yahoo.searchlib.rankingexpression.integration.ml.ImportedModels;
@@ -106,7 +109,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
private List<ServiceCluster> serviceClusters = new ArrayList<>();
/** The global rank profiles of this model */
- private final ImmutableList<RankProfile> rankProfiles;
+ private final RankProfileList rankProfileList;
/** The global ranking constants of this model */
private final RankingConstants rankingConstants = new RankingConstants();
@@ -159,10 +162,17 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
this.applicationPackage = deployState.getApplicationPackage();
root = builder.getRoot(VespaModel.ROOT_CONFIGID, deployState, this);
if (complete) { // create a a completed, frozen model
- configModelRepo.readConfigModels(deployState, builder, root, configModelRegistry);
+ configModelRepo.readConfigModels(deployState, this, builder, root, configModelRegistry);
addServiceClusters(deployState.getApplicationPackage(), builder);
- this.rankProfiles = createGlobalRankProfiles(deployState.getImportedModels());
this.allocatedHosts = AllocatedHosts.withHosts(root.getHostSystem().getHostSpecs()); // must happen after the two lines above
+
+ createGlobalRankProfiles(deployState.getImportedModels(), deployState.rankProfileRegistry());
+ this.rankProfileList = new RankProfileList(null, // null search -> global
+ AttributeFields.empty,
+ deployState.rankProfileRegistry(),
+ deployState.getQueryProfiles().getRegistry(),
+ deployState.getImportedModels());
+
setupRouting();
this.fileDistributor = root.getFileDistributionConfigProducer().getFileDistributor();
getAdmin().addPerHostServices(getHostSystem().getHosts(), deployState);
@@ -175,7 +185,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
else { // create a model with no services instantiated and the given file distributor
this.allocatedHosts = AllocatedHosts.withHosts(root.getHostSystem().getHostSpecs());
this.fileDistributor = fileDistributor;
- this.rankProfiles = ImmutableList.of();
+ this.rankProfileList = RankProfileList.empty;
}
}
@@ -209,10 +219,11 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
/**
* Creates a rank profile not attached to any search definition, for each imported model in the application package
*/
- private ImmutableList<RankProfile> createGlobalRankProfiles(ImportedModels importedModels) {
+ private ImmutableList<RankProfile> createGlobalRankProfiles(ImportedModels importedModels,
+ RankProfileRegistry rankProfileRegistry) {
List<RankProfile> profiles = new ArrayList<>();
for (ImportedModel model : importedModels.all()) {
- RankProfile profile = new RankProfile(model.name(), this, deployState.rankProfileRegistry());
+ RankProfile profile = new RankProfile(model.name(), this, rankProfileRegistry);
for (Pair<String, RankingExpression> entry : model.outputExpressions(model.name())) {
profile.addMacro(entry.getFirst(), false).setRankingExpression(entry.getSecond());
}
@@ -220,8 +231,11 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
return ImmutableList.copyOf(profiles);
}
+ /** Returns the global rank profiles as a rank profile list */
+ public RankProfileList rankProfileList() { return rankProfileList; }
+
private void setupRouting() {
- root.setupRouting(configModelRepo);
+ root.setupRouting(this, configModelRepo);
}
/** Returns the one and only HostSystem of this VespaModel */
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 75cd755a91d..d67cb0c29c3 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
@@ -5,6 +5,7 @@ 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.producer.AbstractConfigProducer;
+import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.text.XML;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.model.SimpleConfigProducer;
@@ -89,7 +90,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
if (standaloneZooKeeper) {
parent = new ClusterControllerCluster(parent, "standalone");
}
- ContainerCluster cluster = new ContainerCluster(parent, "cluster-controllers", "cluster-controllers", new ClusterControllerClusterVerifier());
+ ContainerCluster cluster = new ContainerCluster(parent, "cluster-controllers", "cluster-controllers", new ClusterControllerClusterVerifier(), RankProfileList.empty);
ContainerModelBuilder.addDefaultHandler_legacyBuilder(cluster);
List<Container> containers = new ArrayList<>();
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 469b6781bae..dea900539b7 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
@@ -40,6 +40,10 @@ import com.yahoo.search.config.IndexInfoConfig;
import com.yahoo.search.config.QrStartConfig;
import com.yahoo.search.pagetemplates.PageTemplatesConfig;
import com.yahoo.search.query.profile.config.QueryProfilesConfig;
+import com.yahoo.searchdefinition.RankProfileRegistry;
+import com.yahoo.searchdefinition.derived.AttributeFields;
+import com.yahoo.searchdefinition.derived.RankProfileList;
+import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.model.PortsMeta;
import com.yahoo.vespa.model.Service;
@@ -65,6 +69,7 @@ import com.yahoo.vespa.model.container.jersey.JerseyHandler;
import com.yahoo.vespa.model.container.jersey.RestApi;
import com.yahoo.vespa.model.container.processing.ProcessingChains;
import com.yahoo.vespa.model.container.search.ContainerSearch;
+import com.yahoo.vespa.model.container.search.QueryProfiles;
import com.yahoo.vespa.model.container.search.searchchain.SearchChains;
import com.yahoo.vespa.model.content.Content;
import com.yahoo.vespa.model.search.AbstractSearchCluster;
@@ -122,7 +127,9 @@ public final class ContainerCluster
ServletPathsConfig.Producer,
RoutingProviderConfig.Producer,
ConfigserverConfig.Producer,
- ThreadpoolConfig.Producer
+ ThreadpoolConfig.Producer,
+ RankProfilesConfig.Producer
+
{
/**
@@ -169,6 +176,9 @@ public final class ContainerCluster
private final ContainerClusterVerifier clusterVerifier;
private final boolean isHostedVespa;
+ /** Global rank profiles, aka models */
+ private final RankProfileList rankProfileList;
+
private Map<String, String> concreteDocumentTypes = new LinkedHashMap<>();
private MetricDefaultsConfig.Factory.Enum defaultMetricConsumerFactory;
@@ -193,11 +203,30 @@ public final class ContainerCluster
}
}
- public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name) {
- this(parent, subId, name, new AcceptAllVerifier());
+ /**
+ * Creates a container cluster
+ *
+ * @param rankProfileList the list ofd global rank profiles containing models that should be available in
+ * container clusters
+ */
+ public ContainerCluster(AbstractConfigProducer<?> parent,
+ String subId,
+ String name,
+ RankProfileList rankProfileList) {
+ this(parent, subId, name, new AcceptAllVerifier(), rankProfileList);
}
- public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name, ContainerClusterVerifier verifier) {
+ /**
+ * Creates a container cluster
+ *
+ * @param rankProfileList the list ofd global rank profiles containing models that should be available in
+ * container clusters
+ */
+ public ContainerCluster(AbstractConfigProducer<?> parent,
+ String subId,
+ String name,
+ ContainerClusterVerifier verifier,
+ RankProfileList rankProfileList) {
super(parent, subId);
this.clusterVerifier = verifier;
this.name = name;
@@ -207,6 +236,7 @@ public final class ContainerCluster
componentGroup = new ComponentGroup<>(this, "component");
restApiGroup = new ConfigProducerGroup<>(this, "rest-api");
servletGroup = new ConfigProducerGroup<>(this, "servlet");
+ this.rankProfileList = rankProfileList;
addComponent(new StatisticsComponent());
addSimpleComponent(AccessLog.class);
@@ -694,6 +724,11 @@ public final class ContainerCluster
containerDocproc.getConfig(builder);
}
+ @Override
+ public void getConfig(RankProfilesConfig.Builder builder) {
+ rankProfileList.getConfig(builder);
+ }
+
public void setMbusParams(MbusParams mbusParams) {
this.mbusParams = mbusParams;
}
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 d81026c54d1..cb4cf92a223 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
@@ -25,6 +25,7 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.config.MetricDefaultsConfig;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.search.rendering.RendererRegistry;
+import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.text.XML;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.AbstractService;
@@ -143,11 +144,15 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
}
- private ContainerCluster createContainerCluster(Element spec, final ConfigModelContext modelContext) {
+ private ContainerCluster createContainerCluster(Element spec, ConfigModelContext modelContext) {
return new VespaDomBuilder.DomConfigProducerBuilder<ContainerCluster>() {
@Override
protected ContainerCluster doBuild(AbstractConfigProducer ancestor, Element producerSpec) {
- return new ContainerCluster(ancestor, modelContext.getProducerId(), modelContext.getProducerId());
+ return new ContainerCluster(ancestor,
+ modelContext.getProducerId(),
+ modelContext.getProducerId(),
+ modelContext.vespaModel() != null ? modelContext.vespaModel().rankProfileList()
+ : RankProfileList.empty);
}
}.build(modelContext.getParentProducer(), 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 7bd70bba87a..d3709e88f29 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
@@ -14,6 +14,7 @@ import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.builder.xml.ConfigModelId;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.log.LogLevel;
+import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.vespa.model.*;
import com.yahoo.vespa.model.admin.Admin;
import com.yahoo.vespa.model.container.Container;
@@ -298,7 +299,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, RankProfileList.empty);
ContainerModel indexingClusterModel = new ContainerModel(modelContext.withParent(parent).withId(indexingCluster.getSubId()));
indexingClusterModel.setCluster(indexingCluster);
modelContext.getConfigModelRepoAdder().add(indexingClusterModel);
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 154f719ff10..cce367ed611 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
@@ -8,6 +8,7 @@ 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;
@@ -435,8 +436,15 @@ public class ContentCluster extends AbstractConfigProducer implements
return sortedHosts;
}
- private ContainerCluster createClusterControllers(AbstractConfigProducer parent, Collection<HostResource> hosts, String name, boolean multitenant) {
- ContainerCluster clusterControllers = new ContainerCluster(parent, name, name, new ClusterControllerClusterVerifier());
+ private ContainerCluster createClusterControllers(AbstractConfigProducer parent,
+ Collection<HostResource> hosts,
+ String name,
+ boolean multitenant) {
+ ContainerCluster clusterControllers = new ContainerCluster(parent,
+ name,
+ name,
+ new ClusterControllerClusterVerifier(),
+ RankProfileList.empty);
List<Container> containers = new ArrayList<>();
// Add a cluster controller on each config server (there is always at least one).
if (clusterControllers.getContainers().isEmpty()) {
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 aa17ea894bf..cb51cf23830 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
@@ -9,15 +9,12 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.MockRoot;
import org.junit.Test;
-import java.util.Optional;
-
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
/**
- * @author lulf
- * @since 5.1
+ * @author Ulf Lilleengen
*/
public class ConfigModelContextTest {
@@ -30,12 +27,12 @@ public class ConfigModelContextTest {
.build();
DeployState deployState = DeployState.createTestState(pkg);
DeployLogger logger = deployState.getDeployLogger();
- ConfigModelContext ctx = ConfigModelContext.create(deployState, null, root, id);
+ ConfigModelContext ctx = ConfigModelContext.create(deployState, null, null, root, id);
assertThat(ctx.getApplicationPackage(), is(pkg));
assertThat(ctx.getProducerId(), is(id));
assertThat(ctx.getParentProducer(), is(root));
assertThat(ctx.getDeployLogger(), is(logger));
- ctx = ConfigModelContext.create(null, root, id);
+ ctx = ConfigModelContext.create(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 34da6e588be..85c5f5ece45 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
@@ -64,10 +64,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, root, "first"));
- GraphMock.B b = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(null, root, "second"));
- GraphMock.B b2 = (GraphMock.B) nodes.get(1).createModel(ConfigModelContext.create(null, root, "second2"));
- GraphMock.C c = (GraphMock.C) nodes.get(2).createModel(ConfigModelContext.create(null, root, "third"));
+ 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"));
assertNotNull(a);
assertNotNull(b);
assertNotNull(b2);
@@ -91,7 +91,7 @@ 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, new MockRoot(), "foo"));
+ node.createModel(ConfigModelContext.create(null, null, new MockRoot(), "foo"));
}
@Test
@@ -99,7 +99,7 @@ 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, new MockRoot(), "foo"));
+ node.createModel(ConfigModelContext.create(null, null, new MockRoot(), "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, root, "first"));
- GraphMock.C c = (GraphMock.C) nodes.get(1).createModel(ConfigModelContext.create(null, root, "second"));
+ 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"));
assertThat(c.a, is(a));
assertTrue(c.b.isEmpty());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
index 8070c4ef1bd..76182076ee5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
@@ -27,7 +27,7 @@ public class LegacyConfigModelBuilderTest {
String services = "<foo><config name=\"bar\"><key>value</key></config></foo>";
ModelBuilder builder = new ModelBuilder();
Model model = builder.build(DeployState.createTestState(new MockApplicationPackage.Builder().withServices(services).build()),
- null, new MockRoot(), XML.getDocument(services).getDocumentElement());
+ null, null, new MockRoot(), XML.getDocument(services).getDocumentElement());
assertThat(model.getContext().getParentProducer().getUserConfigs().size(), is(1));
}
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 d9c151480fe..850fd91e151 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
@@ -16,6 +16,7 @@ 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;
@@ -80,7 +81,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", RankProfileList.empty);
ConfigserverConfig.Builder builder = new ConfigserverConfig.Builder();
cluster.getConfig(builder);
ConfigserverConfig config = new ConfigserverConfig(builder);
@@ -111,8 +112,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(), RankProfileList.empty)
+ : new ContainerCluster(root, "container0", "container1", RankProfileList.empty);
if (isCombinedCluster)
cluster.setHostClusterId("test-content-cluster");
cluster.setMemoryPercentage(memoryPercentage);
@@ -257,7 +258,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", RankProfileList.empty);
RoutingProviderConfig.Builder builder = new RoutingProviderConfig.Builder();
cluster.getConfig(builder);
RoutingProviderConfig config = new RoutingProviderConfig(builder);
@@ -281,7 +282,7 @@ public class ContainerClusterTest {
}
private static ContainerCluster newContainerCluster() {
- ContainerCluster cluster = new ContainerCluster(null, "subId", "name");
+ ContainerCluster cluster = new ContainerCluster(null, "subId", "name", RankProfileList.empty);
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/configserver/ConfigserverClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
index d4209c9c788..b4ad2ddbd21 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
@@ -38,7 +38,7 @@ public class ConfigserverClusterTest {
new ConfigServerContainerModelBuilder(new TestOptions().rpcPort(12345).useVespaVersionInRequest(true)
.hostedVespa(true).environment("test").region("bar")
.numParallelTenantLoaders(99))
- .build(new DeployState.Builder().build(), null, root, XML.getDocument(services).getDocumentElement());
+ .build(new DeployState.Builder().build(), null, null, root, XML.getDocument(services).getDocumentElement());
root.freezeModelTopology();
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
index 8995d6b80b0..3edc70833d8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
@@ -18,14 +18,13 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
- * @since 5.1.14
+ * @author Einar M R Rosenvinge
*/
public class StandaloneDocprocContainerTest extends DomBuilderTest {
public ContainerCluster setupCluster(boolean standalone) {
ContainerModelBuilder builder = new ContainerModelBuilder(standalone, Networking.disable);
- ContainerModel model = builder.build(DeployState.createTestState(), null, root, servicesXml());
+ ContainerModel model = builder.build(DeployState.createTestState(), null, null, root, servicesXml());
if (!standalone)
model.getCluster().getDocproc().getChains().addServersAndClientsForChains();
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 420115627dc..9d5508cca75 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
@@ -38,7 +38,7 @@ public class FilterBindingsTest extends DomBuilderTest {
private void buildContainerCluster(Element containerElem) throws SAXException, IOException {
- ContainerModel model = new ContainerModelBuilder(true, Networking.enable).build(DeployState.createTestState(), null, root, containerElem);
+ ContainerModel model = new ContainerModelBuilder(true, Networking.enable).build(DeployState.createTestState(), null, null, root, containerElem);
root.freezeModelTopology();
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index e3dfa093735..f94ebab42a9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -513,7 +513,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
"</jdisc>");
DeployState deployState = new DeployState.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east-1"))).build();
- createModel(root, deployState, clusterElem);
+ createModel(root, deployState, null, clusterElem);
assertEquals(0, getContainerCluster("default").serviceAliases().size());
assertEquals(0, getContainerCluster("default").endpointAliases().size());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
index 47f8a1bbe29..e46e736dcd6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
@@ -5,6 +5,7 @@ import com.yahoo.component.ComponentId;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.container.ComponentsConfig;
+import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.ContainerModel;
import com.yahoo.vespa.model.container.component.Component;
@@ -22,7 +23,6 @@ import java.util.Collections;
* not be done when using this class
*
* @author gjoranv
- * @since 5.5
*/
public abstract class ContainerModelBuilderTestBase {
@@ -32,17 +32,18 @@ public abstract class ContainerModelBuilderTestBase {
" </nodes>";
protected MockRoot root;
- public static void createModel(MockRoot root, DeployState deployState, Element... containerElems) throws SAXException, IOException {
+ public static void createModel(MockRoot root, DeployState deployState, VespaModel vespaModel, Element... containerElems) {
for (Element containerElem : containerElems) {
- ContainerModel model = new ContainerModelBuilder(false, ContainerModelBuilder.Networking.enable).build(deployState, null, root, containerElem);
+ ContainerModel model = new ContainerModelBuilder(false, ContainerModelBuilder.Networking.enable)
+ .build(deployState, vespaModel, null, root, containerElem);
ContainerCluster cluster = model.getCluster();
generateDefaultSearchChains(cluster);
}
root.freezeModelTopology();
}
- public static void createModel(MockRoot root, Element... containerElems) throws SAXException, IOException {
- createModel(root, DeployState.createTestState(), containerElems);
+ public static void createModel(MockRoot root, Element... containerElems) {
+ createModel(root, DeployState.createTestState(), null, containerElems);
}
private static void generateDefaultSearchChains(ContainerCluster cluster) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
index 31191d0c5fb..f4d3fbc782c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
@@ -49,7 +49,7 @@ public class DocprocBuilderTest extends DomBuilderTest {
@Before
public void setupCluster() {
- ContainerModel model = new ContainerModelBuilder(false, Networking.disable).build(DeployState.createTestState(), null, root, servicesXml());
+ ContainerModel model = new ContainerModelBuilder(false, Networking.disable).build(DeployState.createTestState(), null, null, root, servicesXml());
cluster = model.getCluster();
cluster.getDocproc().getChains().addServersAndClientsForChains();
root.freezeModelTopology();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
index d3ad2ccc721..0fd138a7943 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
@@ -34,7 +34,7 @@ public class IdentityBuilderTest extends ContainerModelBuilderTestBase {
.withDeploymentSpec(deploymentXml)
.build();
- createModel(root, DeployState.createTestState(applicationPackage), clusterElem);
+ createModel(root, DeployState.createTestState(applicationPackage), null, clusterElem);
IdentityConfig identityConfig = root.getConfig(IdentityConfig.class, "default/component/" + IdentityProvider.CLASS);
assertEquals("domain", identityConfig.domain());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
index a2f32694340..3d61ec3a3af 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
@@ -70,7 +70,7 @@ public class RoutingBuilderTest extends ContainerModelBuilderTestBase {
.build();
root = new MockRoot("root", deployState);
- createModel(root, deployState, clusterElem);
+ createModel(root, deployState, null, clusterElem);
ContainerCluster cluster = getContainerCluster("default");
return cluster.getContainers().get(0);
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 b0d6c94947a..89d81ee262b 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
@@ -61,8 +61,8 @@ public class ContentClusterUtils {
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, root, null);
-
+ 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 21521ba6b7e..91e9e5e656f 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
@@ -32,7 +32,7 @@ public class GenericServicesModelTest {
@Test
public void test_generic_services_model() {
MockRoot root = new MockRoot();
- GenericServicesModel model = new GenericServicesModel(ConfigModelContext.create(null, root, "foo"));
+ GenericServicesModel model = new GenericServicesModel(ConfigModelContext.create(null, null, root, "foo"));
assertThat(model.serviceClusters().size(), is(0));
model.addCluster(new ServiceCluster(root, "mycluster", "/bin/foo"));
assertThat(model.serviceClusters().size(), is(1));