diff options
Diffstat (limited to 'clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java')
-rw-r--r-- | clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java index 32cbcf33d8e..aad94f78aef 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java @@ -4,10 +4,7 @@ package com.yahoo.vespa.clustercontroller.core; import com.yahoo.vdslib.state.ClusterState; import com.yahoo.vdslib.state.Node; -import java.util.Collections; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public class AnnotatedClusterState implements Cloneable { @@ -15,6 +12,31 @@ public class AnnotatedClusterState implements Cloneable { private final Map<Node, NodeStateReason> nodeStateReasons; private final Optional<ClusterStateReason> clusterStateReason; + public static class Builder { + private ClusterState clusterState = ClusterState.emptyState(); + private Optional<ClusterStateReason> clusterReason = Optional.empty(); + private Map<Node, NodeStateReason> nodeStateReasons = new HashMap<>(); + + public Builder clusterState(String stateStr) { + clusterState = ClusterState.stateFromString(stateStr); + return this; + } + + public Builder clusterReason(ClusterStateReason reason) { + clusterReason = Optional.of(reason); + return this; + } + + public Builder storageNodeReason(int nodeIndex, NodeStateReason reason) { + nodeStateReasons.put(Node.ofStorage(nodeIndex), reason); + return this; + } + + AnnotatedClusterState build() { + return new AnnotatedClusterState(clusterState, clusterReason, nodeStateReasons); + } + } + public AnnotatedClusterState(ClusterState clusterState, Optional<ClusterStateReason> clusterStateReason, Map<Node, NodeStateReason> nodeStateReasons) |