aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2024-04-07 22:41:03 +0200
committerGitHub <noreply@github.com>2024-04-07 22:41:03 +0200
commit14462536eb7b530b184d48484976f72f2ab3b56c (patch)
tree2675e636afa5e954ba17261ce46bde594a8aff1f /config-model
parent59cbad455146da8ff5e10760354395959ad8adb0 (diff)
parent68bafbf5963259f4ad506c9e1bea1937a7f1dfcb (diff)
Merge pull request #30843 from vespa-engine/hmusum/no-node-count-means-1-node
Hmusum/no node count means 1 node
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java2
-rw-r--r--config-model/src/main/resources/schema/containercluster.rnc2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java14
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java27
4 files changed, 32 insertions, 13 deletions
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 eac03531b86..4abd6e89b15 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
@@ -1002,7 +1002,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return containers;
} else if (nodesElement.hasAttribute("count")) // regular, hosted node spec
return createNodesFromNodeCount(cluster, containerElement, nodesElement, context);
- else if (cluster.isHostedVespa() && cluster.getZone().environment().isManuallyDeployed()) // default to 1 in manual zones
+ else if (cluster.isHostedVespa()) // default to 1 if node count is not specified
return createNodesFromNodeCount(cluster, containerElement, nodesElement, context);
else // the non-hosted option
return createNodesFromNodeList(context.getDeployState(), cluster, nodesElement);
diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc
index f24a1511318..9beaf7b7783 100644
--- a/config-model/src/main/resources/schema/containercluster.rnc
+++ b/config-model/src/main/resources/schema/containercluster.rnc
@@ -307,7 +307,7 @@ NodesOfContainerCluster = element nodes {
attribute type { xsd:string }
|
(
- attribute count { xsd:positiveInteger | xsd:string } &
+ attribute count { xsd:positiveInteger | xsd:string }? &
attribute flavor { xsd:string }? &
attribute required { xsd:boolean }? &
attribute exclusive { xsd:boolean }? &
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
index 934606b93ac..c4fc4ee71c6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
@@ -6,6 +6,7 @@ import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.HostsXmlProvisioner;
+import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.container.ComponentsConfig;
import com.yahoo.container.jdisc.FilterBindingsProvider;
@@ -254,25 +255,16 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas
" <server port='8080' id='default'>",
" </server>",
" </http>",
- multiNode,
+ " <nodes count='1' />",
"",
"</container>");
- String hostsxml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
- "<hosts>\n" +
- " <host name=\"mockhost-1\">\n" +
- " <alias>mockhost1</alias>\n" +
- " </host>\n" +
- " <host name=\"mockhost-2\">\n" +
- " <alias>mockhost2</alias>\n" +
- " </host>\n" +
- "</hosts>\n";
DeployState deployState = new DeployState.Builder()
.properties(
new TestProperties()
.setHostedVespa(true)
.setEndpointCertificateSecrets(Optional.of(new EndpointCertificateSecrets("CERT", "KEY"))))
- .modelHostProvisioner(new HostsXmlProvisioner(new StringReader(hostsxml)))
+ .modelHostProvisioner(new InMemoryProvisioner(1, true))
.build();
MockRoot root = new MockRoot("root", deployState);
createModel(root, deployState, null, clusterElem);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
index 69abb10b91d..c7d9ae6b818 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
@@ -20,6 +20,9 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.net.HostName;
@@ -309,6 +312,30 @@ public class VespaModelTestCase {
assertContainsWarning(logger.msgs, "Directory searchdefinitions/ should not be used for schemas, use schemas/ instead");
}
+ @Test
+ void testNoNodesCount() {
+ var services =
+ """
+ <services version='1.0'>
+ <container version='1.0' id='default'>
+ <search/>
+ <nodes>
+ <resources disk="24Gb" />
+ </nodes>
+ </container>
+ </services>""";
+
+ var app = new MockApplicationPackage.Builder().withServices(services).build();
+ var deployState = new DeployState.Builder()
+ .applicationPackage(app)
+ .properties(new TestProperties()
+ .setHostedVespa(true)
+ .setApplicationId(ApplicationId.from("foo", "bar", "default-t")))
+ .build();
+ var model = new TestDriver(true).buildModel(deployState);
+ assertEquals(1, model.getHosts().size()); // node count 1 if not specified
+ }
+
private void assertContainsWarning(List<Pair<Level,String>> msgs, String text) {
boolean foundCorrectWarning = false;
for (var msg : msgs)