diff options
author | Harald Musum <musum@yahooinc.com> | 2022-02-28 12:19:03 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-02-28 12:19:03 +0100 |
commit | 785bf04d460a1eee91c08c1a1866391cbec12fb5 (patch) | |
tree | edff7ff344ed05f204c50ecc4847c85c0fc02e37 /node-admin/src | |
parent | 1af7b7470742445943fa2870fc0bd80666143f04 (diff) |
Support architecture in node repository
* Persist architecture for nodes
* Use architecture when talking to node repo
Diffstat (limited to 'node-admin/src')
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()); |