summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-05-02 20:18:51 +0200
committerJon Bratseth <bratseth@gmail.com>2020-05-02 20:18:51 +0200
commit7fe474f2f3db889c801d2d453f4eba4c6ea5b553 (patch)
tree609089a5ac7a4e4d68f5b6a0ff181b38de418fbd
parent9d3eab473716738afee17f89fc2a22b8bd81ecd2 (diff)
Don't match bandwidth
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java26
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java6
4 files changed, 20 insertions, 16 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
index 89207d4e23f..c6778af6efb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
@@ -6,10 +6,8 @@ import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
-import com.yahoo.config.provision.host.FlavorOverrides;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
-import com.yahoo.vespa.hosted.provision.applications.Cluster;
import com.yahoo.vespa.hosted.provision.provisioning.HostResourcesCalculator;
import com.yahoo.vespa.hosted.provision.provisioning.NodeResourceLimits;
@@ -169,21 +167,25 @@ public class AllocatableClusterResources {
// return the cheapest flavor satisfying the target resources, if any
Optional<AllocatableClusterResources> best = Optional.empty();
for (Flavor flavor : nodeRepository.flavors().getFlavors()) {
- NodeResources flavorResources = nodeRepository.resourcesCalculator().advertisedResourcesOf(flavor);
+ NodeResources advertisedResources = nodeRepository.resourcesCalculator().advertisedResourcesOf(flavor);
+ NodeResources realResources = flavor.resources();
+
+ // Adjust where we don't need exact match to the flavor
if (flavor.resources().storageType() == NodeResources.StorageType.remote) {
- flavor = flavor.with(FlavorOverrides.ofDisk(cappedNodeResources.diskGb()));
- flavorResources = flavorResources.withDiskGb(cappedNodeResources.diskGb()); // TODO: Do this in resourcesCalculator
+ advertisedResources = advertisedResources.withDiskGb(cappedNodeResources.diskGb());
+ realResources = realResources.withDiskGb(cappedNodeResources.diskGb());
+ }
+ if (flavor.resources().bandwidthGbps() >= cappedNodeResources.bandwidthGbps()) {
+ advertisedResources = advertisedResources.withBandwidthGbps(cappedNodeResources.bandwidthGbps());
+ realResources = realResources.withBandwidthGbps(cappedNodeResources.bandwidthGbps());
}
- if (flavor.resources().bandwidthGbps() >= cappedNodeResources.bandwidthGbps())
- flavorResources = flavorResources.withBandwidthGbps(limits.min().nodeResources().bandwidthGbps());
- if ( ! between(limits.min().nodeResources(), limits.max().nodeResources(), flavorResources)) continue;
+ if ( ! between(limits.min().nodeResources(), limits.max().nodeResources(), advertisedResources)) continue;
- var candidate = new AllocatableClusterResources(resources.with(flavor.resources()),
- flavor,
+ var candidate = new AllocatableClusterResources(resources.with(realResources),
+ advertisedResources,
resources.nodeResources(),
- clusterType,
- nodeRepository.resourcesCalculator());
+ clusterType);
if (best.isEmpty() || candidate.preferableTo(best.get()))
best = Optional.of(candidate);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
index 42a52601527..a8faafc0bad 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.google.inject.Inject;
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 6f026254bcd..d6d6d76e182 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.google.inject.Inject;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
index 67d37c8847a..23573e50156 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
@@ -191,14 +191,14 @@ public class DynamicDockerProvisionTest {
tester.activate(app1, cluster1, Capacity.from(resources(2, 1, 2, 20, 40),
resources(4, 1, 2, 20, 40)));
tester.assertNodes("Allocation specifies memory in the advertised amount",
- 3, 1, 2, 20, 40, 10,
+ 3, 1, 2, 20, 40,
app1, cluster1);
// Redeploy the same
tester.activate(app1, cluster1, Capacity.from(resources(2, 1, 2, 20, 40),
resources(4, 1, 2, 20, 40)));
tester.assertNodes("Allocation specifies memory in the advertised amount",
- 3, 1, 2, 20, 40, 10,
+ 3, 1, 2, 20, 40,
app1, cluster1);
}
@@ -345,6 +345,8 @@ public class DynamicDockerProvisionTest {
if (hostFlavor.resources().storageType() == NodeResources.StorageType.remote
&& hostFlavor.resources().diskGb() >= nodeResources.diskGb())
resourcesToVerify = resourcesToVerify.withDiskGb(hostFlavor.resources().diskGb());
+ if (hostFlavor.resources().bandwidthGbps() >= nodeResources.bandwidthGbps())
+ resourcesToVerify = resourcesToVerify.withBandwidthGbps(hostFlavor.resources().bandwidthGbps());
return hostFlavor.resources().compatibleWith(resourcesToVerify);
}