aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2023-02-18 15:16:27 +0100
committergjoranv <gv@verizonmedia.com>2023-02-18 15:28:03 +0100
commitc9e4cc5668b7c844ce691db75b3b84808529ad3f (patch)
tree446be85382e1401f91b5ad4a78e017acb9476777
parentf73ac94a71684443c079fd2a696ad25966fba2a6 (diff)
Only include configservers with wg pubkey in wireguard response.
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/WireguardResponse.java24
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/wireguard.json5
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"]
}
]
}