aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2023-02-18 16:13:45 +0100
committergjoranv <gv@verizonmedia.com>2023-02-18 16:13:45 +0100
commit623b2538aec3848facfb72abc4d7ba0f893ca686 (patch)
treebb0ba3cb0977a17d4b807a963765d9add5459610
parentcd78b3fa9684fd333edf07ea80c539bb82efff3f (diff)
Make wg key non-optional in WireguardPeer.
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetWireguardResponse.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeer.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java5
7 files changed, 15 insertions, 19 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java b/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java
index 37218a42c70..8f6494d8f74 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/WireguardKey.java
@@ -1,7 +1,9 @@
package com.yahoo.config.provision;
import ai.vespa.validation.PatternedStringWrapper;
+import com.google.common.io.CharStreams;
+import java.util.UUID;
import java.util.regex.Pattern;
/**
@@ -27,4 +29,9 @@ public class WireguardKey extends PatternedStringWrapper<WireguardKey> {
public String toString() {
return "Wireguard key '" + value() + "'";
}
+
+ public static WireguardKey generateRandomForTesting() {
+ var str = UUID.randomUUID().toString().replace("-", "");
+ return new WireguardKey(str + "12345678900=");
+ }
}
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 a115e40a290..3a7e12f5661 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
@@ -354,13 +354,13 @@ public class RealNodeRepository implements NodeRepository {
private static WireguardPeer createTenantPeer(NodeRepositoryNode node) {
return new WireguardPeer(HostName.of(node.hostname),
node.ipAddresses.stream().map(VersionedIpAddress::from).toList(),
- node.wireguardKey());
+ WireguardKey.from(node.wireguardPubkey));
}
private static WireguardPeer createConfigserverPeer(GetWireguardResponse.Configserver configServer) {
return new WireguardPeer(HostName.of(configServer.hostname),
configServer.ipAddresses.stream().map(VersionedIpAddress::from).toList(),
- configServer.wireguardKey());
+ WireguardKey.from(configServer.wireguardPubkey));
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetWireguardResponse.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetWireguardResponse.java
index 9f30f8e0fb5..a71b2a74b31 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetWireguardResponse.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetWireguardResponse.java
@@ -4,10 +4,8 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.yahoo.config.provision.WireguardKey;
import java.util.List;
-import java.util.Optional;
/**
* A response from the /nodes/v2/wireguard api.
@@ -45,10 +43,6 @@ public class GetWireguardResponse {
this.ipAddresses = ipAddresses;
this.wireguardPubkey = wireguardPubkey;
}
-
- public Optional<WireguardKey> wireguardKey() {
- return (wireguardPubkey == null || wireguardPubkey.isEmpty()) ? Optional.empty() : Optional.of(new WireguardKey(wireguardPubkey));
- }
}
}
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 1c6cb5224de..eb7ceab6021 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
@@ -5,11 +5,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
-import com.yahoo.config.provision.WireguardKey;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
/**
@@ -96,10 +94,6 @@ public class NodeRepositoryNode {
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public String wireguardPubkey;
- public Optional<WireguardKey> wireguardKey() {
- return (wireguardPubkey == null || wireguardPubkey.isEmpty()) ? Optional.empty() : Optional.of(new WireguardKey(wireguardPubkey));
- }
-
@JsonProperty("reports")
public Map<String, JsonNode> reports = null;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeer.java
index 37d907e3390..0f4d2d5d8e0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeer.java
@@ -5,16 +5,16 @@ import com.yahoo.config.provision.WireguardKey;
import com.yahoo.vespa.hosted.node.admin.task.util.network.VersionedIpAddress;
import java.util.List;
-import java.util.Optional;
/**
* A wireguard peer. Sorted by hostname. IP addresses are sorted by version, IPv6 first.
+ * The public key should always be non-null.
*
* @author gjoranv
*/
public record WireguardPeer(HostName hostname,
List<VersionedIpAddress> ipAddresses,
- Optional<WireguardKey> publicKey) implements Comparable<WireguardPeer> {
+ WireguardKey publicKey) implements Comparable<WireguardPeer> {
public WireguardPeer {
if (ipAddresses.isEmpty()) throw new IllegalArgumentException("No IP addresses for peer node " + hostname.value());
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 c7eb26cb6a7..8d19925a886 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
@@ -229,7 +229,7 @@ public class RealNodeRepositoryTest {
assertEquals(2, peer.ipAddresses().size());
assertIp(peer.ipAddresses().get(0), ipv6, 6);
assertIp(peer.ipAddresses().get(1), ipv4, 4);
- assertEquals(publicKey, peer.publicKey().get().value());
+ assertEquals(publicKey, peer.publicKey().value());
}
private void assertIp(VersionedIpAddress ip, String expectedIp, int expectedVersion) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java
index 3264c9aa190..00aca5c5e4d 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java
@@ -1,11 +1,11 @@
package com.yahoo.vespa.hosted.node.admin.wireguard;
import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.WireguardKey;
import com.yahoo.vespa.hosted.node.admin.task.util.network.VersionedIpAddress;
import org.junit.jupiter.api.Test;
import java.util.List;
-import java.util.Optional;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -29,6 +29,7 @@ public class WireguardPeerTest {
}
private static WireguardPeer peer(String hostname) {
- return new WireguardPeer(HostName.of(hostname), List.of(VersionedIpAddress.from("::1:1")), Optional.empty());
+ return new WireguardPeer(HostName.of(hostname), List.of(VersionedIpAddress.from("::1:1")),
+ WireguardKey.generateRandomForTesting());
}
}