summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-02-26 11:31:34 +0100
committerHarald Musum <musum@yahooinc.com>2022-02-26 11:31:34 +0100
commit0d000a2379d9e2833f1e7c26207fb36163fe2a2b (patch)
tree72ee3fa3bd03701d957adc254963326fb1b48b2c
parent484861ffd79e943ec9dcacd5b02aab8e6b91709d (diff)
Add support for architecture in HostResources
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java15
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java9
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java8
3 files changed, 22 insertions, 10 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java b/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
index 31c3bdd8422..707125ff4ad 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
@@ -21,6 +21,7 @@ public class HostResources {
private static final Set<String> validDiskSpeeds = Set.of("slow", "fast");
private static final Set<String> validStorageTypes = Set.of("remote", "local");
private static final Set<String> validClusterTypes = Set.of("container", "content", "combined", "admin");
+ private static final Set<String> validArchitectures = Set.of("arm64", "x86_64");
private final double vcpu;
private final double memoryGb;
@@ -33,6 +34,7 @@ public class HostResources {
private final Optional<String> clusterType;
private final int containers;
+ private final String architecture;
@JsonCreator
public HostResources(@JsonProperty("vcpu") Double vcpu,
@@ -42,7 +44,8 @@ public class HostResources {
@JsonProperty("diskSpeed") String diskSpeed,
@JsonProperty("storageType") String storageType,
@JsonProperty("clusterType") String clusterType,
- @JsonProperty("containers") Integer containers) {
+ @JsonProperty("containers") Integer containers,
+ @JsonProperty("architecture") String architecture) {
this.vcpu = requirePositive("vcpu", vcpu);
this.memoryGb = requirePositive("memoryGb", memoryGb);
this.diskGb = requirePositive("diskGb", diskGb);
@@ -51,6 +54,7 @@ public class HostResources {
this.storageType = validateEnum("storageType", validStorageTypes, storageType);
this.clusterType = Optional.ofNullable(clusterType).map(cType -> validateEnum("clusterType", validClusterTypes, cType));
this.containers = requirePositive("containers", containers);
+ this.architecture = validateEnum("architecture", validArchitectures, architecture);
}
@JsonProperty("vcpu")
@@ -80,6 +84,9 @@ public class HostResources {
@JsonProperty("containers")
public int containers() { return containers; }
+ @JsonProperty("architecture")
+ public String architecture() { return architecture == null ? "x86_64" : architecture; }
+
public boolean satisfiesClusterType(String clusterType) {
return this.clusterType.map(clusterType::equalsIgnoreCase).orElse(true);
}
@@ -121,6 +128,7 @@ public class HostResources {
", storageType='" + storageType + '\'' +
", clusterType='" + clusterType + '\'' +
", containers=" + containers +
+ ", architecture=" + architecture +
'}';
}
@@ -136,11 +144,12 @@ public class HostResources {
diskSpeed.equals(resources.diskSpeed) &&
storageType.equals(resources.storageType) &&
clusterType.equals(resources.clusterType) &&
- containers == resources.containers;
+ containers == resources.containers &&
+ architecture.equals(resources.architecture);
}
@Override
public int hashCode() {
- return Objects.hash(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, clusterType, containers);
+ return Objects.hash(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, clusterType, containers, architecture);
}
}
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java b/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
index a4d8ecd0f29..8cac286be5e 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
@@ -15,11 +15,10 @@ import static com.yahoo.vespa.flags.FlagsTest.testGeneric;
class PermanentFlagsTest {
@Test
public void testSharedHostFlag() {
- SharedHost sharedHost = new SharedHost(List.of(new HostResources(
- 4.0, 16.0, 50.0, 0.3,
- "fast", "local", "admin",
- 10)),
- null);
+ SharedHost sharedHost = new SharedHost(List.of(new HostResources(4.0, 16.0, 50.0, 0.3,
+ "fast", "local", "admin",
+ 10, "x86_64")),
+ null);
testGeneric(PermanentFlags.SHARED_HOST, sharedHost);
}
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java b/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
index 7bf39b884ef..852e1f9b7b1 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
@@ -12,8 +12,12 @@ import static org.junit.Assert.assertEquals;
public class SharedHostTest {
@Test
public void serialization() throws IOException {
- verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", "container", 5)), 6));
- verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", "admin", 5)), null));
+ verifySerialization(new SharedHost(List.of(
+ new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote",
+ "container", 5, "x86_64")), 6));
+ verifySerialization(new SharedHost(List.of(
+ new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote",
+ "admin", 5, "arm64")), null));
}
private void verifySerialization(SharedHost sharedHost) throws IOException {