diff options
author | gjoranv <gv@verizonmedia.com> | 2023-02-17 14:31:27 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2023-02-17 14:45:22 +0100 |
commit | fcb117eac8d8bf22dedbe78db04918d10bb33f1f (patch) | |
tree | 6e6f1c553ac27d4ff60ddd6c5a8e9faeae172bc3 | |
parent | 83b51daa3b9a979d202ebea537f29132783ea476 (diff) |
Make wireguard peers comparable on hostname.
4 files changed, 42 insertions, 3 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 6199d7c30f3..7b888f1280c 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 @@ -136,7 +136,7 @@ public class RealNodeRepository implements NodeRepository { return response.nodes.stream() .map(RealNodeRepository::createTenantPeer) - .sorted(Comparator.comparing(ConfigserverPeer::hostname)) + .sorted() .toList(); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/ConfigserverPeer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/ConfigserverPeer.java index b1c1e83dedd..510bdacfe0c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/ConfigserverPeer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/wireguard/ConfigserverPeer.java @@ -14,11 +14,16 @@ import java.util.Optional; */ public record ConfigserverPeer(HostName hostname, List<VersionedIpAddress> ipAddresses, - Optional<WireguardKey> publicKey) { + Optional<WireguardKey> publicKey) implements Comparable<ConfigserverPeer> { public ConfigserverPeer { if (ipAddresses.isEmpty()) throw new IllegalArgumentException("No IP addresses for peer node " + hostname.value()); ipAddresses = ipAddresses.stream().sorted().toList(); } + @Override + public int compareTo(ConfigserverPeer o) { + return hostname.value().compareTo(o.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 8ed7eac6a41..f47e8e63b79 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 @@ -224,7 +224,7 @@ public class RealNodeRepositoryTest { "::101:1", "127.0.101.1", "000011112222333344445555666677778888999900c="); - assertWireguardPeer(exclavePeers.get(0), "host3.yahoo.com", + assertWireguardPeer(exclavePeers.get(1), "host3.yahoo.com", "::3:1", "127.0.3.1", "333344445555666677778888999900001111222211c="); } 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 new file mode 100644 index 00000000000..113ee4ab86d --- /dev/null +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/wireguard/WireguardPeerTest.java @@ -0,0 +1,34 @@ +package com.yahoo.vespa.hosted.node.admin.wireguard; + +import com.yahoo.config.provision.HostName; +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; + +/** + * @author gjoranv + */ +public class WireguardPeerTest { + + @Test + void peers_are_sorted_by_hostname_ascending() { + List<ConfigserverPeer> peers = Stream.of( + peer("b"), + peer("a"), + peer("c") + ).sorted().toList(); + + assertEquals("a", peers.get(0).hostname().value()); + assertEquals("b", peers.get(1).hostname().value()); + assertEquals("c", peers.get(2).hostname().value()); + } + + private static ConfigserverPeer peer(String hostname) { + return new ConfigserverPeer(HostName.of(hostname), List.of(VersionedIpAddress.from("::1:1")), Optional.empty()); + } +} |