summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-05-06 15:01:01 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-05-06 15:01:01 +0200
commit8811deacab3f0e7504fdcbf2607566622afee26c (patch)
treee8ad5a5b96c03402c6a3a9e5de1428af68c3e416 /config-provisioning
parent3e4376f962d2c4d4291a1dc49c745e12e75b93fb (diff)
Create nodes by resources
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/abi-spec.json1
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java10
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java12
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<>();