You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by as...@apache.org on 2021/02/03 11:06:57 UTC

[ignite-3] 01/02: IGNITE-13885 Added CLI RPC.

This is an automated email from the ASF dual-hosted git repository.

ascherbakov pushed a commit to branch ignite-13885
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit ea1867f912318459638d777a2a4975e10f0adc1c
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Fri Jan 22 15:53:48 2021 +0300

    IGNITE-13885 Added CLI RPC.
---
 .../com/alipay/sofa/jraft/rpc/CliRequests.java     |  4 --
 .../rpc/impl/cli/GetPeersRequestProcessor.java     |  2 +-
 .../jraft/rpc/message/AddLearnersRequestImpl.java  | 53 +++++++++++++++++
 .../jraft/rpc/message/AddPeerResponseImpl.java     | 55 ++++++++++++++++++
 .../jraft/rpc/message/ChangePeerRequestImpl.java   | 53 +++++++++++++++++
 .../jraft/rpc/message/ChangePeersResponseImpl.java | 55 ++++++++++++++++++
 .../rpc/message/DefaultMessageBuilderFactory.java  | 28 ++++-----
 .../jraft/rpc/message/GetPeersRequestImpl.java     | 43 ++++++++++++++
 .../jraft/rpc/message/GetPeersResponseImpl.java    | 55 ++++++++++++++++++
 .../jraft/rpc/message/LearnersOpResponseImpl.java  | 55 ++++++++++++++++++
 .../rpc/message/RemoveLearnersRequestImpl.java     | 53 +++++++++++++++++
 .../jraft/rpc/message/RemovePeerRequestImpl.java   | 43 ++++++++++++++
 .../jraft/rpc/message/RemovePeerResponseImpl.java  | 55 ++++++++++++++++++
 .../rpc/message/ResetLearnersRequestImpl.java      | 53 +++++++++++++++++
 .../jraft/rpc/message/ResetPeerRequestImpl.java    | 66 ++++++++++++++++++++++
 .../jraft/rpc/message/SnapshotRequestImpl.java     | 32 +++++++++++
 .../rpc/message/TransferLeaderRequestImpl.java     | 47 +++++++++++++++
 17 files changed, 733 insertions(+), 19 deletions(-)

diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/CliRequests.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/CliRequests.java
index c95579f..ea07e4f 100644
--- a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/CliRequests.java
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/CliRequests.java
@@ -63,8 +63,6 @@ public final class CliRequests {
 
         java.lang.String getNewPeers(int index);
 
-        RpcRequests.ErrorResponse getErrorResponse();
-
         public interface Builder {
             Builder addOldPeers(String oldPeersId);
 
@@ -308,8 +306,6 @@ public final class CliRequests {
 
         boolean getOnlyAlive();
 
-        boolean hasOnlyAlive();
-
         public interface Builder {
             Builder setGroupId(String groupId);
 
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/impl/cli/GetPeersRequestProcessor.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/impl/cli/GetPeersRequestProcessor.java
index bccf7f0..7a88e70 100644
--- a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/impl/cli/GetPeersRequestProcessor.java
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/impl/cli/GetPeersRequestProcessor.java
@@ -51,7 +51,7 @@ public class GetPeersRequestProcessor extends BaseCliRequestProcessor<GetPeersRe
                                       final RpcRequestClosure done) {
         final List<PeerId> peers;
         final List<PeerId> learners;
-        if (request.hasOnlyAlive() && request.getOnlyAlive()) {
+        if (request.getOnlyAlive()) {
             peers = ctx.node.listAlivePeers();
             learners = ctx.node.listAliveLearners();
         } else {
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddLearnersRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddLearnersRequestImpl.java
new file mode 100644
index 0000000..acb1413
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AddLearnersRequestImpl implements CliRequests.AddLearnersRequest, CliRequests.AddLearnersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private List<String> learnersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public List<String> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public int getLearnersCount() {
+        return learnersList.size();
+    }
+
+    @Override public String getLearners(int index) {
+        return learnersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(String learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.AddLearnersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddPeerResponseImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddPeerResponseImpl.java
new file mode 100644
index 0000000..578e7ab
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/AddPeerResponseImpl.java
@@ -0,0 +1,55 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import com.alipay.sofa.jraft.rpc.RpcRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AddPeerResponseImpl implements CliRequests.AddPeerResponse, CliRequests.AddPeerResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public RpcRequests.ErrorResponse getErrorResponse() {
+        return null;
+    }
+
+    @Override public Builder addOldPeers(String oldPeersId) {
+        oldPeersList.add(oldPeersId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeersId) {
+        newPeersList.add(newPeersId);
+
+        return this;
+    }
+
+    @Override public CliRequests.AddPeerResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeerRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeerRequestImpl.java
new file mode 100644
index 0000000..3381a36
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeerRequestImpl.java
@@ -0,0 +1,53 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChangePeerRequestImpl implements CliRequests.ChangePeersRequest, CliRequests.ChangePeersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ChangePeersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeersResponseImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeersResponseImpl.java
new file mode 100644
index 0000000..6aaf0e7
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ChangePeersResponseImpl.java
@@ -0,0 +1,55 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import com.alipay.sofa.jraft.rpc.RpcRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChangePeersResponseImpl implements CliRequests.ChangePeersResponse, CliRequests.ChangePeersResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public RpcRequests.ErrorResponse getErrorResponse() {
+        return null;
+    }
+
+    @Override public Builder addOldPeers(String oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ChangePeersResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/DefaultMessageBuilderFactory.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/DefaultMessageBuilderFactory.java
index d92ff6f..466a1ce 100644
--- a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/DefaultMessageBuilderFactory.java
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/DefaultMessageBuilderFactory.java
@@ -93,35 +93,35 @@ public class DefaultMessageBuilderFactory implements MessageBuilderFactory {
     }
 
     @Override public CliRequests.AddPeerResponse.Builder createAddPeerResponse() {
-        return null;
+        return new AddPeerResponseImpl();
     }
 
     @Override public CliRequests.RemovePeerRequest.Builder createRemovePeerRequest() {
-        return null;
+        return new RemovePeerRequestImpl();
     }
 
     @Override public CliRequests.RemovePeerResponse.Builder createRemovePeerResponse() {
-        return null;
+        return new RemovePeerResponseImpl();
     }
 
     @Override public CliRequests.ChangePeersRequest.Builder createChangePeerRequest() {
-        return null;
+        return new ChangePeerRequestImpl();
     }
 
     @Override public CliRequests.ChangePeersResponse.Builder createChangePeerResponse() {
-        return null;
+        return new ChangePeersResponseImpl();
     }
 
     @Override public CliRequests.SnapshotRequest.Builder createSnapshotRequest() {
-        return null;
+        return new SnapshotRequestImpl();
     }
 
     @Override public CliRequests.ResetPeerRequest.Builder createResetPeerRequest() {
-        return null;
+        return new ResetPeerRequestImpl();
     }
 
     @Override public CliRequests.TransferLeaderRequest.Builder createTransferLeaderRequest() {
-        return null;
+        return new TransferLeaderRequestImpl();
     }
 
     @Override public CliRequests.GetLeaderRequest.Builder createGetLeaderRequest() {
@@ -133,26 +133,26 @@ public class DefaultMessageBuilderFactory implements MessageBuilderFactory {
     }
 
     @Override public CliRequests.GetPeersRequest.Builder createGetPeersRequest() {
-        return null;
+        return new GetPeersRequestImpl();
     }
 
     @Override public CliRequests.GetPeersResponse.Builder createGetPeersResponse() {
-        return null;
+        return new GetPeersResponseImpl();
     }
 
     @Override public CliRequests.AddLearnersRequest.Builder createAddLearnersRequest() {
-        return null;
+        return new AddLearnersRequestImpl();
     }
 
     @Override public CliRequests.RemoveLearnersRequest.Builder createRemoveLearnersRequest() {
-        return null;
+        return new RemoveLearnersRequestImpl();
     }
 
     @Override public CliRequests.ResetLearnersRequest.Builder createResetLearnersRequest() {
-        return null;
+        return new ResetLearnersRequestImpl();
     }
 
     @Override public CliRequests.LearnersOpResponse.Builder createLearnersOpResponse() {
-        return null;
+        return new LearnersOpResponseImpl();
     }
 }
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersRequestImpl.java
new file mode 100644
index 0000000..f6dc17e
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersRequestImpl.java
@@ -0,0 +1,43 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+
+public class GetPeersRequestImpl implements CliRequests.GetPeersRequest, CliRequests.GetPeersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private boolean onlyAlive;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public boolean getOnlyAlive() {
+        return onlyAlive;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setOnlyAlive(boolean onlyGetAlive) {
+        this.onlyAlive = onlyGetAlive;
+
+        return this;
+    }
+
+    @Override public CliRequests.GetPeersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersResponseImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersResponseImpl.java
new file mode 100644
index 0000000..00b9b73
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/GetPeersResponseImpl.java
@@ -0,0 +1,55 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import com.alipay.sofa.jraft.rpc.RpcRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class GetPeersResponseImpl implements CliRequests.GetPeersResponse, CliRequests.GetPeersResponse.Builder {
+    private List<String> peersList = new ArrayList<>();
+    private List<String> learnersList = new ArrayList<>();
+
+    @Override public List<String> getPeersList() {
+        return peersList;
+    }
+
+    @Override public int getPeersCount() {
+        return peersList.size();
+    }
+
+    @Override public String getPeers(int index) {
+        return peersList.get(index);
+    }
+
+    @Override public List<String> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public int getLearnersCount() {
+        return learnersList.size();
+    }
+
+    @Override public String getLearners(int index) {
+        return learnersList.get(index);
+    }
+
+    @Override public RpcRequests.ErrorResponse getErrorResponse() {
+        return null;
+    }
+
+    @Override public Builder addPeers(String peerId) {
+        peersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public Builder addLearners(String learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.GetPeersResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/LearnersOpResponseImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/LearnersOpResponseImpl.java
new file mode 100644
index 0000000..f7a14ca
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/LearnersOpResponseImpl.java
@@ -0,0 +1,55 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import com.alipay.sofa.jraft.rpc.RpcRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class LearnersOpResponseImpl implements CliRequests.LearnersOpResponse, CliRequests.LearnersOpResponse.Builder {
+    private List<String> oldLearnersList = new ArrayList<>();
+    private List<String> newLearnersList = new ArrayList<>();
+
+    @Override public List<String> getOldLearnersList() {
+        return oldLearnersList;
+    }
+
+    @Override public int getOldLearnersCount() {
+        return oldLearnersList.size();
+    }
+
+    @Override public String getOldLearners(int index) {
+        return oldLearnersList.get(index);
+    }
+
+    @Override public List<String> getNewLearnersList() {
+        return newLearnersList;
+    }
+
+    @Override public int getNewLearnersCount() {
+        return newLearnersList.size();
+    }
+
+    @Override public String getNewLearners(int index) {
+        return newLearnersList.get(index);
+    }
+
+    @Override public RpcRequests.ErrorResponse getErrorResponse() {
+        return null;
+    }
+
+    @Override public Builder addOldLearners(String oldLearnersId) {
+        oldLearnersList.add(oldLearnersId);
+
+        return this;
+    }
+
+    @Override public Builder addNewLearners(String newLearnersId) {
+        newLearnersList.add(newLearnersId);
+
+        return this;
+    }
+
+    @Override public CliRequests.LearnersOpResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemoveLearnersRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemoveLearnersRequestImpl.java
new file mode 100644
index 0000000..5b2224e
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemoveLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class RemoveLearnersRequestImpl implements CliRequests.RemoveLearnersRequest, CliRequests.RemoveLearnersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private List<String> learnersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public List<String> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public int getLearnersCount() {
+        return learnersList.size();
+    }
+
+    @Override public String getLearners(int index) {
+        return learnersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(String learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.RemoveLearnersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerRequestImpl.java
new file mode 100644
index 0000000..ae1b340
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerRequestImpl.java
@@ -0,0 +1,43 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+
+public class RemovePeerRequestImpl implements CliRequests.RemovePeerRequest, CliRequests.RemovePeerRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private String peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public CliRequests.RemovePeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerResponseImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerResponseImpl.java
new file mode 100644
index 0000000..76a5e11
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/RemovePeerResponseImpl.java
@@ -0,0 +1,55 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import com.alipay.sofa.jraft.rpc.RpcRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class RemovePeerResponseImpl implements CliRequests.RemovePeerResponse, CliRequests.RemovePeerResponse.Builder {
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public RpcRequests.ErrorResponse getErrorResponse() {
+        return null;
+    }
+
+    @Override public Builder addOldPeers(String oldPeerId) {
+        oldPeersList.add(oldPeerId);
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String newPeerId) {
+        newPeersList.add(newPeerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.RemovePeerResponse build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetLearnersRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetLearnersRequestImpl.java
new file mode 100644
index 0000000..7bb9fbe
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetLearnersRequestImpl.java
@@ -0,0 +1,53 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ResetLearnersRequestImpl implements CliRequests.ResetLearnersRequest, CliRequests.ResetLearnersRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private List<String> learnersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public List<String> getLearnersList() {
+        return learnersList;
+    }
+
+    @Override public int getLearnersCount() {
+        return learnersList.size();
+    }
+
+    @Override public String getLearners(int index) {
+        return learnersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder addLearners(String learnerId) {
+        learnersList.add(learnerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ResetLearnersRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetPeerRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetPeerRequestImpl.java
new file mode 100644
index 0000000..28c6c84
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/ResetPeerRequestImpl.java
@@ -0,0 +1,66 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ResetPeerRequestImpl implements CliRequests.ResetPeerRequest, CliRequests.ResetPeerRequest.Builder {
+    private String groupId;
+    private String peerId;
+    private List<String> oldPeersList = new ArrayList<>();
+    private List<String> newPeersList = new ArrayList<>();
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public List<String> getOldPeersList() {
+        return oldPeersList;
+    }
+
+    @Override public int getOldPeersCount() {
+        return oldPeersList.size();
+    }
+
+    @Override public String getOldPeers(int index) {
+        return oldPeersList.get(index);
+    }
+
+    @Override public List<String> getNewPeersList() {
+        return newPeersList;
+    }
+
+    @Override public int getNewPeersCount() {
+        return newPeersList.size();
+    }
+
+    @Override public String getNewPeers(int index) {
+        return newPeersList.get(index);
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public Builder addNewPeers(String peerId) {
+        newPeersList.add(peerId);
+
+        return this;
+    }
+
+    @Override public CliRequests.ResetPeerRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/SnapshotRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/SnapshotRequestImpl.java
new file mode 100644
index 0000000..6d79ac3
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/SnapshotRequestImpl.java
@@ -0,0 +1,32 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+
+public class SnapshotRequestImpl implements CliRequests.SnapshotRequest, CliRequests.SnapshotRequest.Builder {
+    private String groupId;
+    private String peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public CliRequests.SnapshotRequest build() {
+        return this;
+    }
+}
diff --git a/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/TransferLeaderRequestImpl.java b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/TransferLeaderRequestImpl.java
new file mode 100644
index 0000000..c33442b
--- /dev/null
+++ b/modules/raft/src/main/java/com/alipay/sofa/jraft/rpc/message/TransferLeaderRequestImpl.java
@@ -0,0 +1,47 @@
+package com.alipay.sofa.jraft.rpc.message;
+
+import com.alipay.sofa.jraft.rpc.CliRequests;
+
+public class TransferLeaderRequestImpl implements CliRequests.TransferLeaderRequest, CliRequests.TransferLeaderRequest.Builder {
+    private String groupId;
+    private String leaderId;
+    private String peerId;
+
+    @Override public String getGroupId() {
+        return groupId;
+    }
+
+    @Override public String getLeaderId() {
+        return leaderId;
+    }
+
+    @Override public String getPeerId() {
+        return peerId;
+    }
+
+    @Override public boolean hasPeerId() {
+        return peerId != null;
+    }
+
+    @Override public Builder setGroupId(String groupId) {
+        this.groupId = groupId;
+
+        return this;
+    }
+
+    @Override public Builder setLeaderId(String leaderId) {
+        this.leaderId = leaderId;
+
+        return this;
+    }
+
+    @Override public Builder setPeerId(String peerId) {
+        this.peerId = peerId;
+
+        return this;
+    }
+
+    @Override public CliRequests.TransferLeaderRequest build() {
+        return this;
+    }
+}