aboutsummaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-11-06 10:30:58 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2019-11-06 10:30:58 +0100
commitd0586ad37ac7c87279ba26fb5756bb588952b985 (patch)
tree79cff8aae05e5721765fc2c3eb86e5adc7758bdf /config-provisioning
parentc63608db287878a831af237612918cafd0c600e3 (diff)
Keep minCpuCores without speed adjustment
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java32
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java9
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);
}
}