diff options
author | Harald Musum <musum@yahooinc.com> | 2024-04-03 14:50:04 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2024-04-03 14:50:04 +0200 |
commit | a0edaca0267efc849cbc033a6d89a5f369e7a82a (patch) | |
tree | 8087f8da82cb6f77e8b1fac7c9f8c4b3d6bdc0cd /config-model/src/main/java/com | |
parent | a009cdd704f427282c3c9ed3b70a7caf9d536c7e (diff) |
Throw if min node resources is less than 1
Diffstat (limited to 'config-model/src/main/java/com')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java | 16 |
1 files changed, 10 insertions, 6 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 93d65426b61..d877600db13 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 @@ -1,32 +1,31 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.builder.xml.dom; -import com.yahoo.config.provision.ClusterInfo; -import com.yahoo.config.provision.IntRange; import com.yahoo.collections.Pair; import com.yahoo.component.Version; import com.yahoo.config.application.api.DeployLogger; -import com.yahoo.config.provision.ZoneEndpoint; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.CloudAccount; +import com.yahoo.config.provision.ClusterInfo; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.IntRange; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.ZoneEndpoint; import com.yahoo.text.XML; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.HostSystem; import com.yahoo.vespa.model.container.xml.ContainerModelBuilder; import org.w3c.dom.Element; import org.w3c.dom.Node; + import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.function.Function; import java.util.function.ToDoubleFunction; -import java.util.logging.Level; /** * A common utility class to represent a requirement for nodes during model building. @@ -77,8 +76,10 @@ public class NodesSpecification { Optional<CloudAccount> cloudAccount, boolean hasCountAttribute) { if (max.smallerThan(min)) - throw new IllegalArgumentException("Min resources must be larger or equal to max resources, but " + + throw new IllegalArgumentException("Max resources must be larger or equal to min resources, but " + max + " is smaller than " + min); + if (min.nodes() < 1) + throw new IllegalArgumentException("Min node count cannot be less than 1, but is " + min.nodes()); // Non-scaled resources must be equal if ( ! min.nodeResources().justNonNumbers().equals(max.nodeResources().justNonNumbers())) @@ -128,6 +129,9 @@ public class NodesSpecification { var groups = rangeFrom(nodesElement, "groups"); var groupSize = rangeFrom(nodesElement, "group-size"); + if (nodes.from().orElse(1) < 1) + throw new IllegalArgumentException("Min node resources cannot be less than 1, but is " + nodes.from().getAsInt()); + // Find the tightest possible limits for groups to avoid falsely concluding we are autoscaling // when only specifying group size int defaultMinGroups = nodes.from().orElse(1) / groupSize.to().orElse(nodes.from().orElse(1)); |