summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java16
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java8
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) {