From b5d9b3f97476ef120831a591bae7a9855c8bd0fc Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Sun, 20 Nov 2022 15:14:35 +0100 Subject: Move exclusivity decision into NodeRepository --- .../com/yahoo/vespa/hosted/provision/NodeRepository.java | 1 + .../hosted/provision/provisioning/CapacityPolicies.java | 15 ++++----------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java index c26278e948d..fb21b009a30 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java @@ -7,6 +7,7 @@ import com.yahoo.concurrent.maintenance.JobControl; import com.yahoo.config.provision.ApplicationTransaction; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.Zone; import com.yahoo.config.provisioning.NodeRepositoryConfig; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java index b1b876c5699..a1400626658 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java @@ -10,10 +10,8 @@ import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.Zone; -import com.yahoo.vespa.flags.JacksonFlag; import com.yahoo.vespa.flags.PermanentFlags; import com.yahoo.vespa.flags.StringFlag; -import com.yahoo.vespa.flags.custom.SharedHost; import com.yahoo.vespa.hosted.provision.NodeRepository; import java.util.Map; import java.util.TreeMap; @@ -30,13 +28,13 @@ import static java.util.Objects.requireNonNull; */ public class CapacityPolicies { + private final NodeRepository nodeRepository; private final Zone zone; - private final JacksonFlag sharedHosts; private final StringFlag adminClusterNodeArchitecture; public CapacityPolicies(NodeRepository nodeRepository) { + this.nodeRepository = nodeRepository; this.zone = nodeRepository.zone(); - this.sharedHosts = PermanentFlags.SHARED_HOST.bindTo(nodeRepository.flagSource()); this.adminClusterNodeArchitecture = PermanentFlags.ADMIN_CLUSTER_NODE_ARCHITECTURE.bindTo(nodeRepository.flagSource()); } @@ -87,7 +85,7 @@ public class CapacityPolicies { return clusterControllerResources(clusterSpec).with(architecture); } - return (requiresExclusiveHost(clusterSpec) + return (nodeRepository.exclusiveAllocation(clusterSpec) ? versioned(clusterSpec, Map.of(new Version(0), smallestExclusiveResources())) : versioned(clusterSpec, Map.of(new Version(0), smallestSharedResources()))) .with(architecture); @@ -107,7 +105,7 @@ public class CapacityPolicies { } private NodeResources clusterControllerResources(ClusterSpec clusterSpec) { - if (requiresExclusiveHost(clusterSpec)) { + if (nodeRepository.exclusiveAllocation(clusterSpec)) { return versioned(clusterSpec, Map.of(new Version(0), smallestExclusiveResources())); } return versioned(clusterSpec, Map.of(new Version(0), new NodeResources(0.25, 1.14, 10, 0.3))); @@ -117,11 +115,6 @@ public class CapacityPolicies { return Architecture.valueOf(adminClusterNodeArchitecture.with(APPLICATION_ID, instance.serializedForm()).value()); } - /** Returns whether an exclusive host is required for given cluster type and exclusivity requirement */ - private boolean requiresExclusiveHost(ClusterSpec cluster) { - return ! zone.cloud().allowHostSharing() && (cluster.isExclusive() || !sharedHosts.value().isEnabled(cluster.type().name())); - } - /** Returns the resources for the newest version not newer than that requested in the cluster spec. */ static NodeResources versioned(ClusterSpec spec, Map resources) { return requireNonNull(new TreeMap<>(resources).floorEntry(spec.vespaVersion()), -- cgit v1.2.3