summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-01-17 11:27:38 +0100
committerMartin Polden <mpolden@mpolden.no>2019-01-17 13:32:38 +0100
commit531f4c20a21d79b9b8c839e5ed403ad97543f2bb (patch)
treec23f390ff59cfb579eb95b0174c8e6b4387e0db1 /node-repository
parent5dfcc4b234750b3df603d4baf97601c68745c4e7 (diff)
Add networks field
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java14
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java2
4 files changed, 23 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
index c07666cee63..1230c9dc41e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSortedSet;
import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.provision.maintenance.LoadBalancerExpirer;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -19,18 +20,20 @@ public class LoadBalancer {
private final LoadBalancerId id;
private final HostName hostname;
private final Set<Integer> ports;
+ private final Set<String> networks;
private final Set<Real> reals;
private final boolean inactive;
// TODO: Remove this when no longer used by internal code
public LoadBalancer(LoadBalancerId id, HostName hostname, List<Integer> ports, List<Real> reals, boolean inactive) {
- this(id, hostname, ImmutableSortedSet.copyOf(ports), ImmutableSortedSet.copyOf(reals), inactive);
+ this(id, hostname, ImmutableSortedSet.copyOf(ports), Collections.emptySet(), ImmutableSortedSet.copyOf(reals), inactive);
}
- public LoadBalancer(LoadBalancerId id, HostName hostname, Set<Integer> ports, Set<Real> reals, boolean inactive) {
+ public LoadBalancer(LoadBalancerId id, HostName hostname, Set<Integer> ports, Set<String> networks, Set<Real> reals, boolean inactive) {
this.id = Objects.requireNonNull(id, "id must be non-null");
this.hostname = Objects.requireNonNull(hostname, "hostname must be non-null");
this.ports = ImmutableSortedSet.copyOf(requirePorts(ports));
+ this.networks = ImmutableSortedSet.copyOf(Objects.requireNonNull(networks, "networks must be non-null"));
this.reals = ImmutableSortedSet.copyOf(Objects.requireNonNull(reals, "targets must be non-null"));
this.inactive = inactive;
}
@@ -50,6 +53,11 @@ public class LoadBalancer {
return ports;
}
+ /** Networks (CIDR blocks) of this load balancer */
+ public Set<String> networks() {
+ return networks;
+ }
+
/** Real servers behind this load balancer */
public Set<Real> reals() {
return reals;
@@ -65,7 +73,7 @@ public class LoadBalancer {
/** Return a copy of this that is set inactive */
public LoadBalancer deactivate() {
- return new LoadBalancer(id, hostname, ports, reals, true);
+ return new LoadBalancer(id, hostname, ports, networks, reals, true);
}
private static Set<Integer> requirePorts(Set<Integer> ports) {
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 c3ec3ea9402..c20f6f50237 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
@@ -32,6 +32,7 @@ public class LoadBalancerServiceMock implements LoadBalancerService {
new LoadBalancerId(application, cluster),
HostName.from("lb-" + application.toShortString() + "-" + cluster.value()),
Collections.singleton(4443),
+ Collections.singleton("10.2.3.4/24"),
reals,
false);
loadBalancers.put(loadBalancer.id(), loadBalancer);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
index 53f825f960b..334e851a4e5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
@@ -26,6 +26,7 @@ public class LoadBalancerSerializer {
private static final String hostnameField = "hostname";
private static final String inactiveField = "inactive";
private static final String portsField = "ports";
+ private static final String networksField = "networks";
private static final String realsField = "reals";
private static final String ipAddressField = "ipAddress";
private static final String portField = "port";
@@ -38,6 +39,8 @@ public class LoadBalancerSerializer {
root.setString(hostnameField, loadBalancer.hostname().toString());
Cursor portArray = root.setArray(portsField);
loadBalancer.ports().forEach(portArray::addLong);
+ Cursor networkArray = root.setArray(networksField);
+ loadBalancer.networks().forEach(networkArray::addString);
Cursor realArray = root.setArray(realsField);
loadBalancer.reals().forEach(real -> {
Cursor realObject = realArray.addObject();
@@ -68,9 +71,15 @@ public class LoadBalancerSerializer {
Set<Integer> ports = new LinkedHashSet<>();
object.field(portsField).traverse((ArrayTraverser) (i, port) -> ports.add((int) port.asLong()));
+ Set<String> networks = new LinkedHashSet<>();
+ if (object.field(networksField).valid()) { // TODO: Remove check after 2019-03-01
+ object.field(networksField).traverse((ArrayTraverser) (i, network) -> networks.add(network.asString()));
+ }
+
return new LoadBalancer(LoadBalancerId.fromSerializedForm(object.field(idField).asString()),
HostName.from(object.field(hostnameField).asString()),
ports,
+ networks,
reals,
object.field(inactiveField).asBool());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
index ce8475a3a07..e0e62fbe628 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
@@ -25,6 +25,7 @@ public class LoadBalancerSerializerTest {
ClusterSpec.Id.from("qrs")),
HostName.from("lb-host"),
ImmutableSet.of(4080, 4443),
+ ImmutableSet.of("10.2.3.4/24"),
ImmutableSet.of(new Real(HostName.from("real-1"),
"127.0.0.1",
4080),
@@ -37,6 +38,7 @@ public class LoadBalancerSerializerTest {
assertEquals(loadBalancer.id(), serialized.id());
assertEquals(loadBalancer.hostname(), serialized.hostname());
assertEquals(loadBalancer.ports(), serialized.ports());
+ assertEquals(loadBalancer.networks(), serialized.networks());
assertEquals(loadBalancer.inactive(), serialized.inactive());
assertEquals(loadBalancer.reals(), serialized.reals());
}