diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-06-21 11:34:07 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-06-21 11:34:07 +0200 |
commit | 02ec47b45439f2807fade78930d2ce9d3be1aada (patch) | |
tree | a1839ae4f8361882f9eac91ff08caaf13191301e /node-repository/src/main/java | |
parent | 2318610b9543eac9e3033300af06390b6c4abde2 (diff) |
Prepare nodes before load balancers
In case we're reactivating a inactive load balancer, we need a non-empty set of
nodes when re-configuring (a guard in the `LoadBalancerService` implementation
enforces this).
Diffstat (limited to 'node-repository/src/main/java')
2 files changed, 8 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java index d6ecba7e551..e89a4dc8bf8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java @@ -30,8 +30,12 @@ public class LoadBalancerServiceMock implements LoadBalancerService { @Override public LoadBalancerInstance create(ApplicationId application, ClusterSpec.Id cluster, Set<Real> reals) { - LoadBalancerId id = new LoadBalancerId(application, cluster); - LoadBalancerInstance instance = new LoadBalancerInstance( + var id = new LoadBalancerId(application, cluster); + var oldInstance = instances.get(id); + if (oldInstance != null && !oldInstance.reals().isEmpty() && reals.isEmpty()) { + throw new IllegalArgumentException("Refusing to remove all reals from load balancer " + id); + } + var instance = new LoadBalancerInstance( HostName.from("lb-" + application.toShortString() + "-" + cluster.value()), Optional.of(new DnsZone("zone-id-1")), Collections.singleton(4443), diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java index 31ec964dceb..44ba24174f2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java @@ -38,8 +38,9 @@ class Preparer { /** Prepare all required resources for the given application and cluster */ public List<Node> prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes, int wantedGroups) { + var nodes = prepareNodes(application, cluster, requestedNodes, wantedGroups); prepareLoadBalancer(application, cluster, requestedNodes); - return prepareNodes(application, cluster, requestedNodes, wantedGroups); + return nodes; } /** |