diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-08-22 15:44:10 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-08-22 15:44:10 +0200 |
commit | b613c2212bfb6f2055c3b69e9188c0b79e67eea0 (patch) | |
tree | bcfe72fea1f9f9624b9f0a7ba2c8652e64d64fd3 /config-provisioning | |
parent | 3b9047f5113146ff578ac4eea19d1ec5796fcac8 (diff) |
Add methods to easily modify Flavor
Diffstat (limited to 'config-provisioning')
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"); |