summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-02-28 12:19:03 +0100
committerHarald Musum <musum@yahooinc.com>2022-02-28 12:19:03 +0100
commit785bf04d460a1eee91c08c1a1866391cbec12fb5 (patch)
treeedff7ff344ed05f204c50ecc4847c85c0fc02e37 /node-admin
parent1af7b7470742445943fa2870fc0bd80666143f04 (diff)
Support architecture in node repository
* Persist architecture for nodes * Use architecture when talking to node repo
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java23
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java3
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java1
3 files changed, 26 insertions, 1 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
index b99a3bb84d7..a524243e2fb 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
@@ -201,7 +201,8 @@ public class RealNodeRepository implements NodeRepository {
nodeResources.diskGb,
nodeResources.bandwidthGbps,
diskSpeedFromString(nodeResources.diskSpeed),
- storageTypeFromString(nodeResources.storageType));
+ storageTypeFromString(nodeResources.storageType),
+ architectureFromString(nodeResources.architecture));
}
private static NodeResources.DiskSpeed diskSpeedFromString(String diskSpeed) {
@@ -224,6 +225,16 @@ public class RealNodeRepository implements NodeRepository {
}
}
+ private static NodeResources.Architecture architectureFromString(String architecture) {
+ if (architecture == null) return NodeResources.Architecture.getDefault();
+ switch (architecture) {
+ case "arm64": return NodeResources.Architecture.arm64;
+ case "x86_64": return NodeResources.Architecture.x86_64;
+ case "any": return NodeResources.Architecture.any;
+ default: throw new IllegalArgumentException("Unknown architecture '" + architecture + "'");
+ }
+ }
+
private static String toString(NodeResources.DiskSpeed diskSpeed) {
switch (diskSpeed) {
case fast : return "fast";
@@ -242,6 +253,15 @@ public class RealNodeRepository implements NodeRepository {
}
}
+ private static String toString(NodeResources.Architecture architecture) {
+ switch (architecture) {
+ case arm64 : return "arm64";
+ case x86_64 : return "x86_64";
+ case any : return "any";
+ default: throw new IllegalArgumentException("Unknown architecture '" + architecture.name() + "'");
+ }
+ }
+
private static NodeRepositoryNode nodeRepositoryNodeFromAddNode(AddNode addNode) {
NodeRepositoryNode node = new NodeRepositoryNode();
node.id = addNode.id;
@@ -260,6 +280,7 @@ public class RealNodeRepository implements NodeRepository {
node.resources.bandwidthGbps = resources.bandwidthGbps();
node.resources.diskSpeed = toString(resources.diskSpeed());
node.resources.storageType = toString(resources.storageType());
+ node.resources.architecture = toString(resources.architecture());
});
node.type = addNode.nodeType.name();
node.ipAddresses = addNode.ipAddresses;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
index f99fb3d8b76..726ca391c8f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
@@ -191,6 +191,8 @@ public class NodeRepositoryNode {
public String diskSpeed;
@JsonProperty
public String storageType;
+ @JsonProperty
+ public String architecture;
@Override
public String toString() {
@@ -201,6 +203,7 @@ public class NodeRepositoryNode {
", bandwidthGbps=" + bandwidthGbps +
", diskSpeed='" + diskSpeed + '\'' +
", storageType='" + storageType + '\'' +
+ ", architecture='" + architecture + '\'' +
'}';
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
index 3256b16a6c5..3f07a8f5c90 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
@@ -178,6 +178,7 @@ public class RealNodeRepositoryTest {
assertEquals("default", hostSpec.flavor());
assertEquals(123, hostSpec.diskGb(), 0);
assertEquals(NodeType.confighost, hostSpec.type());
+ assertEquals(NodeResources.Architecture.x86_64, hostSpec.resources().architecture());
NodeSpec nodeSpec = nodeRepositoryApi.getOptionalNode("host123-1.domain.tld").orElseThrow();
assertEquals(nodeResources, nodeSpec.resources());