summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-21 11:34:07 +0200
committerMartin Polden <mpolden@mpolden.no>2019-06-21 11:34:07 +0200
commit02ec47b45439f2807fade78930d2ce9d3be1aada (patch)
treea1839ae4f8361882f9eac91ff08caaf13191301e /node-repository/src/main/java
parent2318610b9543eac9e3033300af06390b6c4abde2 (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')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java3
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;
}
/**