summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-10-16 08:18:01 +0200
committerGitHub <noreply@github.com>2020-10-16 08:18:01 +0200
commitce38dce87667440003136b85685cc3fd6e245df7 (patch)
tree85709e6e2b4b435aa95ae7720be33ceaffa8478d /config-model
parent9eced7520126471ec0845df53d192243130e8ff0 (diff)
parentf1da5a48e0052671b100321c2ffad63b2f10cb13 (diff)
Merge pull request #14909 from vespa-engine/hmusum/support-exclusive-node-attribute-for-content-clusters
Support 'exclusive' node attribute for content clusters
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java4
-rw-r--r--config-model/src/main/resources/schema/content.rnc1
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java24
3 files changed, 27 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
index 8f737f02dca..526e88749fc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
@@ -36,10 +36,10 @@ public class NodesSpecification {
private final boolean dedicated;
/** The Vespa version we want the nodes to run */
- private Version version;
+ private final Version version;
/**
- * Whether the capacity amount specified is required or can it be relaxed
+ * Whether the capacity amount specified is required or can be relaxed
* at the discretion of the component fulfilling it
*/
private final boolean required;
diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc
index 481d82ebb4b..5646bc72056 100644
--- a/config-model/src/main/resources/schema/content.rnc
+++ b/config-model/src/main/resources/schema/content.rnc
@@ -225,6 +225,7 @@ ContentNodes = element nodes {
attribute count { xsd:positiveInteger | xsd:string } &
attribute flavor { xsd:string }? &
attribute required { xsd:boolean }? &
+ attribute exclusive { xsd:boolean }? &
attribute docker-image { xsd:string }? &
attribute groups { xsd:positiveInteger | xsd:string }?
)
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 e3a53c8c4f1..02f8c7f420c 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
@@ -1142,6 +1142,30 @@ public class ModelProvisioningTest {
}
@Test
+ public void testExclusiveNodes() {
+ String services =
+ "<?xml version='1.0' encoding='utf-8' ?>\n" +
+ "<services>" +
+ "<container version='1.0' id='container'>" +
+ " <nodes count='2' exclusive='true'/>" +
+ " </container>" +
+ " <content version='1.0' id='bar'>" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='type1' mode='index'/>" +
+ " </documents>" +
+ " <nodes count='3' exclusive='true'/>" +
+ " </content>" +
+ "</services>";
+
+ int numberOfHosts = 5;
+ VespaModelTester tester = new VespaModelTester();
+ tester.addHosts(numberOfHosts);
+ VespaModel model = tester.createModel(services, false);
+ model.hostSystem().getHosts().forEach(host -> assertTrue(host.spec().membership().get().cluster().isExclusive()));
+ }
+
+ @Test
public void testUsingNodesCountAttributesAndGettingJustOneNode() {
String services =
"<?xml version='1.0' encoding='utf-8' ?>\n" +