diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-11-08 13:02:49 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-11-08 13:02:49 +0100 |
commit | 12a49711b0a38a1c3db2d8897bde15f96163bfdf (patch) | |
tree | 0704ee65d1d011898b5ddd914546a4a4e2ff2ca2 /node-repository/src/main/java/com | |
parent | 3959ca81f62551ea1e86934f0517902cc5305d6f (diff) |
Use VIP hostname in SharedLoadBalancerService
Diffstat (limited to 'node-repository/src/main/java/com')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java index 44fc8cf53b5..7dbebd1fc47 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java @@ -17,8 +17,11 @@ import java.util.Set; import java.util.stream.Collectors; /** - * This code mimics provisioning load balancers that already exist in the routing layer. - * It will just map the load balancer request to the proxy nodes available in the node repository. + * This implementation of {@link LoadBalancerService} returns the load balancer(s) that exists by default in the shared + * routing layer. + * + * Since such load balancers always exist, we can return the hostname of the routing layer VIP and the networks of the + * proxy nodes directly. Nothing has to be provisioned. * * @author ogronnesby */ @@ -27,32 +30,26 @@ public class SharedLoadBalancerService implements LoadBalancerService { private static final Comparator<Node> hostnameComparator = Comparator.comparing(Node::hostname); private final NodeRepository nodeRepository; + private final String vipHostname; - public SharedLoadBalancerService(NodeRepository nodeRepository) { + public SharedLoadBalancerService(NodeRepository nodeRepository, String vipHostname) { this.nodeRepository = Objects.requireNonNull(nodeRepository); + this.vipHostname = Objects.requireNonNull(vipHostname); } @Override public LoadBalancerInstance create(LoadBalancerSpec spec, boolean force) { NodeList proxyNodes = nodeRepository.nodes().list().nodeType(NodeType.proxy).sortedBy(hostnameComparator); - - if (proxyNodes.size() == 0) { - throw new IllegalStateException("Missing proxy nodes in node repository"); - } - - Node firstProxyNode = proxyNodes.first().get(); + if (proxyNodes.isEmpty()) throw new IllegalStateException("No proxy nodes found in node-repository"); Set<String> networks = proxyNodes.stream() .flatMap(node -> node.ipConfig().primary().stream()) .map(SharedLoadBalancerService::withPrefixLength) .collect(Collectors.toSet()); - - return new LoadBalancerInstance( - HostName.from(firstProxyNode.hostname()), - Optional.empty(), - Set.of(4080, 4443), - networks, - spec.reals() - ); + return new LoadBalancerInstance(HostName.from(vipHostname), + Optional.empty(), + Set.of(4080, 4443), + networks, + spec.reals()); } @Override |