Browse Source

Merge pull request #806 from philips/add-machine-api-docs

fix(server): add user facing remove API
Brandon Philips 11 years ago
parent
commit
b637b3a607
2 changed files with 62 additions and 5 deletions
  1. 61 5
      Documentation/api.md
  2. 1 0
      server/peer_server.go

+ 61 - 5
Documentation/api.md

@@ -1205,21 +1205,22 @@ The configuration endpoint manages shared cluster wide properties.
 ### Set Cluster Config
 ### Set Cluster Config
 
 
 ```sh
 ```sh
-curl -L http://127.0.0.1:7001/v2/admin/config -XPUT -d '{"activeSize":3, "promoteDelay":1800}'
+curl -L http://127.0.0.1:7001/v2/admin/config -XPUT -d '{"activeSize":3, "removeDelay":1800,"syncInterval":5}'
 ```
 ```
 
 
 ```json
 ```json
 {
 {
     "activeSize": 3,
     "activeSize": 3,
-    "promoteDelay": 1800
+    "removeDelay": 1800,
+    "syncInterval":5
 }
 }
 ```
 ```
 
 
 `activeSize` is the maximum number of peers that can join the cluster and participate in the consensus protocol.
 `activeSize` is the maximum number of peers that can join the cluster and participate in the consensus protocol.
 
 
-The size of cluster is controlled to be around a certain number. If it is not, it will promote standby-mode instances or demote peer-mode instances to make it happen.
+The size of cluster is controlled to be around a certain number. If it is not, standby-mode instances will join or peer-mode instances will be removed to make it happen.
 
 
-`promoteDelay` indicates the minimum length of delay that has been observed before promotion or demotion.
+`removeDelay` indicates the minimum time that a machine has been observed to be unresponsive before it is removed from the cluster.
 
 
 ### Get Cluster Config
 ### Get Cluster Config
 
 
@@ -1230,6 +1231,61 @@ curl -L http://127.0.0.1:7001/v2/admin/config
 ```json
 ```json
 {
 {
     "activeSize": 3,
     "activeSize": 3,
-    "promoteDelay": 1800
+    "removeDelay": 1800,
+    "syncInterval":5
 }
 }
 ```
 ```
+
+## Remove Machines
+
+At times you may want to manually remove a machine. Using the machines endpoint
+you can find and remove machines.
+
+First, list all the machines in the cluster.
+
+```sh
+curl -L http://127.0.0.1:7001/v2/admin/machines
+```
+```json
+[
+    {
+        "clientURL": "http://127.0.0.1:4001",
+        "name": "peer1",
+        "peerURL": "http://127.0.0.1:7001",
+        "state": "leader"
+    },
+    {
+        "clientURL": "http://127.0.0.1:4002",
+        "name": "peer2",
+        "peerURL": "http://127.0.0.1:7002",
+        "state": "follower"
+    },
+    {
+        "clientURL": "http://127.0.0.1:4003",
+        "name": "peer3",
+        "peerURL": "http://127.0.0.1:7003",
+        "state": "follower"
+    }
+]
+```
+
+Then take a closer look at the machine you want to remove.
+
+```sh
+curl -L http://127.0.0.1:7001/v2/admin/machines/peer2
+```
+
+```json
+{
+    "clientURL": "http://127.0.0.1:4002",
+    "name": "peer2",
+    "peerURL": "http://127.0.0.1:7002",
+    "state": "follower"
+}
+```
+
+And finally remove it.
+
+```sh
+curl -L -XDELETE http://127.0.0.1:7001/v2/admin/machines/peer2
+```

+ 1 - 0
server/peer_server.go

@@ -355,6 +355,7 @@ func (s *PeerServer) HTTPHandler() http.Handler {
 	router.HandleFunc("/v2/admin/config", s.setClusterConfigHttpHandler).Methods("PUT")
 	router.HandleFunc("/v2/admin/config", s.setClusterConfigHttpHandler).Methods("PUT")
 	router.HandleFunc("/v2/admin/machines", s.getMachinesHttpHandler).Methods("GET")
 	router.HandleFunc("/v2/admin/machines", s.getMachinesHttpHandler).Methods("GET")
 	router.HandleFunc("/v2/admin/machines/{name}", s.getMachineHttpHandler).Methods("GET")
 	router.HandleFunc("/v2/admin/machines/{name}", s.getMachineHttpHandler).Methods("GET")
+	router.HandleFunc("/v2/admin/machines/{name}", s.RemoveHttpHandler).Methods("DELETE")
 
 
 	return router
 	return router
 }
 }