diff options
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.java | 44 |
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()); } } |