diff options
author | gjoranv <gv@verizonmedia.com> | 2023-02-18 16:13:45 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2023-02-18 16:13:45 +0100 |
commit | 623b2538aec3848facfb72abc4d7ba0f893ca686 (patch) | |
tree | bb0ba3cb0977a17d4b807a963765d9add5459610 | |
parent | cd78b3fa9684fd333edf07ea80c539bb82efff3f (diff) |
Make wg key non-optional in WireguardPeer.
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()); } } |