| 123456789101112131415161718192021222324252627282930313233343536 |
- package etcd
- import (
- "encoding/json"
- "net/http"
- "github.com/coreos/etcd/store"
- )
- func (s *Server) serveAdminConfig(w http.ResponseWriter, r *http.Request) error {
- switch r.Method {
- case "GET":
- case "PUT":
- if !s.node.IsLeader() {
- return s.redirect(w, r, s.node.Leader())
- }
- c := s.ClusterConfig()
- if err := json.NewDecoder(r.Body).Decode(c); err != nil {
- return err
- }
- c.Sanitize()
- b, err := json.Marshal(c)
- if err != nil {
- return err
- }
- if _, err := s.Set(v2configKVPrefix, false, string(b), store.Permanent); err != nil {
- return err
- }
- default:
- return allow(w, "GET", "PUT")
- }
- w.Header().Set("Content-Type", "application/json")
- json.NewEncoder(w).Encode(s.ClusterConfig())
- return nil
- }
|