diff options
author | gjoranv <gv@verizonmedia.com> | 2023-02-18 15:16:27 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2023-02-18 15:28:03 +0100 |
commit | c9e4cc5668b7c844ce691db75b3b84808529ad3f (patch) | |
tree | 446be85382e1401f91b5ad4a78e017acb9476777 | |
parent | f73ac94a71684443c079fd2a696ad25966fba2a6 (diff) |
Only include configservers with wg pubkey in wireguard response.
5 files changed, 19 insertions, 22 deletions
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 96a0a46a3ff..47d37fe37fe 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 @@ -204,16 +204,13 @@ public class RealNodeRepositoryTest { //// Configservers //// List<WireguardPeer> cfgPeers = nodeRepositoryApi.getConfigserverPeers(); - assertEquals(2, cfgPeers.size()); + // cfg2 does not have a wg public key, so should not be included + assertEquals(1, cfgPeers.size()); assertWireguardPeer(cfgPeers.get(0), "cfg1.yahoo.com", "::201:1", "127.0.201.1", "lololololololololololololololololololololoo="); - assertWireguardPeer(cfgPeers.get(1), "cfg2.yahoo.com", - "::202:1", "127.0.202.1", - "olololololololololololololololololololololo="); - //// Exclave nodes //// List<WireguardPeer> exclavePeers = nodeRepositoryApi.getExclavePeers(); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/WireguardResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/WireguardResponse.java index 0bac6f09029..11be80de990 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/WireguardResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/WireguardResponse.java @@ -1,13 +1,18 @@ package com.yahoo.vespa.hosted.provision.restapi; import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.WireguardKey; import com.yahoo.restapi.SlimeJsonResponse; import com.yahoo.slime.Cursor; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; +import java.util.Set; + /** + * A response containing the wireguard peer config for each configserver that has a public key. + * * @author gjoranv */ public class WireguardResponse extends SlimeJsonResponse { @@ -20,17 +25,18 @@ public class WireguardResponse extends SlimeJsonResponse { .list(Node.State.active) .nodeType(NodeType.config); - configservers.forEach( - configserver -> addConfigserver(cfgArray.addObject(), configserver)); + configservers.stream() + .filter(node -> node.wireguardPubKey().isPresent()) + .forEach(configserver -> addConfigserver(cfgArray.addObject(), + configserver.hostname(), + configserver.wireguardPubKey().get(), + configserver.ipConfig().primary())); } - private void addConfigserver(Cursor cfgEntry, Node configserver) { - cfgEntry.setString("hostname", configserver.hostname()); - - configserver.wireguardPubKey().ifPresent( - key -> cfgEntry.setString("wireguardPubkey", key.value())); - - NodesResponse.ipAddressesToSlime(configserver.ipConfig().primary(), cfgEntry.setArray("ipAddresses")); + private void addConfigserver(Cursor cfgEntry, String hostname, WireguardKey key, Set<String> ipAddresses) { + cfgEntry.setString("hostname", hostname); + cfgEntry.setString("wireguardPubkey", key.value()); + NodesResponse.ipAddressesToSlime(ipAddresses, cfgEntry.setArray("ipAddresses")); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java index 3caefcdc69e..382f8520c26 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java @@ -173,7 +173,7 @@ public class MockNodeRepository extends NodeRepository { nodes.add(Node.create("cfg1", ipConfig(201), "cfg1.yahoo.com", flavors.getFlavorOrThrow("default"), NodeType.config) .wireguardPubKey(WireguardKey.from("lololololololololololololololololololololoo=")).build()); nodes.add(Node.create("cfg2", ipConfig(202), "cfg2.yahoo.com", flavors.getFlavorOrThrow("default"), NodeType.config) - .wireguardPubKey(WireguardKey.from("olololololololololololololololololololololo=")).build()); + .build()); // Ready all nodes, except 7 and 55 nodes = nodes().addNodes(nodes, Agent.system); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json index c970725d015..3bd45acb856 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json @@ -116,6 +116,5 @@ "127.0.202.1", "::202:1" ], - "additionalIpAddresses": [], - "wireguardPubkey":"olololololololololololololololololololololo=" + "additionalIpAddresses": [] } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/wireguard.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/wireguard.json index c2853536c5d..660b92d92ba 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/wireguard.json +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/wireguard.json @@ -5,11 +5,6 @@ "hostname":"cfg1.yahoo.com", "wireguardPubkey":"lololololololololololololololololololololoo=", "ipAddresses":["127.0.201.1","::201:1"] - }, - { - "hostname":"cfg2.yahoo.com", - "wireguardPubkey":"olololololololololololololololololololololo=", - "ipAddresses":["127.0.202.1","::202:1"] } ] } |