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