diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-06 15:01:01 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-06 15:01:01 +0200 |
commit | 8811deacab3f0e7504fdcbf2607566622afee26c (patch) | |
tree | e8ad5a5b96c03402c6a3a9e5de1428af68c3e416 /config-provisioning | |
parent | 3e4376f962d2c4d4291a1dc49c745e12e75b93fb (diff) |
Create nodes by resources
Diffstat (limited to 'config-provisioning')
3 files changed, 23 insertions, 0 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json index b71aa9976a7..14a70f6b068 100644 --- a/config-provisioning/abi-spec.json +++ b/config-provisioning/abi-spec.json @@ -398,6 +398,7 @@ "public boolean isCanonical()", "public java.util.List replaces()", "public boolean satisfies(com.yahoo.config.provision.Flavor)", + "public boolean hasAtLeast(com.yahoo.config.provision.NodeResources)", "public void freeze()", "public boolean isLargerThan(com.yahoo.config.provision.Flavor)", "public boolean isConfigured()", 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 189d49e5c80..f7b1e8eca57 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 @@ -165,6 +165,16 @@ public class Flavor { return false; } + /** + * Returns whether this flavor has at least the given resources, i.e if all resources of this are at least + * as large as the given resources. + */ + public boolean hasAtLeast(NodeResources resources) { + return this.minCpuCores >= resources.vcpu() && + this.minMainMemoryAvailableGb >= resources.memoryGb() && + this.minDiskAvailableGb >= resources.diskGb(); + } + /** Irreversibly freezes the content of this */ public void freeze() { replacesFlavors = ImmutableList.copyOf(replacesFlavors); 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 55ffa821e26..81f3798a370 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 @@ -10,7 +10,9 @@ import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; public class NodeFlavorsTest { @@ -57,6 +59,16 @@ public class NodeFlavorsTest { } @Test + public void testHasAtLeast() { + Flavor flavor = new Flavor(new NodeResources(1, 2, 3)); + assertTrue(flavor.hasAtLeast(new NodeResources(1, 2, 3))); + assertTrue(flavor.hasAtLeast(new NodeResources(1, 1.5, 2))); + assertFalse(flavor.hasAtLeast(new NodeResources(1, 1.5, 4))); + assertFalse(flavor.hasAtLeast(new NodeResources(2, 1.5, 4))); + assertFalse(flavor.hasAtLeast(new NodeResources(1, 2.1, 4))); + } + + @Test public void testRetiredFlavorWithoutReplacement() { FlavorsConfig.Builder builder = new FlavorsConfig.Builder(); List<FlavorsConfig.Flavor.Builder> flavorBuilderList = new ArrayList<>(); |