Merge pull request #3185 from xiang90/add_debug_endpoint
etcdhttp: add config/local/debug endpointrelease-2.2
commit
80b794dccc
|
@ -27,6 +27,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/pkg/capnslog"
|
||||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/jonboulle/clockwork"
|
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/jonboulle/clockwork"
|
||||||
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/prometheus/client_golang/prometheus"
|
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
"github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
|
||||||
|
@ -52,6 +53,7 @@ const (
|
||||||
metricsPath = "/metrics"
|
metricsPath = "/metrics"
|
||||||
healthPath = "/health"
|
healthPath = "/health"
|
||||||
versionPath = "/version"
|
versionPath = "/version"
|
||||||
|
configPath = "/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewClientHandler generates a muxed http.Handler with the given parameters to serve etcd client requests.
|
// NewClientHandler generates a muxed http.Handler with the given parameters to serve etcd client requests.
|
||||||
|
@ -98,6 +100,7 @@ func NewClientHandler(server *etcdserver.EtcdServer) http.Handler {
|
||||||
mux.HandleFunc(statsPrefix+"/self", sh.serveSelf)
|
mux.HandleFunc(statsPrefix+"/self", sh.serveSelf)
|
||||||
mux.HandleFunc(statsPrefix+"/leader", sh.serveLeader)
|
mux.HandleFunc(statsPrefix+"/leader", sh.serveLeader)
|
||||||
mux.HandleFunc(varsPath, serveVars)
|
mux.HandleFunc(varsPath, serveVars)
|
||||||
|
mux.HandleFunc(configPath+"/local/log", logHandleFunc)
|
||||||
mux.Handle(metricsPath, prometheus.Handler())
|
mux.Handle(metricsPath, prometheus.Handler())
|
||||||
mux.Handle(membersPrefix, mh)
|
mux.Handle(membersPrefix, mh)
|
||||||
mux.Handle(membersPrefix+"/", mh)
|
mux.Handle(membersPrefix+"/", mh)
|
||||||
|
@ -383,6 +386,30 @@ func serveVersion(w http.ResponseWriter, r *http.Request, clusterV string) {
|
||||||
w.Write(b)
|
w.Write(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func logHandleFunc(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !allowMethod(w, r.Method, "PUT") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
in := struct{ Level string }{}
|
||||||
|
|
||||||
|
d := json.NewDecoder(r.Body)
|
||||||
|
if err := d.Decode(&in); err != nil {
|
||||||
|
writeError(w, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid json body"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logl, err := capnslog.ParseLevel(strings.ToUpper(in.Level))
|
||||||
|
if err != nil {
|
||||||
|
writeError(w, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid log level "+in.Level))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
plog.Noticef("globalLogLevel set to %q", logl.String())
|
||||||
|
capnslog.SetGlobalLogLevel(logl)
|
||||||
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
}
|
||||||
|
|
||||||
// parseKeyRequest converts a received http.Request on keysPrefix to
|
// parseKeyRequest converts a received http.Request on keysPrefix to
|
||||||
// a server Request, performing validation of supplied fields as appropriate.
|
// a server Request, performing validation of supplied fields as appropriate.
|
||||||
// If any validation fails, an empty Request and non-nil error is returned.
|
// If any validation fails, an empty Request and non-nil error is returned.
|
||||||
|
|
Loading…
Reference in New Issue