summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-08-22 15:44:10 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-08-22 15:44:10 +0200
commitb613c2212bfb6f2055c3b69e9188c0b79e67eea0 (patch)
treebcfe72fea1f9f9624b9f0a7ba2c8652e64d64fd3 /config-provisioning
parent3b9047f5113146ff578ac4eea19d1ec5796fcac8 (diff)
Add methods to easily modify Flavor
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/abi-spec.json8
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java15
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java18
3 files changed, 32 insertions, 9 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json
index ae34a75f3f4..ed3d76353fa 100644
--- a/config-provisioning/abi-spec.json
+++ b/config-provisioning/abi-spec.json
@@ -389,7 +389,8 @@
"methods": [
"public void <init>(com.yahoo.config.provisioning.FlavorsConfig$Flavor)",
"public void <init>(com.yahoo.config.provision.NodeResources)",
- "public com.yahoo.config.provision.Flavor withFlavorOverrides(com.yahoo.config.provision.host.FlavorOverrides)",
+ "public com.yahoo.config.provision.Flavor with(com.yahoo.config.provision.host.FlavorOverrides)",
+ "public com.yahoo.config.provision.Flavor with(com.yahoo.config.provision.NodeResources)",
"public java.lang.String name()",
"public int cost()",
"public boolean isStock()",
@@ -617,8 +618,11 @@
"public double diskGb()",
"public double bandwidthGbps()",
"public com.yahoo.config.provision.NodeResources$DiskSpeed diskSpeed()",
- "public com.yahoo.config.provision.NodeResources withDiskSpeed(com.yahoo.config.provision.NodeResources$DiskSpeed)",
"public com.yahoo.config.provision.NodeResources withVcpu(double)",
+ "public com.yahoo.config.provision.NodeResources withMemoryGb(double)",
+ "public com.yahoo.config.provision.NodeResources withDiskGb(double)",
+ "public com.yahoo.config.provision.NodeResources withBandwidthGbps(double)",
+ "public com.yahoo.config.provision.NodeResources withDiskSpeed(com.yahoo.config.provision.NodeResources$DiskSpeed)",
"public com.yahoo.config.provision.NodeResources subtract(com.yahoo.config.provision.NodeResources)",
"public com.yahoo.config.provision.NodeResources add(com.yahoo.config.provision.NodeResources)",
"public boolean allocateByLegacyName()",
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 c2b2fc2cb20..e814c272aa0 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
@@ -57,10 +57,7 @@ public class Flavor {
this.cost = cost;
}
- public Flavor withFlavorOverrides(FlavorOverrides flavorOverrides) {
- if (type == Type.DOCKER_CONTAINER)
- throw new IllegalArgumentException("Cannot override flavor for docker containers");
-
+ public Flavor with(FlavorOverrides flavorOverrides) {
if (!configured)
throw new IllegalArgumentException("Cannot override non-configured flavor");
@@ -73,6 +70,16 @@ public class Flavor {
return new Flavor(name, newResources, Optional.of(flavorOverrides), type, true, cost);
}
+ public Flavor with(NodeResources resources) {
+ if (type == Type.DOCKER_CONTAINER && !configured)
+ return new Flavor(resources);
+
+ if (!resources.equals(this.resources.withDiskGb(resources.diskGb())))
+ throw new IllegalArgumentException("Can only override disk GB for configured flavor");
+
+ return with(FlavorOverrides.ofDisk(resources.diskGb()));
+ }
+
/** Returns the unique identity of this flavor if it is configured, or the resource spec string otherwise */
public String name() { return name; }
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
index 7d13cf6bd45..89d497a3ab0 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
@@ -54,14 +54,26 @@ public class NodeResources {
public double bandwidthGbps() { return bandwidthGbps; }
public DiskSpeed diskSpeed() { return diskSpeed; }
- public NodeResources withDiskSpeed(DiskSpeed speed) {
- return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, speed);
+ public NodeResources withVcpu(double vcpu) {
+ return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed);
}
- public NodeResources withVcpu(double vcpu) {
+ public NodeResources withMemoryGb(double memoryGb) {
+ return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed);
+ }
+
+ public NodeResources withDiskGb(double diskGb) {
return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed);
}
+ public NodeResources withBandwidthGbps(double bandwidthGbps) {
+ return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed);
+ }
+
+ public NodeResources withDiskSpeed(DiskSpeed speed) {
+ return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, speed);
+ }
+
public NodeResources subtract(NodeResources other) {
if ( ! this.isInterchangeableWith(other))
throw new IllegalArgumentException(this + " and " + other + " are not interchangeable");