diff options
Diffstat (limited to 'node-repository')
4 files changed, 15 insertions, 14 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 ff65dc18181..c4c062311e6 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 @@ -8,7 +8,6 @@ import com.yahoo.component.Version; import com.yahoo.concurrent.maintenance.JobControl; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.DockerImage; -import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeType; @@ -124,7 +123,7 @@ public class NodeRepository extends AbstractComponent { new DnsNameResolver(), DockerImage.fromString(config.dockerImage()), config.useCuratorClientCache(), provisionServiceProvider.getHostProvisioner().isPresent(), - zone.environment() == Environment.prod ? 1 : 0); + zone.environment().isProduction() && provisionServiceProvider.getHostProvisioner().isEmpty() ? 1 : 0); } /** diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java index 44bfed90106..0a32970e056 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java @@ -110,7 +110,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer { /** * Provision the nodes necessary to satisfy given capacity. * - * @return Excess hosts that can safely be deprovisioned, if any. + * @return excess hosts that can safely be deprovisioned, if any */ private List<Node> provision(List<NodeResources> capacity, NodeList nodes) { List<Node> existingHosts = availableHostsOf(nodes); 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 5c990f0a3f3..39f784a6aac 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 @@ -19,12 +19,8 @@ public class CapacityPolicies { private final Zone zone; - /* Deployments must match 1-to-1 the advertised resources of a physical host */ - private final boolean isUsingAdvertisedResources; - public CapacityPolicies(NodeRepository nodeRepository) { this.zone = nodeRepository.zone(); - this.isUsingAdvertisedResources = zone.getCloud().dynamicProvisioning(); } public int decideSize(int requested, Capacity capacity, ClusterSpec cluster, ApplicationId application) { @@ -64,14 +60,14 @@ public class CapacityPolicies { // Use small logserver in dev system return new NodeResources(0.1, 1, 10, 0.3); } - return isUsingAdvertisedResources ? - new NodeResources(0.5, 4, 50, 0.3) : - new NodeResources(0.5, 2, 50, 0.3); + return zone.getCloud().allowHostSharing() ? + new NodeResources(0.5, 2, 50, 0.3) : + new NodeResources(0.5, 4, 50, 0.3); } - return isUsingAdvertisedResources ? - new NodeResources(2.0, 8, 50, 0.3) : - new NodeResources(1.5, 8, 50, 0.3); + return zone.getCloud().allowHostSharing() ? + new NodeResources(1.5, 8, 50, 0.3) : + new NodeResources(2.0, 8, 50, 0.3); } /** diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index faae52c72ec..a41cab14fe8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -16,7 +16,10 @@ import com.yahoo.config.provision.Provisioner; import com.yahoo.config.provision.Zone; import com.yahoo.transaction.Mutex; import com.yahoo.transaction.NestedTransaction; +import com.yahoo.vespa.flags.FetchVector; import com.yahoo.vespa.flags.FlagSource; +import com.yahoo.vespa.flags.Flags; +import com.yahoo.vespa.flags.IntFlag; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -55,6 +58,7 @@ public class NodeRepositoryProvisioner implements Provisioner { private final Activator activator; private final Optional<LoadBalancerProvisioner> loadBalancerProvisioner; private final NodeResourceLimits nodeResourceLimits; + private final IntFlag tenantNodeQuota; @Inject public NodeRepositoryProvisioner(NodeRepository nodeRepository, Zone zone, @@ -72,6 +76,7 @@ public class NodeRepositoryProvisioner implements Provisioner { flagSource, loadBalancerProvisioner); this.activator = new Activator(nodeRepository, loadBalancerProvisioner); + this.tenantNodeQuota = Flags.TENANT_NODE_QUOTA.bindTo(flagSource); } @@ -184,7 +189,8 @@ public class NodeRepositoryProvisioner implements Provisioner { if (application.tenant().value().hashCode() == 3857) return requestedNodes <= 60; if (application.tenant().value().hashCode() == -1271827001) return requestedNodes <= 75; - return requestedNodes <= 5; + + return requestedNodes <= tenantNodeQuota.with(FetchVector.Dimension.APPLICATION_ID, application.tenant().value()).value(); } private List<HostSpec> asSortedHosts(List<Node> nodes, NodeResources requestedResources) { |