diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-06 10:30:58 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-06 10:30:58 +0100 |
commit | d0586ad37ac7c87279ba26fb5756bb588952b985 (patch) | |
tree | 79cff8aae05e5721765fc2c3eb86e5adc7758bdf /config-provisioning | |
parent | c63608db287878a831af237612918cafd0c600e3 (diff) |
Keep minCpuCores without speed adjustment
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java | 32 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java | 9 |
2 files changed, 29 insertions, 12 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java index 9e6e2c3bb67..0a292e9c948 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java @@ -24,6 +24,8 @@ public class Flavor { /** The hardware resources of this flavor */ private final NodeResources resources; + private final double minCpuCores; + private final Optional<FlavorOverrides> flavorOverrides; private static final double coreSpeedupRolloutFactor = 1.0/3.0; // TODO: Increase to 2/3 (then 1) on later releases @@ -40,34 +42,41 @@ public class Flavor { Optional.empty(), Type.valueOf(flavorConfig.environment()), true, - flavorConfig.cost()); + flavorConfig.cost(), + flavorConfig.minCpuCores()); } /** Creates a *node* flavor from a node resources spec */ public Flavor(NodeResources resources) { - this(resources.toString(), resources, Optional.empty(), Type.DOCKER_CONTAINER, false, 0); + this(resources.toString(), resources, Optional.empty(), Type.DOCKER_CONTAINER, false, 0, resources.vcpu()); } - private Flavor(String name, NodeResources resources, Optional<FlavorOverrides> flavorOverrides, Type type, boolean configured, int cost) { + private Flavor(String name, + NodeResources resources, + Optional<FlavorOverrides> flavorOverrides, + Type type, + boolean configured, + int cost, + double minCpuCores) { this.name = Objects.requireNonNull(name, "Name cannot be null"); this.resources = Objects.requireNonNull(resources, "Resources cannot be null"); this.flavorOverrides = Objects.requireNonNull(flavorOverrides, "Flavor overrides cannot be null"); this.type = Objects.requireNonNull(type, "Type cannot be null"); this.configured = configured; this.cost = cost; + this.minCpuCores = minCpuCores; } public Flavor with(FlavorOverrides flavorOverrides) { if (!configured) throw new IllegalArgumentException("Cannot override non-configured flavor"); - NodeResources newResources = new NodeResources( - resources.vcpu(), - resources.memoryGb(), - flavorOverrides.diskGb().orElseGet(resources::diskGb), - resources.bandwidthGbps(), - resources.diskSpeed()); - return new Flavor(name, newResources, Optional.of(flavorOverrides), type, true, cost); + NodeResources newResources = new NodeResources(resources.vcpu(), + resources.memoryGb(), + flavorOverrides.diskGb().orElseGet(resources::diskGb), + resources.bandwidthGbps(), + resources.diskSpeed()); + return new Flavor(name, newResources, Optional.of(flavorOverrides), type, true, cost, minCpuCores); } public Flavor with(NodeResources resources) { @@ -111,7 +120,8 @@ public class Flavor { public double getBandwidthGbps() { return resources.bandwidthGbps(); } - public double getMinCpuCores() { return resources.vcpu(); } + /** Returns the number of cores available in this flavor, not scaled for speed. */ + public double getMinCpuCores() { return minCpuCores; } public Type getType() { return type; } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java index ec3f73a8194..920455222bb 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java @@ -11,6 +11,8 @@ import static org.junit.Assert.assertEquals; public class NodeFlavorsTest { + private static final double delta = 0.00001; + @Test public void testConfigParsing() { FlavorsConfig.Builder builder = new FlavorsConfig.Builder(); @@ -22,13 +24,18 @@ public class NodeFlavorsTest { } { FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + flavorBuilder.minCpuCores(10); + flavorBuilder.cpuCoreSpeedup(1.3); flavorBuilder.name("banana").cost(3); flavorBuilderList.add(flavorBuilder); } builder.flavor(flavorBuilderList); FlavorsConfig config = new FlavorsConfig(builder); NodeFlavors nodeFlavors = new NodeFlavors(config); - assertEquals(3, nodeFlavors.getFlavor("banana").get().cost()); + Flavor banana = nodeFlavors.getFlavor("banana").get(); + assertEquals(3, banana.cost()); + assertEquals(10, banana.getMinCpuCores(), delta); + assertEquals("10 * (1 + (1.3 - 1)/3", 11, banana.resources().vcpu(), delta); } } |