|
|
@@ -73,12 +73,29 @@ func (h *httpKVAPI) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
|
h.confChangeC <- cc
|
|
|
|
|
|
+ // As above, optimistic that raft will apply the conf change
|
|
|
+ w.WriteHeader(http.StatusNoContent)
|
|
|
+ case r.Method == "DELETE":
|
|
|
+ nodeId, err := strconv.ParseUint(key[1:], 0, 64)
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("Failed to convert ID for conf change (%v)\n", err)
|
|
|
+ http.Error(w, "Failed on DELETE", http.StatusBadRequest)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ cc := raftpb.ConfChange{
|
|
|
+ Type: raftpb.ConfChangeRemoveNode,
|
|
|
+ NodeID: nodeId,
|
|
|
+ }
|
|
|
+ h.confChangeC <- cc
|
|
|
+
|
|
|
// As above, optimistic that raft will apply the conf change
|
|
|
w.WriteHeader(http.StatusNoContent)
|
|
|
default:
|
|
|
w.Header().Set("Allow", "PUT")
|
|
|
w.Header().Add("Allow", "GET")
|
|
|
w.Header().Add("Allow", "POST")
|
|
|
+ w.Header().Add("Allow", "DELETE")
|
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
|
}
|
|
|
}
|