summaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java44
1 files changed, 37 insertions, 7 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
index 796ce5da449..65c8e8390c8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.google.common.collect.ImmutableSet;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
import java.util.Objects;
@@ -22,15 +23,20 @@ public class NodeFilter {
private final Set<HostName> hostnames;
private final Set<HostName> parentHostnames;
private final Set<ApplicationId> applications;
+ private final Set<ClusterSpec.Id> clusterIds;
+ private final Set<Node.ClusterType> clusterTypes;
private NodeFilter(boolean includeDeprovisioned, Set<Node.State> states, Set<HostName> hostnames,
- Set<HostName> parentHostnames, Set<ApplicationId> applications) {
+ Set<HostName> parentHostnames, Set<ApplicationId> applications,
+ Set<ClusterSpec.Id> clusterIds, Set<Node.ClusterType> clusterTypes) {
this.includeDeprovisioned = includeDeprovisioned;
// Uses Guava Set to preserve insertion order
this.states = ImmutableSet.copyOf(Objects.requireNonNull(states));
this.hostnames = ImmutableSet.copyOf(Objects.requireNonNull(hostnames));
this.parentHostnames = ImmutableSet.copyOf(Objects.requireNonNull(parentHostnames));
this.applications = ImmutableSet.copyOf(Objects.requireNonNull(applications));
+ this.clusterIds = ImmutableSet.copyOf(Objects.requireNonNull(clusterIds));
+ this.clusterTypes = ImmutableSet.copyOf(Objects.requireNonNull(clusterTypes));
if (!includeDeprovisioned && states.contains(Node.State.deprovisioned)) {
throw new IllegalArgumentException("Must include deprovisioned nodes when matching deprovisioned state");
}
@@ -56,8 +62,16 @@ public class NodeFilter {
return applications;
}
+ public Set<ClusterSpec.Id> clusterIds() {
+ return clusterIds;
+ }
+
+ public Set<Node.ClusterType> clusterTypes() {
+ return clusterTypes;
+ }
+
public NodeFilter includeDeprovisioned(boolean includeDeprovisioned) {
- return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications);
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
}
public NodeFilter states(Node.State... states) {
@@ -65,7 +79,7 @@ public class NodeFilter {
}
public NodeFilter states(Set<Node.State> states) {
- return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications);
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
}
public NodeFilter hostnames(HostName... hostnames) {
@@ -73,7 +87,7 @@ public class NodeFilter {
}
public NodeFilter hostnames(Set<HostName> hostnames) {
- return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications);
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
}
public NodeFilter parentHostnames(HostName... parentHostnames) {
@@ -81,7 +95,7 @@ public class NodeFilter {
}
public NodeFilter parentHostnames(Set<HostName> parentHostnames) {
- return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications);
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
}
public NodeFilter applications(ApplicationId... applications) {
@@ -89,12 +103,28 @@ public class NodeFilter {
}
public NodeFilter applications(Set<ApplicationId> applications) {
- return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications);
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
+ }
+
+ public NodeFilter clusterIds(ClusterSpec.Id... clusterIds) {
+ return clusterIds(ImmutableSet.copyOf(clusterIds));
+ }
+
+ public NodeFilter clusterIds(Set<ClusterSpec.Id> clusterIds) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
+ }
+
+ public NodeFilter clusterTypes(Node.ClusterType... clusterTypes) {
+ return clusterTypes(ImmutableSet.copyOf(clusterTypes));
+ }
+
+ public NodeFilter clusterTypes(Set<Node.ClusterType> clusterTypes) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, parentHostnames, applications, clusterIds, clusterTypes);
}
/** A filter which matches all nodes, except deprovisioned ones */
public static NodeFilter all() {
- return new NodeFilter(false, Set.of(), Set.of(), Set.of(), Set.of());
+ return new NodeFilter(false, Set.of(), Set.of(), Set.of(), Set.of(), Set.of(), Set.of());
}
}