aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java
new file mode 100644
index 00000000000..c7a4f50ab7c
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/CloudAccountFilter.java
@@ -0,0 +1,29 @@
+package com.yahoo.vespa.hosted.provision.node.filter;
+
+import com.yahoo.config.provision.CloudAccount;
+import com.yahoo.vespa.hosted.provision.Node;
+
+import java.util.Collection;
+import java.util.Objects;
+import java.util.function.Predicate;
+
+/**
+ * Filters nodes based on their cloud account.
+ *
+ * @author gjoranv
+ */
+public class CloudAccountFilter {
+
+ private CloudAccountFilter() { }
+
+ /** Creates a node filter which removes the nodes from the given cloud accounts */
+ public static Predicate<Node> from(Collection<CloudAccount> unwantedAccounts, boolean enabled) {
+ Objects.requireNonNull(unwantedAccounts, "unwantedAccounts cannot be null");
+ return node -> {
+ if (unwantedAccounts.isEmpty()) return true;
+ if (! enabled) return true;
+ return ! unwantedAccounts.contains(node.cloudAccount());
+ };
+ }
+
+}