Implement cluster admin RPCs to change member voting states
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / client / messages / OnDemandRaftState.java
index 57f8beb0054118e8a26549c55dac770e8ee10593..0bd85b1e6d19082eb1f86f0c9f272c3bddafec8a 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.cluster.raft.client.messages;
 
+import com.google.common.collect.ImmutableMap;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -34,9 +35,11 @@ public class OnDemandRaftState {
     private String votedFor;
     private boolean isSnapshotCaptureInitiated;
     private String customRaftPolicyClassName;
+    private boolean isVoting;
 
     private List<FollowerInfo> followerInfoList = Collections.emptyList();
     private Map<String, String> peerAddresses = Collections.emptyMap();
+    private Map<String, Boolean> peerVotingStates = Collections.emptyMap();
 
     private OnDemandRaftState() {
     }
@@ -109,6 +112,10 @@ public class OnDemandRaftState {
         return isSnapshotCaptureInitiated;
     }
 
+    public boolean isVoting() {
+        return isVoting;
+    }
+
     public List<FollowerInfo> getFollowerInfoList() {
         return followerInfoList;
     }
@@ -117,6 +124,10 @@ public class OnDemandRaftState {
         return peerAddresses;
     }
 
+    public Map<String, Boolean> getPeerVotingStates() {
+        return peerVotingStates;
+    }
+
     public String getCustomRaftPolicyClassName() {
         return customRaftPolicyClassName;
     }
@@ -199,6 +210,11 @@ public class OnDemandRaftState {
             return this;
         }
 
+        public Builder isVoting(boolean isVoting) {
+            stats.isVoting = isVoting;
+            return this;
+        }
+
         public Builder followerInfoList(List<FollowerInfo> followerInfoList) {
             stats.followerInfoList = followerInfoList;
             return this;
@@ -209,6 +225,11 @@ public class OnDemandRaftState {
             return this;
         }
 
+        public Builder peerVotingStates(Map<String, Boolean> peerVotingStates) {
+            stats.peerVotingStates = ImmutableMap.copyOf(peerVotingStates);
+            return this;
+        }
+
         public Builder isSnapshotCaptureInitiated(boolean value) {
             stats.isSnapshotCaptureInitiated = value;
             return this;