summaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java
diff options
context:
space:
mode:
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.java30
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)