diff options
Diffstat (limited to 'config-model')
15 files changed, 138 insertions, 126 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java index 7c3d8e4763f..a6f8d510c0d 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java @@ -54,7 +54,6 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea private int maxActivationInhibitedOutOfSyncGroups = 0; private List<TenantSecretStore> tenantSecretStores = Collections.emptyList(); private String jvmOmitStackTraceInFastThrowOption; - private int numDistributorStripes = 0; private int maxConcurrentMergesPerNode = 16; private int maxMergeQueueSize = 1024; private boolean ignoreMergeQueueLimit = false; @@ -99,7 +98,6 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea @Override public int maxActivationInhibitedOutOfSyncGroups() { return maxActivationInhibitedOutOfSyncGroups; } @Override public List<TenantSecretStore> tenantSecretStores() { return tenantSecretStores; } @Override public String jvmOmitStackTraceInFastThrowOption(ClusterSpec.Type type) { return jvmOmitStackTraceInFastThrowOption; } - @Override public int numDistributorStripes() { return numDistributorStripes; } @Override public boolean allowDisableMtls() { return allowDisableMtls; } @Override public List<X509Certificate> operatorCertificates() { return operatorCertificates; } @Override public int largeRankExpressionLimit() { return largeRankExpressionLimit; } @@ -247,11 +245,6 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea return this; } - public TestProperties setNumDistributorStripes(int value) { - this.numDistributorStripes = value; - return this; - } - public TestProperties allowDisableMtls(boolean value) { this.allowDisableMtls = value; return this; 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 decc6e98bc4..b8e1247d2b9 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 @@ -385,7 +385,7 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce public void validate() throws Exception { assert (childrenBySubId.isFrozen()); - for (AbstractConfigProducer child : childrenBySubId.values()) { + for (AbstractConfigProducer<?> child : childrenBySubId.values()) { child.validate(); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java index e72f74829d3..6e2818673c7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java @@ -16,6 +16,7 @@ import com.yahoo.vespa.model.container.Container; import java.util.ArrayList; import java.util.Collection; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -78,17 +79,19 @@ public class ClusterControllerCluster extends AbstractConfigProducer<ClusterCont @Override public void validate() { - assert(containerCluster != null); + Objects.requireNonNull(containerCluster); for (Container c1 : containerCluster.getContainers()) { assert(c1 instanceof ClusterControllerContainer); for (Service service : c1.getHostResource().getServices()) { if (service instanceof Configserver) { - throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controller '" + c1.getConfigId() + "' is set to run on the same host as a configserver"); + throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controller '" + + c1.getConfigId() + "' is set to run on the same host as a configserver"); } } for (Container c2 : containerCluster.getContainers()) { if (c1 != c2 && c1.getHostName().equals(c2.getHostName())) { - throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controllers '" + c1.getConfigId() + "' and '" + c2.getConfigId() + "' share the same host"); + throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controllers '" + + c1.getConfigId() + "' and '" + c2.getConfigId() + "' share the same host"); } } } 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 8e3451540f9..c3cffa018fa 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 @@ -15,6 +15,7 @@ import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerCluster; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainerCluster; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder.DomConfigProducerBuilder; +import com.yahoo.vespa.model.container.Container; import org.w3c.dom.Element; import java.util.ArrayList; @@ -44,8 +45,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { admin.addConfigservers(configservers); admin.addSlobroks(getSlobroks(deployState, admin, XML.getChild(adminE, "slobroks"))); if ( ! admin.multitenant()) - admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE), - deployState); + admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE), deployState); ModelElement adminElement = new ModelElement(adminE); addLogForwarders(adminElement.child("logforwarding"), admin); @@ -57,16 +57,17 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) { List<Configserver> configservers; - if (multitenant) { + if (multitenant) configservers = getConfigServersFromSpec(deployState.getDeployLogger(), admin); - } else { + else configservers = getConfigServers(deployState, admin, adminE); - } - int count = configservers.size(); - if (count % 2 == 0) { - deployState.getDeployLogger().logApplicationPackage(Level.WARNING, "An even number (" + count + ") of config servers have been configured. " + - "This is discouraged, see doc for configuration server "); - } + if (configservers.isEmpty() && ! multitenant) + configservers = createSingleConfigServer(deployState, admin); + if (configservers.size() % 2 == 0) + deployState.getDeployLogger().logApplicationPackage(Level.WARNING, + "An even number (" + configservers.size() + + ") of config servers have been configured. " + + "This is discouraged, see doc for configuration server "); return configservers; } @@ -78,7 +79,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return new LogserverBuilder().build(deployState, admin, logserverE); } - private ClusterControllerContainerCluster addConfiguredClusterControllers(DeployState deployState, AbstractConfigProducer parent, Element admin) { + private ClusterControllerContainerCluster addConfiguredClusterControllers(DeployState deployState, + AbstractConfigProducer<?> parent, + Element admin) { Element controllersElements = XML.getChild(admin, "cluster-controllers"); if (controllersElements == null) return null; @@ -105,40 +108,41 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return cluster; } - // Extra stupid because configservers tag is optional - private List<Configserver> getConfigServers(DeployState deployState, AbstractConfigProducer parent, Element adminE) { - SimpleConfigProducer configServers = new SimpleConfigProducer(parent, "configservers"); - List<Configserver> cfgs = new ArrayList<>(); + private List<Configserver> getConfigServers(DeployState deployState, AbstractConfigProducer<?> parent, Element adminE) { + SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers"); Element configserversE = XML.getChild(adminE, "configservers"); if (configserversE == null) { Element configserverE = XML.getChild(adminE, "configserver"); - if (configserverE == null) { + if (configserverE == null) configserverE = XML.getChild(adminE, "adminserver"); - } else { - deployState.getDeployLogger().logApplicationPackage(Level.INFO, "Specifying configserver without parent element configservers in services.xml is deprecated"); - } - Configserver cfgs0 = new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, configserverE); - cfgs0.setProp("index", 0); - cfgs.add(cfgs0); - return cfgs; + else + deployState.getDeployLogger().logApplicationPackage(Level.INFO, + "Specifying configserver without parent element configservers in services.xml is deprecated"); + return List.of(new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, configserverE)); } - // configservers tag in use - int i = 0; - for (Element configserverE : XML.getChildren(configserversE, "configserver")) { - Configserver cfgsrv = new ConfigserverBuilder(i, configServerSpecs).build(deployState, configServers, configserverE); - cfgsrv.setProp("index", i); - cfgs.add(cfgsrv); - i++; + else { + List<Configserver> configservers = new ArrayList<>(); + int i = 0; + for (Element configserverE : XML.getChildren(configserversE, "configserver")) + configservers.add(new ConfigserverBuilder(i++, configServerSpecs).build(deployState, configServers, configserverE)); + return configservers; } - return cfgs; + } + + /** Fallback when no config server is specified */ + private List<Configserver> createSingleConfigServer(DeployState deployState, AbstractConfigProducer<?> parent) { + SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers"); + Configserver configServer = new Configserver(configServers, "configserver", Configserver.defaultRpcPort); + configServer.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); + configServer.initService(deployState.getDeployLogger()); + return List.of(configServer); } private List<Slobrok> getSlobroks(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) { - List<Slobrok> slobs = new ArrayList<>(); - if (slobroksE != null) { - slobs = getExplicitSlobrokSetup(deployState, parent, slobroksE); - } - return slobs; + List<Slobrok> slobroks = new ArrayList<>(); + if (slobroksE != null) + slobroks = getExplicitSlobrokSetup(deployState, parent, slobroksE); + return slobroks; } private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) { @@ -174,7 +178,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { @Override protected Configserver doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) { - return new Configserver(parent, "configserver." + i, rpcPort); + var configServer = new Configserver(parent, "configserver." + i, rpcPort); + configServer.setProp("index", i); + return configServer; } } @@ -207,4 +213,5 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { return new ClusterControllerContainer(parent, i, runStandaloneZooKeeper, deployState, false); } } + } 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 0997f29729f..fea36eaeb15 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 @@ -216,9 +216,10 @@ public class StorageGroup { deployState.getDeployLogger().logApplicationPackage(Level.INFO, "'distribution-key' attribute on a content cluster's root group is ignored"); GroupBuilder groupBuilder = collectGroup(owner.isHosted(), group, nodes, null, null); - StorageGroup storageGroup = (owner.isHosted()) - ? groupBuilder.buildHosted(deployState, owner, Optional.empty()) - : groupBuilder.buildNonHosted(deployState, owner, Optional.empty()); + StorageGroup storageGroup = owner.isHosted() + ? groupBuilder.buildHosted(deployState, owner, Optional.empty()) + : groupBuilder.buildNonHosted(deployState, owner, Optional.empty()); + Redundancy redundancy = redundancyBuilder.build(owner.getName(), owner.isHosted(), storageGroup.subgroups.size(), storageGroup.getNumberOfLeafGroups(), storageGroup.countNodes(false), maxRedundancy); @@ -305,19 +306,25 @@ public class StorageGroup { storageGroup.nodes.add(nodeBuilder.build(deployState, owner, storageGroup)); } - if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) // no nodes or groups: create single node + if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) { // no nodes or groups: create single node storageGroup.nodes.add(buildSingleNode(deployState, owner)); + } return storageGroup; } private StorageNode buildSingleNode(DeployState deployState, ContentCluster parent) { int distributionKey = 0; - StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), 1.0, distributionKey , false); - sNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); - PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, null); - new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider); - return sNode; + + StorageNode searchNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), 1.0, distributionKey , false); + searchNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); + PersistenceEngine provider = parent.getPersistence().create(deployState, searchNode, storageGroup, null); + searchNode.initService(deployLogger); + + Distributor distributor = new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider); + distributor.setHostResource(searchNode.getHostResource()); + distributor.initService(deployLogger); + return searchNode; } /** @@ -332,7 +339,7 @@ public class StorageGroup { throw new IllegalArgumentException("Specifying individual groups is not supported on hosted applications"); Map<HostResource, ClusterMembership> hostMapping = nodeRequirement.isPresent() ? - provisionHosts(nodeRequirement.get(), owner.getStorageNodes().getClusterName(), owner.getRoot().hostSystem(), deployLogger) : + provisionHosts(nodeRequirement.get(), owner.getStorageCluster().getClusterName(), owner.getRoot().hostSystem(), deployLogger) : Collections.emptyMap(); Map<Optional<ClusterSpec.Group>, Map<HostResource, ClusterMembership>> hostGroups = collectAllocatedSubgroups(hostMapping); @@ -389,7 +396,7 @@ public class StorageGroup { } public StorageNode build(DeployState deployState, ContentCluster parent, StorageGroup storageGroup) { - StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageNodes(), element.getXml()); + StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageCluster(), element.getXml()); PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, element); new Distributor.Builder(clusterElement, provider).build(deployState, parent.getDistributorNodes(), element.getXml()); return sNode; @@ -494,7 +501,7 @@ public class StorageGroup { } private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) { - StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired()); + StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), null, clusterMembership.index(), clusterMembership.retired()); sNode.setHostResource(hostResource); sNode.initService(deployState.getDeployLogger()); 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 a746dc36540..12a7b72f5fd 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 @@ -287,7 +287,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce } else if (admin.multitenant()) { // system tests: Put on logserver if (admin.getClusterControllers() == null) { - // TODO: logserver== null only obtains in unit tests, disallow it + // TODO: logserver == null only obtains in unit tests, disallow it List<HostResource> host = admin.getLogserver() == null ? List.of() : List.of(admin.getLogserver().getHostResource()); admin.setClusterControllers(createClusterControllers(new ClusterControllerCluster(admin, "standalone", deployState), host, @@ -428,7 +428,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce public DistributorCluster getDistributorNodes() { return distributorNodes; } - public StorageCluster getStorageNodes() { return storageNodes; } + public StorageCluster getStorageCluster() { return storageNodes; } public ClusterControllerConfig getClusterControllerConfig() { return clusterControllerConfig; } diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 9b9789e141c..e2fd322a4c4 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -14,6 +14,7 @@ import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; import com.yahoo.container.core.ApplicationMetadataConfig; import com.yahoo.search.config.QrStartConfig; +import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig; import com.yahoo.vespa.config.content.core.StorStatusConfig; import com.yahoo.vespa.config.search.core.ProtonConfig; import com.yahoo.vespa.model.HostResource; @@ -30,9 +31,9 @@ import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.content.ContentSearchCluster; import com.yahoo.vespa.model.content.StorageNode; import com.yahoo.vespa.model.content.cluster.ContentCluster; +import com.yahoo.vespa.model.content.storagecluster.StorageCluster; import com.yahoo.vespa.model.search.SearchNode; import com.yahoo.vespa.model.test.VespaModelTester; -import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils; import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg; import com.yahoo.yolean.Exceptions; import org.junit.Test; @@ -1115,7 +1116,7 @@ public class ModelProvisioningTest { assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size()); ContentCluster cluster = model.getContentClusters().get("bar"); - assertEquals(2, cluster.getStorageNodes().getChildren().size()); + assertEquals(2, cluster.getStorageCluster().getChildren().size()); assertEquals(1, cluster.redundancy().effectiveInitialRedundancy()); assertEquals(1, cluster.redundancy().effectiveFinalRedundancy()); assertEquals(1, cluster.redundancy().effectiveReadyCopies()); @@ -1618,7 +1619,11 @@ public class ModelProvisioningTest { assertEquals("Nodes in container cluster", 1, model.getContainerClusters().get("container1").getContainers().size()); assertEquals("Nodes in content cluster (downscaled)", 1, model.getContentClusters().get("content").getRootGroup().getNodes().size()); + model.getConfig(new StorStatusConfig.Builder(), "default"); + StorageCluster storage = model.getContentClusters().get("content").getStorageCluster(); + StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder(); + storage.getChildren().get("0").getConfig(builder); } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java index 3f211a595b9..1cf79fc5977 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java @@ -37,7 +37,7 @@ public class MetricsProxyContainerTest { var tester = new VespaModelTester(); tester.addHosts(numberOfHosts); - VespaModel model = tester.createModel(servicesWithManyNodes(), true); + VespaModel model = tester.createModel(hostedServicesWithManyNodes(), true); assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts)); for (var host : model.hostSystem().getHosts()) { @@ -56,7 +56,7 @@ public class MetricsProxyContainerTest { var tester = new VespaModelTester(); tester.addHosts(numberOfHosts); - VespaModel model = tester.createModel(servicesWithManyNodes(), true); + VespaModel model = tester.createModel(hostedServicesWithManyNodes(), true); assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts)); for (var host : model.hostSystem().getHosts()) { @@ -71,7 +71,7 @@ public class MetricsProxyContainerTest { @Test public void http_server_is_running_on_expected_port() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(hostedServicesWithContent(), self_hosted); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); assertEquals(19092, container.getSearchPort()); assertEquals(19092, container.getHealthPort()); @@ -82,7 +82,7 @@ public class MetricsProxyContainerTest { @Test public void metrics_rpc_server_is_running_on_expected_port() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(hostedServicesWithContent(), self_hosted); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); int offset = 3; @@ -96,7 +96,7 @@ public class MetricsProxyContainerTest { @Test public void admin_rpc_server_is_running() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(hostedServicesWithContent(), self_hosted); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); int offset = 2; @@ -107,7 +107,7 @@ public class MetricsProxyContainerTest { @Test public void preload_is_empty() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(hostedServicesWithContent(), self_hosted); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); assertEquals("", container.getPreLoad()); @@ -115,7 +115,7 @@ public class MetricsProxyContainerTest { @Test public void hosted_application_propagates_node_dimensions() { - String services = servicesWithContent(); + String services = hostedServicesWithContent(); VespaModel hostedModel = getModel(services, hosted); assertEquals(4, hostedModel.getHosts().size()); String configId = containerConfigId(hostedModel, hosted); @@ -127,7 +127,7 @@ public class MetricsProxyContainerTest { @Test public void metrics_v2_handler_is_set_up_with_node_info_config() { - String services = servicesWithContent(); + String services = hostedServicesWithContent(); VespaModel hostedModel = getModel(services, hosted); var container = (MetricsProxyContainer)hostedModel.id2producer().get(containerConfigId(hostedModel, hosted)); @@ -143,8 +143,8 @@ public class MetricsProxyContainerTest { @Test public void vespa_services_config_has_all_services() { - VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(servicesWithContent()); - assertEquals(7, vespaServicesConfig.service().size()); + VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(hostedServicesWithContent()); + assertEquals(9, vespaServicesConfig.service().size()); for (var service : vespaServicesConfig.service()) { if (service.configId().equals("admin/cluster-controllers/0")) { @@ -158,7 +158,7 @@ public class MetricsProxyContainerTest { @Test public void vespa_services_config_has_service_dimensions() { - VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(servicesWithContent()); + VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(hostedServicesWithContent()); for (var service : vespaServicesConfig.service()) { if (service.configId().equals("admin/cluster-controllers/0")) { assertEquals(1, service.dimension().size()); @@ -169,7 +169,7 @@ public class MetricsProxyContainerTest { } - private static String servicesWithManyNodes() { + private static String hostedServicesWithManyNodes() { return String.join("\n", "<services>", " <container version='1.0' id='foo'>", @@ -182,12 +182,9 @@ public class MetricsProxyContainerTest { "</services>"); } - private static String servicesWithContent() { + private static String hostedServicesWithContent() { return String.join("\n", "<services>", - " <admin version='2.0'>", - " <adminserver hostalias='node1'/>", - " </admin>", " <content version='1.0' id='my-content'>", " <documents />", " <nodes count='1' />", diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java index 7bff4890b7e..583d0c43a9a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java @@ -94,7 +94,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertTrue(a.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, a.getStorageNodes().getChildren().size()); + assertEquals(1, a.getStorageCluster().getChildren().size()); } @Test @@ -119,7 +119,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertTrue(a.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, a.getStorageNodes().getChildren().size()); + assertEquals(1, a.getStorageCluster().getChildren().size()); } @Test @@ -147,7 +147,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals("node0", a.getRootGroup().getNodes().get(0).getHostName()); assertTrue(a.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, a.getStorageNodes().getChildren().size()); + assertEquals(1, a.getStorageCluster().getChildren().size()); assertEquals("a", a.getConfigId()); } @@ -164,7 +164,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals(7.3, s.getIndexed().getQueryTimeout(), 0.0); assertTrue(c.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, c.getStorageNodes().getChildren().size()); + assertEquals(1, c.getStorageCluster().getChildren().size()); assertEquals("clu", c.getConfigId()); //assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId()); // This is how it should look like in an ideal world. assertEquals("clu/storage/0", c.getRootGroup().getNodes().get(0).getConfigId()); // Due to reuse. @@ -211,7 +211,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals(musicClusterId, ((StreamingSearchCluster)sc).getStorageRouteSpec()); assertTrue(cluster.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, cluster.getStorageNodes().getChildren().size()); + assertEquals(1, cluster.getStorageCluster().getChildren().size()); assertEquals(musicClusterId, cluster.getConfigId()); //assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId()); @@ -269,7 +269,7 @@ public class ContentBuilderTest extends DomBuilderTest { } assertTrue(cluster.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, cluster.getStorageNodes().getChildren().size()); + assertEquals(1, cluster.getStorageCluster().getChildren().size()); assertEquals(musicClusterId, cluster.getConfigId()); } @@ -295,7 +295,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals("b", s.getIndexed().getClusterName()); assertTrue(b.getPersistence() instanceof ProtonEngine.Factory); - assertEquals(1, b.getStorageNodes().getChildren().size()); + assertEquals(1, b.getStorageCluster().getChildren().size()); assertEquals("b", b.getConfigId()); //assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId()); @@ -323,7 +323,7 @@ public class ContentBuilderTest extends DomBuilderTest { s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); + assertEquals(2, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getMmapNoCoreLimit().isPresent()); assertEquals(200000, b.getRootGroup().getMmapNoCoreLimit().get().longValue()); @@ -352,7 +352,7 @@ public class ContentBuilderTest extends DomBuilderTest { s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); + assertEquals(2, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getCoreOnOOM().isPresent()); assertTrue(b.getRootGroup().getCoreOnOOM().get()); @@ -379,7 +379,7 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); + assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getCoreOnOOM().isPresent()); assertThat(s.getSearchNodes().size(), is(2)); @@ -405,7 +405,7 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); + assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getMmapNoCoreLimit().isPresent()); assertThat(s.getSearchNodes().size(), is(2)); @@ -431,7 +431,7 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); + assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getCoreOnOOM().isPresent()); assertThat(s.getSearchNodes().size(), is(2)); @@ -459,7 +459,7 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(4, b.getStorageNodes().getChildren().size()); + assertEquals(4, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getNoVespaMalloc().isPresent()); assertEquals("proton", b.getRootGroup().getNoVespaMalloc().get()); assertTrue(b.getRootGroup().getVespaMalloc().isPresent()); @@ -501,7 +501,7 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(4, b.getStorageNodes().getChildren().size()); + assertEquals(4, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getNoVespaMalloc().isPresent()); assertFalse(b.getRootGroup().getVespaMalloc().isPresent()); assertFalse(b.getRootGroup().getVespaMallocDebug().isPresent()); @@ -532,11 +532,11 @@ public class ContentBuilderTest extends DomBuilderTest { s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(2, b.getStorageNodes().getChildren().size()); - assertTrue(b.getStorageNodes().getChildren().get("0").getAffinity().isPresent()); - assertThat(b.getStorageNodes().getChildren().get("0").getAffinity().get().cpuSocket(), is(0)); - assertTrue(b.getStorageNodes().getChildren().get("1").getAffinity().isPresent()); - assertThat(b.getStorageNodes().getChildren().get("1").getAffinity().get().cpuSocket(), is(1)); + assertEquals(2, b.getStorageCluster().getChildren().size()); + assertTrue(b.getStorageCluster().getChildren().get("0").getAffinity().isPresent()); + assertThat(b.getStorageCluster().getChildren().get("0").getAffinity().get().cpuSocket(), is(0)); + assertTrue(b.getStorageCluster().getChildren().get("1").getAffinity().isPresent()); + assertThat(b.getStorageCluster().getChildren().get("1").getAffinity().get().cpuSocket(), is(1)); assertThat(s.getSearchNodes().size(), is(2)); assertTrue(s.getSearchNodes().get(0).getAffinity().isPresent()); @@ -567,7 +567,7 @@ public class ContentBuilderTest extends DomBuilderTest { s = b.getSearch(); assertTrue(s.hasIndexedCluster()); assertNotNull(s.getIndexed()); - assertEquals(6, b.getStorageNodes().getChildren().size()); + assertEquals(6, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().useCpuSocketAffinity()); assertThat(s.getSearchNodes().size(), is(6)); @@ -585,12 +585,12 @@ public class ContentBuilderTest extends DomBuilderTest { assertThat(s.getSearchNodes().get(5).getAffinity().get().cpuSocket(),is (0)); // TODO: Only needed for the search nodes anyway? - assertFalse(b.getStorageNodes().getChildren().get("0").getAffinity().isPresent()); - assertFalse(b.getStorageNodes().getChildren().get("1").getAffinity().isPresent()); - assertFalse(b.getStorageNodes().getChildren().get("2").getAffinity().isPresent()); - assertFalse(b.getStorageNodes().getChildren().get("3").getAffinity().isPresent()); - assertFalse(b.getStorageNodes().getChildren().get("4").getAffinity().isPresent()); - assertFalse(b.getStorageNodes().getChildren().get("5").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("0").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("1").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("2").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("3").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("4").getAffinity().isPresent()); + assertFalse(b.getStorageCluster().getChildren().get("5").getAffinity().isPresent()); //assertThat(b.getStorageNodes().getChildren().get("0").getAffinity().get().cpuSocket(), is(0)); //assertThat(b.getStorageNodes().getChildren().get("1").getAffinity().get().cpuSocket(), is(1)); //assertThat(b.getStorageNodes().getChildren().get("2").getAffinity().get().cpuSocket(), is(2)); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java index 7f006cdccd9..fccff508b4e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java @@ -553,15 +553,15 @@ public class ContentClusterTest extends ContentBaseTest { { StorServerConfig.Builder builder = new StorServerConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); - cluster.getStorageNodes().getChildren().get("0").getConfig(builder); + cluster.getStorageCluster().getConfig(builder); + cluster.getStorageCluster().getChildren().get("0").getConfig(builder); StorServerConfig config = new StorServerConfig(builder); } { StorServerConfig.Builder builder = new StorServerConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); - cluster.getStorageNodes().getChildren().get("1").getConfig(builder); + cluster.getStorageCluster().getConfig(builder); + cluster.getStorageCluster().getChildren().get("1").getConfig(builder); StorServerConfig config = new StorServerConfig(builder); } } @@ -635,8 +635,8 @@ public class ContentClusterTest extends ContentBaseTest { { StorServerConfig.Builder builder = new StorServerConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); - cluster.getStorageNodes().getChildren().get("0").getConfig(builder); + cluster.getStorageCluster().getConfig(builder); + cluster.getStorageCluster().getChildren().get("0").getConfig(builder); StorServerConfig config = new StorServerConfig(builder); @@ -696,7 +696,7 @@ public class ContentClusterTest extends ContentBaseTest { assertEquals("partofsum", config.consumer(5).removedtags(1)); assertEquals(0, config.consumer(5).tags().size()); - cluster.getStorageNodes().getConfig(builder); + cluster.getStorageCluster().getConfig(builder); config = new MetricsmanagerConfig(builder); assertEquals(6, config.consumer().size()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java index 51d0afc1f93..2d54791cc2c 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java @@ -55,7 +55,7 @@ public class GenericConfigTest { @Test public void config_override_on_root_is_visible_on_storage_cluster() { - StorageCluster cluster = model.getContentClusters().get("storage").getStorageNodes(); + StorageCluster cluster = model.getContentClusters().get("storage").getStorageCluster(); StorFilestorConfig config = model.getConfig(StorFilestorConfig.class, cluster.getConfigId()); assertThat(config.num_threads(), is(7)); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java index 5d4756c430d..49518bb749c 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java @@ -179,8 +179,8 @@ public class IndexedTest extends ContentBaseTest { assertFalse(s.getSearch().hasIndexedCluster()); StorServerConfig.Builder builder = new StorServerConfig.Builder(); - s.getStorageNodes().getConfig(builder); - s.getStorageNodes().getChildren().get("3").getConfig(builder); + s.getStorageCluster().getConfig(builder); + s.getStorageCluster().getChildren().get("3").getConfig(builder); } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java index fd85ea3d024..3e59a17d1a5 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java @@ -66,7 +66,7 @@ public class StorageClusterTest { ContentCluster cluster = ContentClusterUtils.createCluster(xml, root); root.freezeModelTopology(); - return cluster.getStorageNodes(); + return cluster.getStorageCluster(); } private static String group() { @@ -328,9 +328,9 @@ public class StorageClusterTest { ContentCluster cluster = ContentClusterUtils.createCluster(xml, new MockRoot()); for (int i = 0; i < 3; ++i) { - StorageNode node = cluster.getStorageNodes().getChildren().get("" + i); + StorageNode node = cluster.getStorageCluster().getChildren().get("" + i); StorServerConfig.Builder builder = new StorServerConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); + cluster.getStorageCluster().getConfig(builder); node.getConfig(builder); StorServerConfig config = new StorServerConfig(builder); assertEquals(1.0 + (double)i * 0.5, config.node_capacity(), 0.001); @@ -341,11 +341,11 @@ public class StorageClusterTest { public void testRootFolder() { ContentCluster cluster = ContentClusterUtils.createCluster(cluster("storage", ""), new MockRoot()); - StorageNode node = cluster.getStorageNodes().getChildren().get("0"); + StorageNode node = cluster.getStorageCluster().getChildren().get("0"); { StorServerConfig.Builder builder = new StorServerConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); + cluster.getStorageCluster().getConfig(builder); node.getConfig(builder); StorServerConfig config = new StorServerConfig(builder); assertEquals(getDefaults().underVespaHome("var/db/vespa/search/storage/storage/0"), config.root_folder()); @@ -378,7 +378,7 @@ public class StorageClusterTest { ContentCluster cluster = ContentClusterUtils.createCluster(xml, new MockRoot()); PersistenceConfig.Builder builder = new PersistenceConfig.Builder(); - cluster.getStorageNodes().getConfig(builder); + cluster.getStorageCluster().getConfig(builder); PersistenceConfig config = new PersistenceConfig(builder); assertTrue(config.fail_partition_on_error()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java index b9495d45e08..4ab7b44f246 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java @@ -32,9 +32,9 @@ public class StorageGroupTest { "</content>" ); - assertEquals("content", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("clustertype")); - assertEquals("storage", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("clustername")); - assertEquals("0", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("index")); + assertEquals("content", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("clustertype")); + assertEquals("storage", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("clustername")); + assertEquals("0", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("index")); assertEquals("content", cluster.getDistributorNodes().getChildren().get("0").getServicePropertyString("clustertype")); assertEquals("storage", cluster.getDistributorNodes().getChildren().get("0").getServicePropertyString("clustername")); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java index 7e34e9efbbf..4645decea50 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java @@ -182,7 +182,7 @@ public class VespaModelTester { new SingleNodeProvisioner(); TestProperties properties = new TestProperties() - .setMultitenant(true) + .setMultitenant(hosted) // Note: system tests are multitenant but not hosted .setHostedVespa(hosted) .setApplicationId(applicationId) .setUseDedicatedNodeForLogserver(useDedicatedNodeForLogserver); |